1. 数据分组简介
数据分组的原理
在现实生活中,我们经常根据某些特征对对象进行分组:书跟书放一起,蔬菜跟蔬菜放一起,人跟人群放一起(你懂的)。编程中也是类似。 数据分组可以帮助我们将大量数据划分成更小、更易管理的部分,从而对其进行分析。
在 pandas 中,这可以通过 groupby
方法实现,它可以将数据按组进行划分,并对每组执行不同的操作。例如,你可以按商店部门对销售数据进行分组,然后计算每个部门的总收入。
以下是一个示例代码:
import pandas as pd
# 创建一个包含销售数据的 DataFrame
data = {'部门': ['食品', '科技', '食品', '书籍', '科技'],
'收入': [100, 200, 150, 50, 300]}
df = pd.DataFrame(data)
# 按部门分组数据并计算总收入
group = df.groupby('部门')['收入'].sum()
print(group)
分组的使用场景
分组在需要比较不同类别的数据时特别有用。例如,如果你在 HR 工作,想知道不同部门的平均工资;或者作为市场营销人员,想了解每种产品在每个月的销售额是否达到最高。 使用 pandas 的分组功能可以显著简化这些任务。
2. 聚合函数计算
聚合函数简介
聚合函数是一种特殊的函数,用于对数据组进行操作并返回单个值。
最常见的包括 sum
(总和)、mean
(平均值)和 count
(元素个数)。它们可以将大量信息汇总为更简单易懂的指标。
如何使用聚合函数
我们已经在前面的例子中看到了如何计算总和。现在让我们看看如何计算每个部门的平均收入和销售数量。
# 按部门计算平均收入
平均 = df.groupby('部门')['收入'].mean()
print(平均)
# 计算每个部门的销售次数
次数 = df.groupby('部门')['收入'].count()
print(次数)
聚合计算场景
假如你有一个用户访问网站的记录,想知道每周每天平均有多少人访问网站。这是分组和使用 mean
函数的一个经典应用场景。
data = {'星期': ['周一', '周二', '周三', '周四', '周五', '周三', '周二'],
'访问量': [120, 150, 170, 160, 180, 300, 220]}
df = pd.DataFrame(data)
# 按星期计算平均访问量
平均访问量 = df.groupby('星期')['访问量'].mean()
print(平均访问量)
3. 实际操作
数据分组和聚合计算任务
假设你有一个有关销售数据的数组。任务是:按类别对其分组,计算总销售额、平均订单金额和每个类别的订单数量。 这可以帮助你了解哪些类别的商品带来了最多的利润,以及哪些类别有潜在的“金矿”。
data = {
'类别': ['电子产品', '服装', '电子产品', '书籍', '书籍', '服装'],
'订单金额': [250, 100, 150, 200, 500, 300]
}
df = pd.DataFrame(data)
# 按类别计算总销售额
总销售额 = df.groupby('类别')['订单金额'].sum()
print(总销售额)
# 按类别计算平均订单金额
平均金额 = df.groupby('类别')['订单金额'].mean()
print(平均金额)
# 按类别计算订单数量
订单数量 = df.groupby('类别')['订单金额'].count()
print(订单数量)
讨论分组结果与数据分析
完成分组和聚合任务后,对数据进行分析非常有帮助。例如,可能会发现“书籍”类别的总订单额最高,因为有一笔大订单; 或者发现“服装”类别的订单数量最多,但平均订单金额低于“电子产品”。
这种分析可以帮助做出合理的商业决策,例如,专注于提高订单数量多但平均金额较低的类别的单次订单金额。
4. 错误与注意事项
使用分组功能时,最常见的错误之一是忘记在使用聚合函数时加上圆括号。例如,写成 df.groupby('类别').sum()
而不是
df.groupby('类别')['订单金额'].sum()
。
此外,数据缺失时可能会出现问题。
Pandas 提供方便处理缺失数据的方法,例如 fillna()
,它允许用指定值替换缺失数据,从而避免计算结果的失真。
此外,还需要确保数据类型是正确的。有时包含数字的列可能会被读取为字符串,在尝试对这些数据进行聚合时会导致错误。
如果你想深入研究 pandas 和分组方法,请参考 pandas 官方文档 来了解更多详细内容和示例。
GO TO FULL VERSION