📜  pandas groupby 聚合分位数 - Python (1)

📅  最后修改于: 2023-12-03 14:45:02.625000             🧑  作者: Mango

Pandas Groupby 聚合分位数 - Python

在数据分析中,我们经常需要将数据按照某一列进行分组,并对每一组进行聚合操作,比如求平均值、总和、中位数等等。Pandas提供了非常方便的groupby函数,可以轻松地进行数据分组和聚合。

本文将介绍如何使用Pandas的groupby函数进行分组聚合操作,并特别关注如何计算分位数。

数据准备

首先,我们需要准备一些数据。本文将使用Pandas自带的tips数据集来演示分位数的计算。

import seaborn as sns

# 加载数据集
tips = sns.load_dataset('tips')

# 预览前几行数据
print(tips.head())

输出结果如下:

   total_bill   tip     sex smoker  day    time  size
0       16.99  1.01  Female     No  Sun  Dinner     2
1       10.34  1.66    Male     No  Sun  Dinner     3
2       21.01  3.50    Male     No  Sun  Dinner     3
3       23.68  3.31    Male     No  Sun  Dinner     2
4       24.59  3.61  Female     No  Sun  Dinner     4

数据共有7列,包括顾客人均消费总额、小费、顾客性别、是否吸烟、消费日期、用餐时间和就餐人数。我们将按照用餐时间进行分组,计算总账单金额的分位数。

分位数的计算

在统计学中,分位数是一种中心位置测量,指在一个有序数列中,处于第p个位置上的数。常见的分位数有中位数、四分位数。在Pandas中,我们可以使用quantile函数来计算指定的分位数。

# 按照用餐时间分组,计算总账单金额的分位数
q25 = tips.groupby('time')['total_bill'].quantile(0.25)
q50 = tips.groupby('time')['total_bill'].quantile(0.5)
q75 = tips.groupby('time')['total_bill'].quantile(0.75)

# 打印结果
print('Lunch:')
print('  25%: {:.2f}'.format(q25['Lunch']))
print('  50%: {:.2f}'.format(q50['Lunch']))
print('  75%: {:.2f}'.format(q75['Lunch']))

print('Dinner:')
print('  25%: {:.2f}'.format(q25['Dinner']))
print('  50%: {:.2f}'.format(q50['Dinner']))
print('  75%: {:.2f}'.format(q75['Dinner']))

输出结果如下:

Lunch:
  25%: 12.38
  50%: 16.00
  75%: 19.68
Dinner:
  25%: 16.00
  50%: 18.39
  75%: 32.67

我们可以看到,在午餐和晚餐时,总账单金额的分位数有所不同。

结论

本文介绍了如何使用Pandas的groupby函数进行数据分组和聚合操作,并特别关注了如何计算分位数。在数据分析中,Pandas是一个非常有用的工具,掌握其基本操作对于提高数据处理效率和准确性都有非常大的帮助。