2017-02-27 108 views
0

我的数据框是针对列“IdBox”= 4中的某个值。它只帮助我为“IdBox”= 4做一个数据图。 我无法找到一种方法来让函数在IdBox值发生变化时更快速地绘制这个函数。我的IdBox值范围从4到9,这意味着6个图表。从数据框绘制python

chaudiere4 = yy[(yy.NameDeviceType== "Chaudière_logement") & (yy.IdBox == 4.0)] 

In [898]: chaudiere4  
Out[898]: 
UnitDeviceType NameDeviceType IdBox IdDeviceValue    ValueDeviceValue weekday hour ONOFF 
DateDeviceValue        
2015-11-27 17:54:00 On/Off Chaudière_logement 4.0 536448.0 On 4.0 17.0 1 
2015-11-27 17:54:00 On/Off Chaudière_logement 4.0 536449.0 Off 4.0 17.0 0 
2015-11-27 17:54:00 On/Off Chaudière_logement 4.0 536450.0 On 4.0 17.0 1 
2015-11-27 17:54:00 On/Off Chaudière_logement 4.0 536451.0 Off 4.0 17.0 0 
2015-11-27 18:09:00 On/Off Chaudière_logement 4.0 536453.0 On 4.0 18.0 1 

我创建了一个名为ONOFF的列,并按照意思进行分组来做图。

chaudiere4 = chaudiere4['ONOFF'].groupby(chaudiere4['hour']).mean() 

chaudiere4.plot(kind='bar') 
plt.title("Chaudiere ON/OFF") 
plt.xlabel('hour') 
plt.legend('ONOFF') 
plt.axis([0, 24, 0, 1]) 
plt.show() 

有没有办法用一个函数很快做到这一点,而不是更改数据框来chaudiere5为Idbox = 5和chaudiere6为Idbox = 6?

+0

要绘制的曲线图每个chaudière? – Dadep

+0

事实上,我正在寻找一种快速的方式来做到这一点,而不是重复这整个代码6次 – cloclo

+0

@cloclo,是[that](http://stackoverflow.com/questions/42493407/plot-python-from-dataframe#评论72126558_42493491)你想要什么? – MaxU

回答

0

IIUC:

yy[(yy.NameDeviceType== "Chaudière_logement") & (yy.IdBox == 4.0)] \ 
    .groupby('hour')['ONOFF'].mean() \ 
    .plot.bar() 

您可以创建一个小功能:

def my_plot(df, IdBox=0, title='Chaudiere ON/OFF'): 
    df[(df.NameDeviceType== "Chaudière_logement") & (df.IdBox == IdBox)] \ 
     .groupby('hour')['ONOFF'].mean() \ 
     .plot.bar(title=title) 
    plt.axis([0, 24, 0, 1]) 
    plt.show() 

现在你可以这样调用:

my_plot(df, 4.0) 
+0

我想他想要的是改变这部分'(yy.IdBox == 4.0)'有值4,5和6,并为每个创建一个情节。这可以通过一个简单的'for'循环来实现? –

+0

为什么IDBox在第一行是y_plot(df,IdBox = 0),在第二行是(df.IdBox == 4.0)]?该图表可行,但我需要每次更改IdBox。 – cloclo

+0

我应该在df.Idbox中添加一些类似于x的地方... – cloclo