发布时间:2023-03-17 18:50:01源自:https://www.it-th.com作者 :it谈话网阅读(271)
因为对Python的很多数据分析语句不是很熟练,所以日常在数据清洗分析的时候会优先Excel操作,Excel实在做不了再用Python。这也导致我对Python的用法经历了边用边学,学完就忘的尴尬经历。本文将Excel数据清洗处理的需求和Python的实现一一对应起来,从而让自己也能轻车熟路地用Python做数据清洗以及分析。
import pandas as pd import numpy as nppd.read_excel("XXXX.xlsx") 
DataFrame= pd.read_excel("XXXX.xlsx",sheet_name=None)DataFrame[sheet_name] 
#获取sheet_name对应sheet的数据
DataFrame.shape
 #输出这个表格有行数和列数DataFrame.columns #查询表格的列名
DataFrame.head() #查看数据的前五行DataFrame.sample(n, replace=False, radom_state =1) 
#不放回地随机抽样n行
DataFrame.isnull().sum(axis=0) 
DataFrame.isnull().sum(axis=1) 
#统计每行空值数量
DataFrame[~DataFrame[col].isnull()]  
#删除col列为空的行
DataFrame.dropna(axis=0) 
#删除有空值的行,使用参数
axis=0DataFrame.dropna(axis=1) 
#删除有空值的列,使用参数
axis=1DataFrame.dropna(how='all',axis=0) 
#删除所有值都为空值的行
DataFrame.dropna(how='all',axis=1) 
#删除所有值都为空值的列
DataFrame.dropna(subset=[col1,col2]) 
#删除 col1或者col2列有空值的行
DataFrame.duplicated().value_counts() 
#统计所有列重复的行数
DataFrame[[col1,col2]].duplicated().value_counts() 
#统计指定列有重复的行数
DataFrame.drop_duplicates() 
#删除所有列重复的行
DataFrame.drop_duplicates(subset = [col1,col2]) 
#删除指定两列重复的行
DataFrame.sort_values(by=col1,ascending=False) 
#按col1列升序排列
DataFrame.sort_values(by=[col1,col2],ascending=(True,False))
#按col1列升序,col2列降序
Excel中我们经常需要将数值设置成百分百或者保留两位小数等。现在看看Python怎么做:
'{:.2%}'.format(x) 
#转换为两位小数的百分百
round(x,2) 
#转化为小数,保留2位小数
数据处理最基本的需求就是筛选出指定行列。Python基本的筛选方式有三种:
1、DataFrame.loc #根据行的指标和列的列名来选择
2、DataFrame.iloc #根据行列的序列来选,如第2行、第4列
3、DataFrame.ix #上面两种方法的混合,即可用行列名,也可用序列
具体用法可看下面的示例:
某列等于某值的行
DataFrame.loc[DataFrame[col]=='F'] 
# 选出col列等于F的行
DataFrame.loc[DataFrame[col].isin(['E', 'F']) 
# 选出col列等于E或者F的行
某列包含某个字段的行
Excel常用的场景之一就是:对不同行或不同列做加减乘除计算等这个非常简单只需拿出对应的行或列计算即可。
df1['a']+df1['b'] 
#a列和b列相加,同理可换其他运算
df1.loc[0] +df1.loc[1] 
#0行和1行相加,同理可换其他运算
还有一个场景是,我们需要对某列做函数变换,如提取出某部分字符串,计算字符串长度,字符串倒序等等。这种情况,需要用到apply函数,
DataFrame[col].apply(func,axis=0) #把func函数作用到col列这里的func可以用python已有的函数,也可以用lambda自定义。
DataFrame[col].apply(lambda x:x.func) #用lambda自定义函数作用于col列
在Excel里数据透视表是非常有用且常用的一个功能,他可以实现各种分组统计计算。Python里有三种函数,作用和Excel透视表一致。
DataFrame[col].value_counts() #统计col列的数量分布
DataFrame.groupby(col1)[col2].count() 
#对col1列分组,统计col2列的数量
DataFrame.groupby(col1)[col2].mean()  
#对col1列分组,统计col2列的均值
DataFrame.groupby(col1)[col2].sum()   
#对col1列分组,统计col2列的和
pd.pivot_table(DataFrame,values=[col1],index=[col2], columns=[col3],aggfunc=(np.size,np.mean,np.sum))
这里的index相当于透视表里的行,columns相当于透视表里的列,value表示透视表里计算的值,aggfunc表示作用于value的函数。
Python里的merge函数可以实现同样的作用。
DataFrame1.merge(DataFrame12,on=[col1,col2],how=’left/right/inner/outer’)
当两个表的关联列名不一样的时候:
DataFrame1.merge(DataFrame12,left_on=col1,right_on=col2,how=’left/right/inner/outer’)
数据导出和导入很类似,具体用法如下:
df1.to_csv('XXXX.csv') 
#将df1导出为csv文件,文件名为XXXXdf1.to_excel('XXXX.xlsx')  
#将df1导出为xlsx文件,文件名为XXXX
以上就是我要分享的内容,想要熟练掌握用Python做数据分析,上述的语句一定要多用多练。如果需要截图中的代码,可私信我「python代码」,感谢大家阅读~
-END-
欢迎分享转载→ 用Python完成Excel的基本工作
下一篇:数据分析-异常数据识别