如何转置 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_index
或reset_index
来控制它。
我有这个包含 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_index
或reset_index
来控制它。