首页 > 解决方案 > matplotlib:绘制多维数据帧的二维散点图

问题描述

我有以下数据框,它显示了多个变量,包括年份、性别、国籍和总人数。

+---------+---+---+----------+
| range   |Sex|NOC|sum(count)|
+---------+---+---+----------+
|2000-2020|  M|SUR|        13|   
|2000-2020|  M|SRI|        33|   
|1940-1960|  F|YUG|        86|    
|1980-2000|  F|IND|        54|    
|1900-1920|  M|GBR|      1636|    
|2000-2020|  M|AFG|        13| 
+---------+---+---+----------+

我想在 matplotlib 或 seaborn 中绘制以下散点图。我怎样才能做到这一点

在此处输入图像描述

标签: pythondataframematplotlibplot

解决方案


您需要取消堆叠sex列以获得另外两列:MF. 肮脏的例子:

>>> df_ = df.set_index(['year', 'noc', 'sex']).unstack().reset_index()
>>> df_.columns = [''.join(col).strip() for col in df_.columns.values]

然后你可以使用 seaborn:

>>> sb.scatterplot(x='sumM', y='sumF', hue='year', data=df)

推荐阅读