从datafram绘制python

2024-04-25 22:26:24 发布

您现在位置:Python中文网/ 问答频道 /正文

下面的数据框是针对“IdBox”=4列中的某个值。它帮助我只为“IdBox”=4绘制数据图。 当IdBox值发生变化时,我找不到一种方法让函数更快地绘制它。我的IdBox值从4到9,这意味着6个图形。你知道吗

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的列,并按mean分组以进行绘图。你知道吗

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)?你知道吗


Tags: 数据方法函数reon绘制pltoff
1条回答
网友
1楼 · 发布于 2024-04-25 22:26:24

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)

相关问题 更多 >