使用Pandas统计月度时间范围内各邮政编码出现次数的问题
解决方案
步骤说明
要统计指定月度内每个邮政编码的出现次数,需完成数据清洗、时间筛选和频次统计三个核心步骤,具体实现如下:
完整代码
import pandas as pd # 1. 将Timestamp列转换为datetime类型,无法转换的内容设为缺失值 df['Timestamp'] = pd.to_datetime(df['Timestamp'], errors='coerce') # 2. 移除时间无效或邮政编码为空的行 clean_df = df.dropna(subset=['Timestamp', 'zip']) # 3. 筛选目标月度数据(示例为2023年7月,可自行调整年份和月份) monthly_data = clean_df[(clean_df['Timestamp'].dt.year == 2023) & (clean_df['Timestamp'].dt.month == 7)] # 4. 统计每个邮政编码的出现次数 zip_counts = monthly_data['zip'].value_counts() # 5. 按期望格式输出结果 for zip_code, count in zip_counts.items(): print(f"{zip_code} {count}")
代码解释
- 时间格式转换:
pd.to_datetime将Timestamp列转为可操作的日期类型,errors='coerce'会把非时间格式的内容(如样本第一行的表头文本)转为NaT(缺失时间值)。 - 无效数据清洗:
dropna移除时间无效或邮政编码为空的行,避免干扰统计结果。 - 月度数据筛选:通过
dt.year和dt.month精准定位目标月份的数据。 - 频次统计:
value_counts()直接返回每个邮政编码的出现次数,默认按频次从高到低排序。 - 格式输出:遍历统计结果,按
邮政编码 次数的格式逐行打印。
内容的提问来源于stack exchange,提问作者namibergstrom
相关产品推荐
相关产品推荐

