python中 pandas 模块 melt 函数 的应用,excel透视表

每天一点点,记录工作中实操可行
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 系统怎么查找文件路径并复制到代码中,可用终端查询

发布了124 篇原创文章 · 获赞 23 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/YmeBtc/article/details/101445315