Pandas是python一款用于数据分析处理的优秀工具,掌握简单的使用方法,可以减少我们很多的工作时间,本篇主要介绍pandas对excel的读写,以及简单的合并统计,下一章会为大家介绍Pandas的简单绘图。
需求:
这里默认你已经安装好了pandas环境,也就是import pandas as pd 没有报错
如果你没有pandas环境,网上有很多优秀教程,其实很简单,只需要python环境下的pip install pandas就行了
第一步是最简单的一步,但也是用的最多的一步,大家主要记住几个常用的参数。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('E:/data/myfile/商品销售信息表.xlsx',encoding='windows-1252',
sheetname=None,
header=1,
skip_footer=1
)
参数1:文件路径
参数2: sheetname,默认为0,表示sheet的下标索引,设置为None表示打开所有 Sheet,若要打开指定的sheet,
可传入下标数组, 如sheetname=[0,1,6,8]
参数3:header,标题所在的行数,若不设置,默认第一行为标题(header=0),本例中标题在第二行,所以header=1
参数4:skip_footer,底部跳过多少行,本例中底部有一行多余数据,故skip_footer=1
data返回的是一个dataframe集合,类似Dictionary
可以这样输出:data[‘商品销售信息表0714’] 或 data[‘商品销售信息表0715’]
合并sheet要用到concat函数,根据表头进行合并,代码如下:
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('E:/data/myfile/商品销售信息表.xlsx',encoding='windows-1252',
sheetname=None,
header=1,
skip_footer=1
)
df_all = pd.concat([data['商品销售信息表0714'],data['商品销售信息表0715']],axis=0)
concat 的两个参数:
第一个参数 是要合并的dataframe对象数组,也就是sheet集合
第二个参数 可以省略,代表合并的方向,默认是0,表示纵向合并;
其实从统计学的角度来说,这一步之前应该是数据清洗,处理掉空值和异常值,这里暂时不做说明。
Pandas对数据的统计处理,主要使用 groupby 函数,熟悉sql的朋友应该不会陌生,也就是分组统计。
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('E:/data/myfile/商品销售信息表.xlsx',encoding='windows-1252',
sheetname=None,
header=1,
skip_footer=1
)
df_all = pd.concat([data['商品销售信息表0714'],data['商品销售信息表0715']],axis=0)
df_type = df_all.groupby(['商品名','价格']).sum()
df_result = df_type.reset_index()
groupby 会把所有的数字列全部汇总,如需过滤,可使用 df_result [{‘商品名’,’价格’,‘数量’,‘总价’}] 进行过滤
按照 商品-价格 分类汇总,这里调用 reset_index() 方法,让结果看起来更直接一些。
生成excel:
df_result.to_excel('E:/dat/myfile/分类统计各类型商品销售额.xlsx')
合并两列单元格的思路,是生成一列新的单元格
import pandas as pd
import matplotlib.pyplot as plt
data = pd.read_excel('E:/data/myfile/商品销售信息表.xlsx',encoding='windows-1252',
sheetname=None,
header=1,
skip_footer=1
)
df_all = pd.concat([data['商品销售信息表0714'],data['商品销售信息表0715']],axis=0)
df_all['商品-价格'] = df_all['商品名'] + '-' + df_all['价格'].map(str)
df_result = df_type[{'商品-价格','数量','总价'}]
df_result.to_excel('E:/data/myfile/合并_商品销售信息表.xlsx')
示例相对比较简单,在实际运用中可能遇到的问题会比较复杂,希望大家可以一起交流学习,这是一个知识大爆炸的年代,大到终身学习也未必学得完,只有不断的交流合作,才能保持自己的进步。