我想要实现的目标:
为每个列[Plant1,Plant2,Plant3]创建一个特定柱[Trafo1]的子图.
这是我的代码:
import numpy as npimport datetimeimport numpy as npimport matplotlibimport matplotlib.pyplot as pltimport pandas as pdimport os# Create the sample dataplant1 = {'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 plotsmatplotlib.style.use('ggplot')cols = len(test.columns) - 1fig,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:\Anaconda2\lib\site-packages\spyderlib\Widgets\externalshell\sitecustomize.py",line 699,in runfile execfile(filename,namespace) file "C:\Anaconda2\lib\site-packages\spyderlib\Widgets\externalshell\sitecustomize.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:\Anaconda2\lib\site-packages\pandas\tools\plotting.py",line 3671,in __call__ sort_columns=sort_columns,**kwds) file "C:\Anaconda2\lib\site-packages\pandas\tools\plotting.py",line 2556,in plot_frame **kwds) file "C:\Anaconda2\lib\site-packages\pandas\tools\plotting.py",line 2370,in _plot serIEs = data[y].copy() # Don't modify file "C:\Anaconda2\lib\site-packages\pandas\core\frame.py",line 1963,in __getitem__ return self._getitem_array(key) file "C:\Anaconda2\lib\site-packages\pandas\core\frame.py",line 2007,in _getitem_array indexer = self.ix._convert_to_indexer(key,axis=1) file "C:\Anaconda2\lib\site-packages\pandas\core\indexing.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.32765014\n 1.65686117 2.58118029 0.58903059 0.13907876 0.59270297 0.27072611\n 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()总结
以上是内存溢出为你收集整理的python – 带有索引的Pandas Plot导致’KeyError []不在索引中全部内容,希望文章能够帮你解决python – 带有索引的Pandas Plot导致’KeyError []不在索引中所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)