我正在尝试从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轴上未显示年份?数据间隔均匀,所以甚至不读取年份数据吗?
相关分类