每天一点点,记录工作中实操可行
python中 pandas 模块 melt 函数 的应用,
完成excel做不到的效果
原始表格长成这样
python 中读取该表格的前5行,查看表结构
import pandas as pd
table = pd.read_excel(excel存放的路径/test.xlsx'
,sheet_name = 'test',encoding = 'utf-8')
#如果你的excel有多个sheet,记得加上你要用到的sheet名字哦~
table.head() #自动获取前5行
ID shop_id date_s gmv ... orde_rate 门店名称 平台 is_open
0 28197 2000070408 2019-09-01 1859.46 ... 0.171103 上海四川北路店 tb y
1 28197 2000070408 2019-09-02 2163.32 ... 0.156334 上海四川北路店 tb y
2 28197 2000070408 2019-09-03 1912.21 ... 0.188540 上海四川北路店 tb y
3 28197 2000070408 2019-09-04 1774.89 ... 0.151067 上海四川北路店 tb y
4 28197 2000070408 2019-09-05 1328.69 ... 0.155303 上海四川北路店 tb y
最终想要的是这种格式
直接用excel透视表,是做不到的,不信你可以自己试试
这个时候,用python的pandas模块 melt 函数 就很方便了
pandas.melt 的参数如下:
pandas.melt(frame, id_vars=None, value_vars=None, var_name=None, value_name=‘value’, col_level=None)
frame:要处理的数据集。
id_vars:不需要被转换的列名;
value_vars:需要转换的列名,如果剩下的列全部都要转换,就不用写了;
var_name和value_name是自定义设置对应的列名;
col_level :如果列是MultiIndex,则使用此级别
具体代码如下
import pandas as pd
table = pd.read_excel('原始excel存放的路径/test.xlsx'
,sheet_name = 'test',encoding = 'utf-8')
#看清楚路径和sheet_name哟~
table2 = pd.melt(table,
id_vars = ['ID','门店名称','平台','is_open','date_s'],
value_vars = ['gmv','order_cnt','avg_price','user_cnt','entr_rate','orde_rate'],
var_name = '随便取名字'
)
#格式转换,自己理解一下
table2.to_excel('将结果保存到你希望的路径/test-结果.xlsx'
,sheet_name = 'python结果')
#sheet名字可有可无,看自己需要
得到的结果是长这样滴~~~
看不出效果来?透视,就是期望的格式
透视效果,如下:::
是不是就达到效果了呢???
当然了,这一步,也可以直接用python实现的
接透视篇:
如何中mac电脑上找到你的文件路径呢??点这个链接
mac 系统怎么查找文件路径并复制到代码中,可用终端查询