介绍
每隔一段时间我都会去学习、回顾一下python中的新函数、新操作。这对于你后面的工作是有一定好处的。
本文重点介绍了pandas中groupby、Grouper和agg函数的使用。这2个函数作用类似,都是对数据集中的一类属性进行聚合操作,比如统计一个用户在每个月内的全部花销,统计某个属性的最大、最小、累和、平均等数值。
其中,agg是pandas 0.20新引入的功能
groupby && Grouper
首先,我们从网上把数据下载下来,后面的操作都是基于这份数据的:
import pandas as pd
df = pd.read_excel("https://github.com/chris1610/pbpython/blob/master/data/sample-salesv3.xlsx?raw=True")
df["date"] = pd.to_datetime(df['date'])
df.head()
(图片来自于jupyter notebook,强烈推荐使用它作为python的交互工具)
下面,我们统计'ext price'这个属性在每个月的累和(sum)值,resample 只有在index为date类型的时候才能用:
df.set_index('date').resample('M')['ext price'].sum()
date
2014-01-31 185361.66
2014-02-28 146211.62
2014-03-31 203921.38
2014-04-30 174574.11
2014-05-31 165418.55
2014-06-30 174089.33
2014-07-31 191662.11
2014-08-31 153778.59
2014-09-30 168443.17
2014-10-31 171495.32
2014-11-30 119961.22
2014-12-31 163867.26
Freq: M, Name: ext price, dtype: float64
进一步的,我们想知道每个用户每个月的sum值,那么就需要一个groupby了:
df.set_index('date').groupby('name')['ext price'].resample("M").sum()
name date
Barton LLC 2014-01-31 6177.57
2014-02-28 12218.03
2014-03-31 3513.53
2014-04-30 11474.20
2014-05-31 10220.17
2014-06-30 10463.73