如何转置 Dataframe 以及如何散点图转置 df

How do I transpose a Dataframe and how to scatter plot the transposed df

我有这个包含 20 个国家和 20 年数据的数据框

Country 2000 2001 2002 ...
USA      1    2    3    
CANADA   4    5    6    
SWEDEN   7    8    9    
...

我想获得一个新的 df 来创建一个散点图,其中 y = 每列(国家/地区)的值和 x= 年份

Country USA CANADA SWEDEN ...
2000     1    4    7    
2001     2    5    8    
2002     3    6    9    
...

我的代码:

data = pd.read_csv("data.csv")
data.set_index("Country Name", inplace = True)

data_transposed = data.T

我正在努力创建这种散点图。 任何的想法 ? 谢谢

Scatter是一个只接收x和y的图,你可以直接散点整个数据帧。但是,一个小的解决方法:

import pandas as pd
import matplotlib.pyplot as plt

df = pd.DataFrame(data={"Country":["USA", "Canada", "Brasil"], 2000:[1,4,7], 2001:[3,7,9], 2002: [2,8,5]})

for column in df.columns:
    if column != "Country":
        plt.scatter(x=df["Country"], y=df[column])
plt.show()

结果:

它只是分别绘制每一列,最终你会得到你想要的。 如您所见,每年都用不同的颜色表示 - 您可以做相反的事情(绘制年份并将国家/地区设置为不同的颜色)。散点为 1x1:您有国家、年份和价值。您只能在散点图中显示其中的两个(例如,除非您使用颜色)

您需要为此转置您的数据框(因为您自己指定 x 和 y 是什么),但您可以使用 df.transpose() 来完成:请参阅 documentation

注意在我的 df 中,国家/地区列不是索引。您可以使用set_indexreset_index来控制它。