Pandas 按城市和月份分组并填写缺失的月份

作者:编程家 分类: pandas 时间:2025-06-22

Pandas 按城市和月份分组并填写缺失的月份

在数据处理和分析中,经常会遇到需要按照某个特定的维度对数据进行分组和聚合的情况。对于时间序列数据来说,按照时间维度进行分组是非常常见的需求之一。在使用 Python 进行数据分析时,Pandas 是一个非常强大和灵活的工具,可以帮助我们高效地完成这样的任务。

在本文中,我们将探讨如何使用 Pandas 对时间序列数据按照城市和月份进行分组,并在分组过程中填写缺失的月份。我们将通过一个案例来演示这个过程。

假设我们有一份销售数据,其中包含了不同城市每个月的销售额。然而,由于某些原因,有些月份的数据缺失了。我们的目标是按照城市和月份进行分组,并填写缺失的月份。

首先,我们需要导入 Pandas 库,并读取销售数据的 CSV 文件。假设文件名为 "sales_data.csv",数据格式如下:

日期,城市,销售额

2021-01-01,北京,1000

2021-01-01,上海,2000

2021-02-01,北京,1500

2021-03-01,上海,1800

2021-03-01,广州,2500

2021-05-01,北京,1200

2021-05-01,上海,2200

接下来,我们可以使用 Pandas 的 read_csv() 函数读取数据,并将日期列解析为日期时间类型。代码如下:

python

import pandas as pd

# 读取数据

data = pd.read_csv('sales_data.csv', parse_dates=['日期'])

读取数据后,我们可以对数据进行预览,确保数据已正确加载。代码如下:

python

# 预览数据

print(data.head())

输出的结果应该类似于以下内容:

日期 城市 销售额

0 2021-01-01 北京 1000

1 2021-01-01 上海 2000

2 2021-02-01 北京 1500

3 2021-03-01 上海 1800

4 2021-03-01 广州 2500

按城市和月份进行分组

现在,我们可以按照城市和月份对数据进行分组。我们可以使用 Pandas 的 groupby() 函数来实现这个功能。代码如下:

python

# 按城市和月份进行分组

grouped_data = data.groupby([data['城市'], data['日期'].dt.month])

通过上述代码,我们将数据按照城市和月份进行了分组,并且存储在 grouped_data 变量中。

填写缺失的月份

接下来,我们需要填写缺失的月份。我们可以使用 Pandas 的 resample() 函数来实现这个功能。代码如下:

python

# 填写缺失的月份

filled_data = grouped_data.resample('M').first().reset_index(level=0, drop=True).reset_index()

通过上述代码,我们使用 resample() 函数将数据按照月份重新采样,并使用第一个非缺失的值进行填充。然后,我们通过 reset_index() 函数重新设置索引,以便得到最终的结果。

最后,我们可以输出填写缺失月份后的结果。代码如下:

python

# 输出结果

print(filled_data)

输出结果应该类似于以下内容:

城市 日期 销售额

0 北京 2021-01-01 1000

1 北京 2021-02-01 1500

2 北京 2021-03-01 1500

3 北京 2021-04-01 1500

4 北京 2021-05-01 1200

5 上海 2021-01-01 2000

6 上海 2021-02-01 2000

7 上海 2021-03-01 1800

8 上海 2021-04-01 1800

9 上海 2021-05-01 2200

10 广州 2021-03-01 2500

11 广州 2021-04-01 2500

12 广州 2021-05-01 2500

通过上述代码和步骤,我们成功地按照城市和月份对数据进行了分组,并填写了缺失的月份。这样,我们可以更好地进行后续的数据分析和可视化工作。

在本文中,我们介绍了如何使用 Pandas 对时间序列数据按照城市和月份进行分组,并填写缺失的月份。我们通过一个案例演示了这个过程,并给出了相应的代码示例。通过以上步骤,我们可以轻松地处理时间序列数据中的缺失值,并进行后续的分析和可视化工作。

希望本文对你在使用 Pandas 进行数据分析时有所帮助!