当前位置:首页 > 抖音教程 > 抖音资讯 > 本文内容

用Python完成Excel的基本工作

发布时间:2023-03-17 18:50:01源自:https://www.it-th.com作者 :it谈话网阅读(271)

因为对Python的很多数据分析语句不是很熟练,所以日常在数据清洗分析的时候会优先Excel操作,Excel实在不了再用Python。这也导致我对Python的用法经历了边用边学,学完就忘的尴尬经历。本文将Excel数据清洗处理需求和Python的实现一一对应起来,从而让自己也能轻车熟路地用Python做数据清洗以及分析。

01数据获取

import pandas as pd import numpy as nppd.read_excel("XXXX.xlsx") 

#如果是多个sheet,默认读取第一个sheet

DataFrame= pd.read_excel("XXXX.xlsx",sheet_name=None)DataFrame[sheet_name] 

#获取sheet_name对应sheet的数据


读入数据后,一般会先看下数据有多大,有哪些数据。


DataFrame.shape

 #输出这个表格有行数和列数DataFrame.columns #查询表格的列名

4. 查看数据的样例

DataFrame.head() #查看数据的前五行DataFrame.sample(n, replace=False, radom_state =1) 

#不放回地随机抽样n行

02数据预处理

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位小数

03数据选择

数据处理最基本的需求就是筛选出指定行列。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的行


某列包含某个字段的行

DataFrame.loc[DataFrame[col].str.contains(X)] # 选出col列含有X字符串的行

04数据操作运算

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列

05数据分组/数据透视表

在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的函数。

06多表拼接

pd.concat([DataFrame1.DataFrame2],axis=0) #axis为0是上下连接,1是左右连接

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’)


07数据导出

数据导出和导入很类似,具体用法如下


df1.to_csv('XXXX.csv') 

#将df1导出为csv文件,文件名为XXXXdf1.to_excel('XXXX.xlsx')  

#将df1导出为xlsx文件,文件名为XXXX


以上是我分享的内容,想要熟练掌握用Python做数据分析,上述的语句一定要多用多练。如果需要截图中的代码,可私信我「python代码」,感谢大家阅读

-END-

欢迎分享转载→ 用Python完成Excel的基本工作

用户评论

精品推荐

© 2013-2028 - it谈话网 版权所有 收藏本站 - 网站地图 - 关于本站 - 网站公告 - 合作申请