差不多把《利用Python进行数据分析》这本书看完了,但一直没怎么使用python进行过实践,最近刚好有一个处理大的exl表的工作需要,便开始使用python的交叉表函数crosstab解决工作中实际遇到的问题。
工作需求
表头如下:
总共有10多张表,每张表有1000多行,需要做的是:每个省份各来源渠道的分布以及每个销售经理各来源渠道的分布。
其实这个一个一个统计也是可以完成的,但因为数据量非常多,估计要花上1天的时间,但如果用python,即便是不熟练的情况下,1个小时左右就可以统计出来。
python代码
- 导入pandas
import pandas as pd
- 对于有多个sheet的表格用pd.ExcelFile先读取
xls=pd.ExcelFile('examples/客户列表2021-01-19 16_08_10.xls') #文件路径换成自己的
exchanges = xls.sheet_names #获取sheet表列表
print(exchanges)
- 循环读取每个sheet表,并存入变量中
listings = [] #空变量,用于存各个sheet表的数据
for exchange in exchanges:
listing = pd.read_excel(xls, sheet_name=exchange,skiprows=1)
listing['Exchange'] = exchange # 将表名加入数据中
listings.append(listing)
- 合并listings中的所有数据
listing_data = pd.concat(listings) #合并
listing_data.info() #查看数据
- 每个省份各来源渠道的分布
sf=pd.crosstab(listing_data.所属省份,listing_data.来源,margins=True) #crosstab交叉表函数
sf.to_excel(r'sf.xlsx') #保存至sf.xlsx表
- 每个销售经理各来源渠道的分布
xs=pd.crosstab(listing_data.销售经理,listing_data.来源,margins=True)
xs.to_excel(r'xs.xlsx')