利用pandas按日期做分组运算的操作

  • Post category:Python

下面是关于利用pandas按日期做分组运算的完整攻略:

1. 按照日期分组

首先,我们需要使用pandas库的read_csv函数来读取包含日期的数据集。我们可以使用parse_dates来将日期列解析为datetime类型,方便后续的处理。

import pandas as pd

# 读取数据集
df = pd.read_csv('data.csv', parse_dates=['date'])

接着,我们可以使用groupby函数来按照日期进行分组。例如,我们可以按照年份分组:

# 按照年份分组
df.groupby(df['date'].dt.year)

这将返回一个DataFrameGroupBy对象,对其进行聚合操作即可得到结果。

2. 按照日期统计每组的数量

我们可以使用agg函数对每个分组进行聚合操作。例如,我们可以按照月份统计每个月的记录数量:

# 按照月份统计记录数量
df.groupby(df['date'].dt.month)['value'].agg('count')

这将返回一个Series对象,其中每个元素代表相应月份的记录数量。

3. 按照日期统计每组的平均值

除了统计数量之外,我们也可以按照日期统计分组的平均值。例如,我们可以按照年份统计每年的平均记录值:

# 按照年份统计平均值
df.groupby(df['date'].dt.year)['value'].mean()

这将返回一个Series对象,其中每个元素代表相应年份的平均记录值。

示例1:

考虑一个包含日期和销售额的数据集,我们需要按照月份统计每月的销售额总额、平均值和记录数量。

import pandas as pd

# 读取数据集
df = pd.read_csv('sales.csv', parse_dates=['date'])

# 按照月份统计销售额总额、平均值和记录数量
result = df.groupby(df['date'].dt.month)['sales'].agg(['sum', 'mean', 'count'])

运行后,result将会是一个DataFrame对象,包含每个月份的销售额总额、平均值和记录数量。

示例2:

以豆瓣电影 Top 250 数据集为例,我们要按照每个年份统计该年电影的平均评分、评分人数和电影数量。

import pandas as pd

# 读取数据集
df = pd.read_csv('movies.csv', encoding='utf-8')

# 将日期列解析为datetime类型
df['release_date'] = pd.to_datetime(df['release_date'], format='%Y-%m-%d')

# 按照年份统计平均评分、评分人数和电影数量
result = df.groupby(df['release_date'].dt.year)[['rating', 'votes']].agg(['mean', 'count'])

运行后,result将会是一个DataFrame对象,包含每个年份的平均评分、评分人数和电影数量。