数据分析(pandas)---06.分组聚合

本文介绍如何使用Python的Pandas库进行数据分组与聚合操作,包括mean、std等基本统计方法的应用,以及更复杂的自定义聚合函数和transform变换。通过实际案例展示了不同聚合函数在数据分析中的应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import numpy as np
import pandas as pd
# 读取数据
detail = pd.read_excel('output.xlsx',sheet_name=0)

lite_detail=detail[['order_id','counts','amounts']]
detail_group = lite_detail.groupby(by='order_id')

print(detail_group['order_id'])

# 数据分析
print('每个订单的均值:\n',detail_group.mean().head())
print('每个订单的标准差:\n',detail_group.std().head())
print('每个订单的大小:\n',detail_group.size().head())

# 任务
# task_detail = detail[['dishes_name','amounts']]
# detail_group = task_detail.groupby(by='dishes_name')
# print(detail_group.mean())
# print(detail_group.size().tail())

# 2.agg---对于不同的列使用不同的聚合函数
# (1)一次性进行多个聚合统计,
# a.所有列都执行聚合操作
lite_detail = detail[['counts','amounts']]
print('菜品销量和售价的的均值:\n',lite_detail.agg([np.sum,np.mean]))#给函数名
# b.指定列执行指定聚合操作
print('菜品销量总和 与 售价的均值:\n',lite_detail.agg({'counts':np.sum,'amounts':[np.mean,np.std]}))
# c.可自定义聚合操作
def double_sum(col):
    return col*2

print('某上市公司为美化数据逼迫技术人员的数据分析操作:\n')

print(lite_detail.agg({'counts':double_sum},axis=0))

print(detail[['counts','amounts']].agg(double_sum))

# apply
# 每列均值
print('订单详情表的菜品销量与售价的均值:\n',detail[['counts','amounts']].apply(np.mean))

# 每组均值
new_detail = detail[['order_id','counts','amounts']].groupby(by='order_id')

print('订单详情表中分组后每组的均值:\n',new_detail.apply(np.mean).head())
print('订单详情表中分组后每组的均方差:\n',new_detail.apply(np.std).head())

# transform
print('订单详情表中菜品销量与售价的两倍:\n',detail[['counts','amounts']].transform(lambda x:2*x).head())

# 离差标准化:消除大单位和小单的影响(消除量纲)
# (当前值-最小值)/(最大值-最小值)

# def aa(x):
#     print(type(x),x)  #输出x是一个序列
print('订单详情表分组后实现组内离差标准化:\n',new_detail[['counts','amounts']].transform(lambda x:(x-x.min())/(x.max()-x.min())))









评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值