python – 带有索引的Pandas Plot导致’KeyError []不在索引中
发布时间:2020-12-20 11:55:20 所属栏目:Python 来源:网络整理
导读:我是 Python中Pandas概念的新手.通常情节不是问题.但是,我现在面临的是包含索引的数据框.不知何故什么都没有了. 我想要实现的目标: 为每个列[Plant1,Plant2,Plant3]创建一个特定柱[Trafo1]的子图. 这是我的代码: import numpy as npimport datetimeimport
我是
Python中Pandas概念的新手.通常情节不是问题.但是,我现在面临的是包含索引的数据框.不知何故什么都没有了.
我想要实现的目标: 这是我的代码: import numpy as np import datetime import numpy as np import matplotlib import matplotlib.pyplot as plt import pandas as pd import os # Create the sample data plant1 = {'Date' : pd.date_range('1/1/2011',periods=10,freq='D'),'Plant' : pd.Series(["Plant1"]*10),'Output' : pd.Series(abs(np.random.randn(10)))} plant2 = {'Date' : pd.date_range('1/3/2011','Plant' : pd.Series(["Plant2"]*10),'Output' : pd.Series(abs(np.random.randn(10)))} plant3 = {'Date' : pd.date_range('1/5/2011','Plant' : pd.Series(["Plant3"]*10),'Output' : pd.Series(abs(np.random.randn(10)))} trafo1 = {'Date' : pd.date_range('1/5/2011','Plant' : pd.Series(["Trafo1"]*10),'Output' : pd.Series(abs(np.random.randn(10)))} trafo2 = {'Date' : pd.date_range('1/5/2011','Plant' : pd.Series(["Trafo2"]*10),'Output' : pd.Series(abs(np.random.randn(10)))} df_plant_1 = pd.DataFrame(plant1) df_plant_2 = pd.DataFrame(plant2) df_plant_3 = pd.DataFrame(plant3) df_trafo_1 = pd.DataFrame(trafo1) df_trafo_2 = pd.DataFrame(trafo2) sample = pd.concat([df_plant_1,df_plant_2,df_plant_3,df_trafo_1,df_trafo_2]) test = pd.pivot_table(sample,index='Date',columns='Plant',values='Output') test = test.fillna(method='pad') test = test.fillna(method='bfill') # Draw the plots matplotlib.style.use('ggplot') cols = len(test.columns) - 1 fig,axes = plt.subplots(nrows=cols/2,ncols=2,figsize=(12,4)) for column in test.iloc[:,:-1]: test.plot(x=test[column],y=test['Trafo1'],title=column) plt.gca().set_aspect('equal',adjustable='box') plt.show() 导致以下错误输出: runfile('C:/..../untitled12.py',wdir='C:/...') ? Traceback (most recent call last): File "<ipython-input-206-1acb55933d7f>",line 1,in <module> runfile('C:/Users/bjl/untitled12.py',wdir='C:/Users/bjl') File "C:Anaconda2libsite-packagesspyderlibwidgetsexternalshellsitecustomize.py",line 699,in runfile execfile(filename,namespace) File "C:Anaconda2libsite-packagesspyderlibwidgetsexternalshellsitecustomize.py",line 74,in execfile exec(compile(scripttext,filename,'exec'),glob,loc) File "C:/Users/bjl/untitled12.py",line 52,in <module> test.plot(x=test[column],title=column) File "C:Anaconda2libsite-packagespandastoolsplotting.py",line 3671,in __call__ sort_columns=sort_columns,**kwds) File "C:Anaconda2libsite-packagespandastoolsplotting.py",line 2556,in plot_frame **kwds) File "C:Anaconda2libsite-packagespandastoolsplotting.py",line 2370,in _plot series = data[y].copy() # Don't modify File "C:Anaconda2libsite-packagespandascoreframe.py",line 1963,in __getitem__ return self._getitem_array(key) File "C:Anaconda2libsite-packagespandascoreframe.py",line 2007,in _getitem_array indexer = self.ix._convert_to_indexer(key,axis=1) File "C:Anaconda2libsite-packagespandascoreindexing.py",line 1150,in _convert_to_indexer raise KeyError('%s not in index' % objarr[mask]) KeyError: '[ 1.20311253 1.20311253 1.20311253 1.20311253 1.20311253 0.32765014n 1.65686117 2.58118029 0.58903059 0.13907876 0.59270297 0.27072611n 0.50167366 1.0310578 ] not in index' 我不明白索引的问题是什么.我无法在线找到任何帮助,因为所有示例都没有索引. 我非常感谢你的帮助.这个错误对新手来说很神秘. 解决方法
根据
docs,您应该在绘制这种方式时给出列名,而不是列本身.所以更换:
test.plot(x=test[column],title=column) 同 test.plot(x=column,y='Trafo1',title=column) 应该解决这个错误. 编辑: for i,column in enumerate(test.iloc[:,:-2]): j = i // 2 k = i % 2 test.plot(x=column,title=column,ax=axes[j][k]) 现在在所有轴上进行你想要的操作(虽然它真的搞砸了) for ax in axes.reshape(4): ax.set_aspect('equal',adjustable='box') 显示情节:) plt.show() (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |