You need to enable JavaScript to run this app. 如何正确合并两个Pandas DataFrame并绘制腐败与不平等关系散点图
优惠活动
大模型
产品
解决方案
定价
更多

如何正确合并两个Pandas DataFrame并绘制腐败与不平等关系散点图

解决思路

你现在用的纵向拼接方式不符合散点图的需求:散点图需要每一行对应一组「国家+年份」的x/y值,也就是腐败指数和不平等指数要作为两个独立列存在,正确处理步骤如下:

步骤1:将宽格式原始表转为长格式

两个原始DataFrame都采用年份作为列名的宽结构,先统一转换为国家-年份-指标值的长结构:

# 不平等指数表转长表
inq_long = inq.melt(id_vars="country", var_name="year", value_name="gini_index")
# 腐败指数表转长表
corr_long = corr.melt(id_vars="country", var_name="year", value_name="corruption_index")

步骤2:按国家+年份合并两个长表

用内连接合并,仅保留两个表同时存在数据的(国家,年份)组合,避免空值影响绘图:

merged = pd.merge(
    inq_long,
    corr_long,
    on=["country", "year"],
    how="inner"
)
# 过滤掉两个指标存在空值的无效行
merged = merged.dropna(subset=["gini_index", "corruption_index"])

步骤3:直接绘制散点图

合并后的表每行对应一组x/y值,直接调用绘图接口即可:

import matplotlib.pyplot as plt

plt.scatter(merged["corruption_index"], merged["gini_index"])
plt.xlabel("腐败指数")
plt.ylabel("不平等指数(GINI)")
plt.show()
样例效果

用你给出的样例数据执行以上操作后,最终会得到1条有效数据:

  • 安哥拉2018年:GINI=51.3,腐败指数=40.4
    其他(国家,年份)组合因至少一个指标为空,会被过滤不参与绘图。

内容的提问来源于stack exchange,提问作者data_runner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 21:45:02