我一直在尝试根据唯一的通道名称拆分数据帧,然后使用Colab绘制不同周的图表以进行进度演示。
这是我的尝试:
import pandas as pd
#read and append all the worksheets into a single dataframe
all_data = []
for ws in wb.worksheets():
rows=ws.get_all_values()
df=pd.DataFrame.from_records(rows[1:],columns=rows[0])
all_data.append(df)
data = pd.concat(all_data)
#Change data type
data['Week'] = pd.to_datetime(data['Week'], format='%d/%m/%Y')
data['Channel'] = data['Channel'].astype('str')
data['Times of alarms'] = data['Times of alarms'].astype('int')
#Create a new dataframe for analysis
subchannel_df = data[['Channel','Week','Times of alarms']].copy()
subchannel = subchannel_df.groupby(by=['Channel','Week']).agg({'Times of alarms' : 'sum'})
subchannel
在此处输入图像描述
如何将它们分开,并根据唯一的频道名称相应地绘制所有条形图?
我希望为一个频道实现的目标:在此处输入图像描述
提前感谢
更改数据类型后,可以制作一个以"channel"为列、以"Week"为索引的透视表。
subchannel_df = data.pivot_table('Time of alarms', index = 'Week', column='Channel', aggfunc='sum')
然后,如果你想把所有频道放在一个条形图中,
ax= subchannel_df.plot.bar(rot=0)
或者专注于某个频道,比如说"test_chan">
ax= subchannel_df.plot.bar(y='test_chan',rot=0)