常用pandas数据清洗操作已备好

文章中所总结的pandas数据清洗操作,是以微软数据清洗利器Power Query为依据,将其中涉及的数据清洗操作用pandas来实现。

转置

df1 = df.T

对行进行计数

print(df.count())
print(df.info()) #不仅返回行数

修改特定列的数据类型

df['col'] = pd.to_datetime(df['col']) #修改为日期时间类型
df['col'] = pd.to_numeric(df['col'] #修改为浮点数类型

重命名列

重命名列可以调用df.rename(),参数如下:

df.rename(columns={'col1':'new_col1 ','col2':'new_col2'},inplace=True) #不限于两列

替换值

 #替换空值
 #将整个DataFrame中的空值替换为0:
df.fillna(0,inplace=True)
 #将DataFrame指定列中的空值替换为0:
df['col'].fillna(0,inplace=True)

 #替换特定值(只针对字符串)
 #将指定列中的Y替换成YY
 #只能对指定列运用,否则报错:AttributeError: 'DataFrame' object has no attribute 'str'
f['col'] = f['col'].str.replace('Y','YY')

数据格式

#全部大写
df['col'] = df['col'].str.upper()
#全部小写
df['col'] = df['col'].str.lower()
#首字母大写
df['col'] = df['col'].str.capitalize()
#修整(去首尾空格)
df['col'] = df['col'].str.strip()

基本统计信息

print(df.describe())

数学四则运算

#加
df['col'] = df['col'].add()
#减
df['col'] = df['col'].sub()
#乘
df['col'] = df['col'].mul()
#除
df['col'] = df['col'].div()

保留行

#保留前n行
df.head()
#保留后n行
df.tail()
#保留指定行
df.[m:n] #左闭右开
df.iloc[m,n] #左闭右开
df.loc[m,n] #左闭右闭

删除行

#删除前n行,后n行,间隔行:
df.drop([index_list],inplace=True)
#删除重复行
df.drop_duplicates(inplace=True)
#删除空行
df.dropna(how='any',inplace=True) #一行中任何一列为空值就删除
df.dropna(how='all',inplace=True) #一行中所有列为空值才删除

删除列

df.drop([col_list],inplace=True,axis=1)

合并查询

#df1和df2有公共列名col
df3 = pd.merge(df1,df2,on='col',how=inner) #仅保留df1和df2共有的行
df3 = pd.merge(df1,df2,on='col',how=outer) #保留df1和df2所有的行
df3 = pd.merge(df1,df2,on='col',how=left) #保留df1所有的行
df3 = pd.merge(df1,df2,on='col',how=right) #保留df2所有行

#df1和df2没有公共列名
df3 = pd.merge(df1,df2,left_on='col1',right_on='col2,how=inner) #仅保留df1和df2共有的行
df3 = pd.merge(df1,df2,left_on='col1',right_on='col2',how=outer) #保留df1和df2所有的行
df3 = pd.merge(df1,df2,left_on='col1',right_on='col2',how=left) #保留df1所有的行
df3 = pd.merge(df1,df2,left_on='col1',right_on='col2',how=right) #保留df2所有行

追加查询

#pd.concat()法
df = pd.concat([df_list],ignore_index=True)
df = pd.concat([df_list],ignore_index=False,keys=[keys_list])
#df.append()法
df = df.append([df_list],ignore_index=True) #append没有参数keys

排序

#按值排序
df.sort_values(by=[col_list],inplace=True,ascending=False)
#按索引拍序
df.sort_index()

筛选

#大于、小于、等于、不等于
df.query('col > 10',inplace=True)
df.query('col == [value_list]',inplace=True)
#介于
df.query('col > m and col < n',inplace=True) #and,&,or,|,regular expression etc

添加列

df['new_col'] = df['col1'] + fd['col2'] #其他四则运算

你可能感兴趣的:(python)