Python 使用Matplotlib打印多级标题数据帧
我已经阅读了Pandas的excel文件,如下所示,如何使用Matplotlib正确绘制它 顺便说一句,当我Python 使用Matplotlib打印多级标题数据帧,python,pandas,dataframe,matplotlib,Python,Pandas,Dataframe,Matplotlib,我已经阅读了Pandas的excel文件,如下所示,如何使用Matplotlib正确绘制它 顺便说一句,当我read_clipboard()这种数据格式时,它会生成parserror:saw5第3行中预期有4个字段。错误可能是由于使用多字符分隔符时忽略了引号。 手动将excel文件修改为以下格式后: date A_ratio A_price B_ratio B_price 0 2007 12.00 8.90 3.04 6.35 1 2008
read_clipboard()
这种数据格式时,它会生成parserror:saw5第3行中预期有4个字段。错误可能是由于使用多字符分隔符时忽略了引号。
手动将excel文件修改为以下格式后:
date A_ratio A_price B_ratio B_price
0 2007 12.00 8.90 3.04 6.35
1 2008 13.00 8.78 4.04 6.25
2 2009 14.00 9.08 5.04 6.50
3 2010 14.71 9.21 1.38 6.60
4 2011 15.71 9.22 2.38 6.66
5 2012 16.71 9.27 3.38 6.66
6 2013 16.09 9.56 1.38 6.85
7 2014 17.09 9.71 2.38 6.94
8 2015 18.09 9.31 3.38 6.65
9 2016 19.09 9.88 4.38 6.95
10 2017 20.09 9.76 5.38 6.88
我用以下代码绘制了它,它可以工作,但我不想更改它,因为我的原始数据非常大:
df = df.set_index('date')
plt.figure(figsize=(10, 10))
cols = ['A_ratio', 'A_price', 'B_ratio', 'B_price']
df[cols].plot(kind='bar')
plt.xticks(rotation=45)
plt.xlabel("")
输出:
请帮帮我,谢谢。我想你可以使用
地图
和加入
进行展平多索引
:
df = df.set_index('date')
df.columns = df.columns.map('_'.join)
plt.figure(figsize=(10, 10))
cols = ['A_ratio', 'A_price', 'B_ratio', 'B_price']
df[cols].plot(kind='bar')
plt.xticks(rotation=45)
plt.xlabel("")
或者您可以通过tuple
s选择多索引值:
df = df.set_index('date')
plt.figure(figsize=(10, 10))
cols = [('A','ratio'), ('A','price'), ('B','ratio'),('B','price')]
df[cols].plot(kind='bar')
plt.xticks(rotation=45)
plt.xlabel("")
抱歉,它会生成
ValueError:无法处理非唯一的多索引
对于df=df.set_index('date')
,我认为问题来自多个标题。pandas尚未正确读取excel文件。@ahbon-您是否尝试pd.read\u excel(文件头=[0,1],索引列=[0])
?这似乎是正确读取文件,但它会生成键错误:“df的“
列中没有任何['date'”。设置索引('date')
。@ahbon如果省略df=df.set\u index('date'))
?因为它应该创建date
到indexIf checkdf=pd.read\u excel(文件,头=[0,1],索引列=[0])
它将date
列转换为索引,所以使用df=df.sort\u index()
代替df.sort\u值(by='date')