首页 > 解决方案 > 如何根据图形绘制的唯一通道名称拆分数据框

问题描述

我一直在尝试根据唯一的频道名称拆分数据框,然后在不同的周内绘制图表以使用 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

在此处输入图像描述

如何拆分它们并相应地根据唯一的频道名称绘制所有条形图?

我希望为频道实现的目标: 在此处输入图片描述

先感谢您

标签: pythonpandasdataframedata-analysis

解决方案


更改数据类型后,您可以制作一个以“通道”为列、以“周”为索引的数据透视表。

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)

推荐阅读