外收内放头像
数据分析(数据分组)封面图

数据分析(数据分组)

Python 数据分析 09:数据分组 —— 思路自述

目标:按产品类别分组,统计各类别的数量、销售额、单价等指标。

先上代码

import pandas as pd

# 读取文件
df = pd.read_csv('data/sales.csv', nrows=20)

# 计算销售金额(销售数量 × 单价),供后续分组统计使用
df['销售金额'] = df['销售数量'] * df['单价']

# 1.1 各类别的订单数量
var1 = df.groupby('产品类别')['订单号'].count()

# 1.2 各类别的销售数量之和
var2 = df.groupby('产品类别')['销售数量'].sum()

# 1.3 各类别的销售金额之和
var3 = df.groupby('产品类别')['销售金额'].sum()

# 1.4 各类别的最低商品单价
var4 = df.groupby('产品类别')['单价'].min()

# 1.5 各类别的最高商品单价
var5 = df.groupby('产品类别')['单价'].max()

# 1.6 各类别的平均商品单价
var6 = df.groupby('产品类别')['单价'].mean().round(2)

# 1.7 一次算出最低、最高、平均单价
var7 = df.groupby('产品类别')['单价'].agg(['min', 'max', 'mean']).round(2)

# 1.8 命名聚合:销售数量之和、销售金额之和、平均单价
var8 = df.groupby('产品类别').agg(
    销售数量之和=('销售数量', 'sum'),
    销售金额之和=('销售金额', 'sum'),
    平均单价=('单价', lambda x: round(x.mean(), 2))
)

var8

我的思路:“分组—套娃—汇总”三步

分组核心是 split-apply-combine:先按某列把数据劈成几堆(groupby),再对每堆各自算账(聚合),最后拼回一张表。

var1 到 var6 就是这个套路换不同聚合函数:count 数订单、sum 求和、min/max/mean 得最值均值,均价后面 .round(2) 收小数位。

先造一个派生列

统计销售额前,表里没有“金额”列,得先造:

df['销售金额'] = df['销售数量'] * df['单价']

整列相乘是向量化运算,不写 for 循环,一行算完每单金额,var3 才能按类别求总营收。

聚合的两种进阶写法

一是 agg 一次算多个。 var7 用 ['单价'].agg(['min','max','mean']) 把最值加均值一次摆平,不用分三次调用再拼。

二是命名聚合造干净结果表。 var8 是我最欣赏的写法:每个 新名字=(源列, 函数),还能塞 lambda 做四舍五入这种自定义加工,出来的表自带中文列名,直接就是能汇报的成品。

转载自 CSDN-专业IT技术社区

原文链接:https://blog.csdn.net/W20070611/article/details/168027742

文章来源转载

评论

评论列表

微信小程序
QQ小程序

关于作者

点赞数:0
关注数:0
粉丝:0
文章:0
关注标签:0
加入于:--