pandas DataFrame的一些操作
最近做数据预处理遇到了一些小问题,记录一下。
1.数据的读取和存储
一般读取数据使用pandas里的read_csv
pd.read_csv(path, sep=',', header=None, nrows=n)
另外通用的读取为:
with open(filename, 'r', encoding='utf-8') as fr: #这里注意如果是中文的文件可能需要改encoding为gbk
fr.readlines()
相对应的写入操作为
df.to_csv(path,header=0, index=0)#不保留行列名的写法
with open(filename, 'w', encoding='utf-8') as fw:
fr.writelines(str+'\n')
通用的读取数据要求格式为string,因此对于列表格式还要把它转成string,字符串和列表相互转化如下:
test_str = " ".join(test_list)
test_list=list(test_str)
2.DataFrame常用的数据处理
查看前几行:df.head()
查看某个元素:df.ix[:, :] #可以根据索引选取
条件选取元素:df.loc[:, df[column]><=k],df.iloc[];二者区别在于前者根据名字选取,后者根据索引值选取
空值处理:
查询每列空值总数:df.isnull().sum()
选取某列非空值:df[df[col].notnull()&df[col]!='']
填充空值:df.fillna({col:value...})
删除空值:df.dropna(axis=0, how=‘any’) #0表示行,1表示列,any表示任何含有nan的行或列,all表示所有值都为nan的行或列
替换空值:df.replace(to_replace, value)#用value代替to_replace
查看行列数量:df.shape()
转成list:df.tolist()
字典转DataFrame:pd.DataFrame.from_dict(dict, orient='index', columns=[col])
DataFrame转字典:dict = df.set_index(col1).T.to_dict(col2)
3.字符串合并
str = str1+ " " +str2 #文本处理会用到
4.DataFrame的groupby操作
df.groupby['A'].apply(lambda)
df.groupby['A'].agg({'B':'count'})