1.导入数据文件(excel,csv,数据库文件等)
df=read_table(file,names=[列名1,列名2,,,],sep="",encoding)
#file是文件路径,names默认为文件的第一行为列名,sep为分隔符,默认为空,表示默认导入为一列
#encoding设置文件编码,导入中文时,需设置utf-8
2.导出数据文件
to_csv(filepath,sep="",index=TRUE,header=TRUE)
#index是否导出行序号,默认为导出,header是否导出列名,默认为导出
data.loc[:,["城市","公司全名"]] #输出特定列,行可类比
data.iloc[3,1] #输出第三行,第一位
data.iloc[3:5,1:3] #3-5行,1-2列交集
data.ix[:3,["A","C"]] #0-3行
data.A>8 #输出A列大于8的所有行
print(df[data.A>8])
3.重复值处理(只保留一个)
df.drop_duplicates()#直接调用函数即可(保留一行)
4.缺失值处理
产生原因:信息无法获取,信息被遗漏或错误处理
处理方式:补齐,删除缺失行,不处理
df.dropna()#去除数据结构中值为空的数据
df.dropna(axis=0,how="any") #注释:axis=0代表"行","any"代表任何空值行,如何是"all"则代表所有值都为空时,才删除该行
df.fillna(value=0) #填充空值为0 适合数据庞大不易观察的情况下
print(df.isnull()) #判断空值
print(np.any(df.isnull())==True) #至少包含一个空值,则返回true
5.空格值处理
n=df["name"].str.strip() #清除字符型数据左右的空格
df["name"]=n
6.字段抽取与字段拆分
根据已知列数据的开始和结束,抽出新的列
slice(start,stop) #开始位置,结束位置
如:号码138 1337 5758
df["tel"]=df["tel"].astype(str)
df["tel"].str.slice(0,3) #抽取手机号码的前三位数(运营商)
#字段拆分
split(sep,n,expand=False)
#sep指用于分割的字符串,n指分割为多少列,expand是否展开为数据框(默认为False返回series,True返回dataframe)
news=df["name"].str.split("",1,True) #1代表拆分为两列,从0开始计数
news.columns=["band","names"] #命名
7.记录抽取
#DataFrame[condition]
#比较
df[df.comments>10000]
#范围
between(left,right)
df[df.comments.between(1000,10000)]
#空值匹配
pandas.isnull(column) #判断是否有空值
df[pandas.isnull(df.title)
#字符匹配
str.contains(patten,na=False) #空值的处理方式,空值不匹配(False)
如:df[df.title.str.contains("台电",na=False)]
#逻辑运算(与&,或|,取反not)
如:df[(df.comments>=1000)&(df.comments<=10000)]
等价于df[df.comments.between(1000,10000)]
8.随机抽样(按照一定的行数或比例抽取)
import numpy as np
np.random.randint(start,end,num) #在start和end之间随机抽取num个样本数,返回行所在的索引值
如:r=np.random.randint(0,10,3)
df.loc(r,:) #将所在行输出
9.记录合并
将两个结构相同的数据框合并为一个数据框
concat([df1,df2,,],axis=0,ignore_index=True)
#axis=0代表竖向排列,ignore_index代表忽视索引,重新排序,参数join默认为outer,反之inner代表相同部分合并
df1.append([df2,df3],ignore_index=True) #拼接
字符合并方法:
x=x1+x2+,,,(序列长度一直,并且为字符型数据)
df.astype(str) #转换为字符型数据
tel=df["band"]+df["area"]+["num"] #合并且赋值于新变量
merge函数
left=pd.DataFrame({})
res=pd.merge(left,right,on="key") #多个关键词,on="key1","key2"
#默认的合并方式是how="inner":合并同类项,outer为合并所有的,没有的以空值NAN填充
#或者(left,right,left_index=True,right_index=True,how="outer")
#合并多个dataframe
contat([df1,df2,df3],axis=0) #axis=0代表竖向排列
#append() 对dataframe进行拼接
12.简单计算
res=df.price*df.num
df["total"]=a
13.数据标准化(0-1)
x*=(x-min)/(max-min)
scale=(df.score-df.score.min())/(df.score.max()-df.score.min())