pandas的groupby以及pivot_table用法——以计算恩格尔系数为例
2018-05-23 17:51
453 查看
数据:来源于Datacastle上的大学生资助预测竞赛中的数据,点此百度网盘获取,密码为cdtb。
注:只用到竞赛中的一卡通数据
数据描述:
一共有一万多条数据,800多兆,共七个字段,分别是:
【学生ID,消费类别,消费地点,消费方式,消费时间,消费金额,剩余金额】
Task:
根据该数据,得到如下格式:
solution1: groupby()
data = pd.read_csv('card_train.txt') data.columns = ['Id','consume','where','how','time','amount','remainder'] data2 = data.groupby(['Id','how'])['amount'].sum() data2 = data2.unstack('how') data2.fillna(0,inplace=True)
solution2: pivot_table()
data3 = data.pivot_table('amount',index='Id',columns='how',aggfunc=sum) # 第一个参数表示要计算的列,第二个参数表示行标签,第三个参数表示列标签,aggfunc表示对要计算的列所有采取的计算方法 data3.fillna(0,inplace=True)
两种solution的输出结果相同:
有了上面的输出,接下来就是计算恩格尔系数:Engel coefficient
data3['sum'] = data3.sum(axis=1,skipna=False) data3['Engle'] = data3['食堂']/data3['sum'] data3.to_csv('hhh.csv',encoding='gbk')
最终结果:
总结:
1、比较起来,数据透视表的应用给我们解决问题带来很大的便捷性,所以要熟悉数据透视表在数据处理和分析中的应用;
2、to_csv这个方法很好用,可以避免其他的更复杂的写入数据的方式;
3、对于数据的统计处理,并不一定只有numpy行,可能pandas更好用;
4、unstack这个方法很小众!
相关文章推荐
- pandas之groupby分组与pivot_table透视表
- Pandas库——pivot_table数据透视表的用法
- Pandas分组统计函数:groupby、pivot_table及crosstab
- Pandas分组统计函数:groupby、pivot_table及crosstab
- pandas中groupby和pivot_table(数据透视表)
- 简要说明python pandas中groupby,agg等的用法
- js根据生日计算周岁 以及Date的相关用法
- IOS开发之tableView的刷新以及property属性的用法
- 详解 Pandas 透视表(pivot_table)
- ABAP DESCRIBE TABLE 用法(计算内表行数)
- pandas学习笔记2—透视表(pivot_table)详解
- python——pandas的pivot_table使用
- 利用python/pandas/numpy做数据分析(三)-透视表pivot_table
- Lua-计算表中有多少个元素-#table的用法
- python科学计算笔记(七)pandas透视表 pivot_table
- 如何通过pandas.apply进行整列和整行计算,以及如何处理A value is trying to be set on a copy of a slice from a DataFrame.错误
- pandas pivot_table() 按日期分多列数据
- pandas学习笔记3—数据重塑图解Pivot, Pivot-Table, Stack and Unstack
- 关于oracle with table as 创建临时表的用法示例以及使用with as 的优点
- 关于pandas.DataFrame的groupby的用法