admin 管理员组

文章数量: 887007

Python,Pandas处理csv文件常用操作总结

python中引入pandas包可以很方便的对csv格式的数据进行处理

import pandas as pd

csv文件的读写

data = pd.read_csv('D:\data\train.scv',names=['ID','index'],dtype={'ID':pd.np.string_},index_col=0)
#names指定列名,dtype指定读取的格式,index_col指定索引的位置
data.columns = ['ID','index']
#读入后指定列名
data.rename(columns={'ID':'name','index':'goal'}, inplace = True)
#读入后更改列名
data.to_csv('D:\data\train.scv',encoding='utf-8')
#写入文件

csv文件的拼接

对记录相同类型数据的csv文件进行简单的内容拼接

df3 = pd.concat([df1,df2],axis=0)
#axis=0表示行拼接,axis=1表示列拼接

concat只是进行简单的内容拼接,比如df1有100行,df2有100行,那么拼接后的df3有200行

csv文件的合并

两个csv文件按照某一列的值进行合并,例如相同ID号的数据进行合并

df3 = pd.merge(df1,df2,on=['ID'],how='left')
#将df1和df2中ID号相同的行进行合并

删除某些列

将csv文件中的某些列删除

df1 = df1.drop(['grid_x','grid_y'],axis=1)
#grid_x,grid_y是要删除的列,axis=1表示列删除

删除重复行

删除指定列值相同的行

df1= df1.drop_duplicates(subset=['ID','index'],keep='first')
#删除ID,index的值相同的行,重复行保留第一个

改变列值的数据类型

df1['hour'] = df1['hour'].astype(str)
##将df1中的hour属性的类型改为str

数据特定长度截断

对某一列的数据的长度进行截取

df1['time'] = round(df1['time'],6)
#将time的数据保留6位,例如从20200424保留6位为202004

数据分组操作

根据某一列数据的值对其分组并进行求和,求平均,求方差等操作

dict_mean = dict(df1.groupby(['ID']).mean()['index'])
#按照ID号进行分组,将具有相同ID号的行分到一组并求index的均值
#并保存到一个字典中dict_std = dict(df1.groupby(['ID']).std()['index'])
#按照ID号进行分组,将具有相同ID号的行分到一组并求index的方差
#并保存到一个字典中

选择特定行

根据条件选择特定行

df1 = data[data['ID'].isin(['3'])]
#将ID值为3的行选出df1 = data[data['ID'].~isin(['3'])]
#选择ID值不为3的行df1=data[data['index']>=7]
#选择index值大于等于7的行

对某列的值进行操作

df1['new_ID']=df1.ID.apply(lambda x:x-10 if x>=10 else x)
#对df1的ID值进行操作,当值大于10时减10,否则保持原值
#对字符串或者其他类型的值也可以类似的进行操作

空缺值填零

df1['Index'] = df1['Index'].fillna(0.0)
#index中的空缺值补零

匹配字典

#dict_id: key是ID,values是name
df1['name']=df1['ID'].map(dict_id)
#每行的name值等于其ID值在字典中对应的name值

本文标签: python Pandas处理csv文件常用操作总结