pandas之groupby分组与pivot_table透视表

pandas之groupby分组与pivot_table透视表

在使用pandas进行数据分析时,避免不了使用groupby来对数据进行分组运算。

groupby的参数
groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)
  • by:mapping, function, str, or iterable。

    用于确定groupby的组。如果by是一个函数,那么会调用对象索引的每个值。如果传递了一个dict或Series,则将使用Series或dict的值来确定组。一个str或者一个strs列表可以通过自己的列传递给group。

  • axis:轴,int值,默认为0

  • level:如果axis是一个MultiIndex(分层),则按特定的级别分组。int值,默认为None

  • as_index:对于聚合输出,返回带有组标签的对象作为索引。as_index=False实际上是“SQL风格”分组输出,boolean值,默认为True。

  • sort:排序。关闭此功能以获得更好的性能。boolean值,默认True。

  • group_keys:当调用apply时,添加group key来索引来识别片断。boolean值,默认True。

  • squeeze:尽可能减少返回类型的维度,否则返回一致的类型。boolean值,默认False。

groupby的聚合函数

groupby的聚合函数有:

函数名说明
count分组中非NA值的数量
sum非NA值的和
mean非NA值的平均值
median非NA值的算术中位数
std、var无偏(分母为n-1)标准差和方差
min、max非NA值的最小值和最大值
prod非NA值的积
first、last第一个或最后一个非NA值
groupby示例

groupby的测试数据:

https://github.com/zhang3550545/resource/blob/master/raw/groupby_test.csv

  • 读取groupby_test.csv文件中的数据,输处文件内容。
if __name__ == '__main__':
    data = pd.read_csv('groupby_test.csv')
    print(data[:10])

image

  • groupby函数,对区域字段进行分组,对总价求平均值。
results = data.groupby(['区域'])['总价']

print(results)  # 输出:<pandas.core.groupby.SeriesGroupBy object at 0x0000023D2AA02EF0>

print(results.mean())

image

  • groupby函数,对区域字段进行分组,对面积求和。
results = data.groupby(['区域'])['面积'].sum()

print(results)

image

  • groupby函数,对区域字段进行分组,对区域计算count。
results = data.groupby(data['区域'], sort=False)['区域'].count()

print(results)

image

  • groupby函数,对区域字段进行分组,求总价,单价,面积的平均值。
results = data.groupby(['区域'])['总价', '单价', '面积'].mean()

print(results)

image

  • groupby函数,对区域,版块2个字段进行分组,求单价的平均值。
results = data.groupby(['区域', '版块'])['单价'].mean()

print(results)

image

pivot_table透视表

使用pivot_table透视表实现groupby的功能

results = pd.pivot_table(data, index=['区域', '版块'], values=['单价'])

print(results)

image

  • 7
    点赞
  • 35
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值