python小技能:1行代码做数据"逆透视表",效率翻倍!
创作立场声明:实际看下来,很有用的书籍
一维表,是非常好用的表格,可以基于此进行各种数据的计算统计。
有时候,拿到手的是二维表,需要转换成一维表之后,再进行后面的计算。
比如,下面的一个表格,表示每个人手上项目,每月的状态表,进行中,或者完成。
如果要计算,每个部门,每个人,每月手头有几件进行中,几件完成了?那么,就需要将原表转换成一维表。
原表:
逆透视之后的一维表:
在python里面,要怎么实现呢?1行代码,就可以实现!
1、导入pandas模块:
import pandas as pd
2、导入需要进行透视的表格
df=pd.read_excel(“工作 W48.xls”)
df.head()
代码解释:df.head() 查看数据表的前5行
3、数据透视:pivot_table()
df2 = pd.melt(df,id_vars=[‘责任部门’,’负责人’],var_name=’月份’,value_name=’状态’)
df2
参数解释:
id_vars=[‘责任部门’,’负责人’]:’责任部门’,’负责人’,不需要转换列
var_name=’月份’:需要转换成列的行名,设置列名为”月份“
value_name=’状态’:设置值的列名为”状态“
4、删除[“状态”]栏有空值的行:dropna()
df2=df2.dropna(subset=[“状态”])
df2
从上表,可以看到,有些行的”状态”=NaN,是空值,用dropna()函数,把空值所在的行删除。
上表:567row*4columns
删除空值行之后:316row*4columns
即删除了251行
5、保存表格:命名为“透视图’’
df.to_excel(‘透视图.xls’, index=False)
一共5行代码就可以搞定啦,而逆透视的核心代码pd.melt()只有一行,是不是很简单?
大家有更好的方法,欢迎来告诉我啊!
书籍网址:
更多推荐:
python小技能:Matplotlib可视化四种常用统计图形!
python小技巧:超详细 matplotlib 中画出折线图的方法!
卖女孩的火柴棍
请问:实操方向,有啥适配VW公众号or网课or电子书推荐,求大神介绍。
校验提示文案
卖女孩的火柴棍
请问:实操方向,有啥适配VW公众号or网课or电子书推荐,求大神介绍。
校验提示文案