pandas中groupby和pivot_table(数据透视表)

pivot_table(数据透视表)可以看做是一种高级的groupby功能,下面贴两段代码比较一下:

df=pd.read_csv('2016_sale.csv')


a=pd.pivot_table(df,index=['Category','Buyer','Product'],values=['Qty','Amount'],aggfunc={'Qty':(np.sum),'Amount':(np.sum)})
b=df[['Buyer','Category','Product','Amount','Qty']].groupby(['Category','Buyer','Product']).sum()

a和b的结果是一样的,不过明显a的表达式比较灵活,尤其是当对于不同字段有不同聚合函数时(比如有些要SUM,有些要MEAN,可以自定义)。

### 相同点 `groupby()``pivot_table()`在数据聚合分析中都有对数据进行分组聚合的功能,都能对数据进行统计计算,如求、均值、计数等。 ### 不同点 #### 语法与返回结果形式 - `groupby()`方法通常是先对数据进行分组,然后应用聚合函数,返回的结果一般是一个`Series`或`DataFrame`,结构相对简单,与原数据结构有一定关联。示例代码如下: ```python import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B'], 'Value': [10, 20, 30, 40] } df = pd.DataFrame(data) grouped = df.groupby('Category')['Value'].sum() print(grouped) ``` - `pivot_table()`方法则是创建一个类似电子表格的数据透视表,它可以同时对多个列进行分组聚合,返回的是一个二维的`DataFrame`,数据以表格形式呈现,结构更清晰直观。示例代码如下: ```python import pandas as pd data = { 'Category': ['A', 'B', 'A', 'B'], 'Subcategory': ['X', 'X', 'Y', 'Y'], 'Value': [10, 20, 30, 40] } df = pd.DataFrame(data) pivot = df.pivot_table(values='Value', index='Category', columns='Subcategory', aggfunc='sum') print(pivot) ``` #### 功能侧重点 - `groupby()`更侧重于对数据进行分组操作,可灵活地对分组后的数据应用各种自定义的聚合函数,适用于对数据进行基础的分组统计分析。 - `pivot_table()`更侧重于创建数据透视表,适合处理复杂的多维数据,能够快速地对数据进行汇总分析,便于进行数据的比较观察。 ### 适用场景 #### `groupby()`适用场景 - 当需要对数据进行简单的分组统计,如按某一列分组计算总、均值、计数等。 - 需要对分组后的数据应用自定义的聚合函数时。 #### `pivot_table()`适用场景 - 当需要对数据进行多维分析,同时按照多个列进行分组聚合时。 - 需要以表格形式直观地展示数据的汇总结果,便于进行数据比较分析时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值