如何用Python/Pandas将事件数据聚合为国家-年度汇总数据?
用Pandas实现国家-年度维度的恐怖事件数据汇总
核心步骤代码
- 导入Pandas并读取数据集
import pandas as pd # 读取你的数据集(根据实际文件格式调整,比如xlsx用pd.read_excel) df = pd.read_csv("你的数据集文件名.csv")
- 处理缺失值(可选但推荐)
原始数据中nkill、nwounded、nhostages可能存在空值(NaN),先替换为0避免汇总错误:
df[['nkill', 'nwounded', 'nhostages']] = df[['nkill', 'nwounded', 'nhostages']].fillna(0)
- 分组汇总核心代码
这一步直接实现按国家-年度分组,计算指定字段的年度总数:
# 按国家名称和年份分组,对死亡、受伤、人质字段求和 country_year_data = df.groupby(['country_txt', 'iyear'])[['nkill', 'nwounded', 'nhostages']].sum().reset_index()
代码解释
groupby(['country_txt', 'iyear']):指定分组维度为国家名称和年份,确保每个组对应一个国家的某一年[['nkill', 'nwounded', 'nhostages']]:筛选需要汇总的目标字段.sum():对每个分组内的字段值求和,得到该国家该年度的总数.reset_index():将分组用的country_txt和iyear从索引转回普通列,让结果每行对应一个国家-年度组合
结果示例
处理后的数据结构如下(以中文国家名称为例):
| country_txt | iyear | nkill | nwounded | nhostages |
|---|---|---|---|---|
| 尼日利亚 | 2000 | 12 | 25 | 0 |
| 马里 | 2000 | 5 | 9 | 3 |
| 尼日利亚 | 2001 | 8 | 18 | 5 |
内容的提问来源于stack exchange,提问作者taraamcl
相关产品推荐
相关产品推荐

