假设我们有一个包含日期、ID和数值的数据集,我们想按周和ID分组,求平均值,并按周分组绘制图表。以下是一种解决方法的代码示例:
import pandas as pd
import matplotlib.pyplot as plt
# 创建示例数据集
data = {
'日期': ['2021-01-01', '2021-01-02', '2021-01-03', '2021-01-04', '2021-01-05', '2021-01-06', '2021-01-07', '2021-01-08', '2021-01-09', '2021-01-10'],
'ID': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
'数值': [10, 20, 30, 40, 50, 60, 70, 80, 90, 100]
}
df = pd.DataFrame(data)
# 将日期列转换为datetime类型
df['日期'] = pd.to_datetime(df['日期'])
# 按周和ID分组,求平均值
df_grouped = df.groupby([pd.Grouper(key='日期', freq='W-MON'), 'ID']).mean()
# 重新设置索引
df_grouped = df_grouped.reset_index()
# 按周分组绘制图表
df_grouped.plot(x='日期', y='数值', kind='line', marker='o')
# 显示图表
plt.show()
这段代码首先创建了一个示例数据集,包含日期、ID和数值三列。然后,我们将日期列转换为datetime类型,以便进行时间相关的操作。接下来,我们使用groupby
方法按周和ID进行分组,并使用mean
方法求平均值。然后,我们重新设置索引,使日期和ID成为列而不是索引。最后,我们使用plot
方法绘制按周分组的图表,并使用show
方法显示图表。
请注意,这里我们使用了Grouper
函数来指定按周分组的频率为每周的星期一。你可以根据自己的需求调整这个频率。
希望对你有帮助!