猿问

熊猫数据框无法从CSV绘制x值

我正在尝试从CSV文件将年度数据读取到Pandas数据框中,但是它无法正确读取年份。我认为问题在于我必须转置行和列。


这是一个显示问题的简化示例。


from io import StringIO


import matplotlib.pyplot as plt

import pandas as pd

import seaborn as sn


# This is what I wish I had.

csv_source1 = StringIO("""\

year,Apples,Bananas,Cherries

1990,1,2,3

1997,1,4,9

1999,1,8,27

""")

df1 = pd.read_csv(csv_source1, index_col=0)

df1.index.names = ['Year']

df1.columns.names = ['fruit']


# This is what I actually have.

csv_source2 = StringIO("""\

fruit,1990,1997,1999

Apples,1,1,1

Bananas,2,4,8

Cherries,3,9,27

""")

# So I transpose it.

df2 = pd.read_csv(csv_source2, index_col=0).T

df2.index.names = ['Year']


sn.set()

ax = plt.subplot(211)

df1.plot(ax=ax)


ax = plt.subplot(212)

df2.plot(ax=ax)


plt.tight_layout()

plt.show()

生成这对图:

我想绘制多年来每种水果的价格,但是我正在读取的数据中每种水果都有一行,每年都有一列。第一张图显示了当我绘制希望的数据时会发生什么。第二幅图显示了当我对转置后的数据进行绘图时会发生什么。

为什么在第二个图的x轴上未显示年份?数据间隔均匀,所以甚至不读取年份数据吗?


慕尼黑5688855
浏览 143回答 1
1回答
随时随地看视频慕课网APP

相关分类

Python
我要回答