python - 如何根据图形绘制的唯一通道名称拆分数据框
问题描述
我一直在尝试根据唯一的频道名称拆分数据框,然后在不同的周内绘制图表以使用 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
如何拆分它们并相应地根据唯一的频道名称绘制所有条形图?
我希望为频道实现的目标: 在此处输入图片描述
先感谢您
解决方案
更改数据类型后,您可以制作一个以“通道”为列、以“周”为索引的数据透视表。
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)
推荐阅读
- python - Python中的简单菜单,不使用“pip”
- mongodb - JSON对象截断Mlab?
- javascript - 当字段名称包含 @ 字符时,我将如何从 JSON 响应中提取数据
- javascript - 如何使用异步 API 调用作为 Javascript 中的值构建对象
- c++ - 使用父类方法覆盖的多重继承
- c# - 如何检查是否单击了动态创建的标签并更改其颜色?
- google-sheets - 查找匹配数据并替换右侧单元格中的数据的代码
- azure-devops - 如何在 Azure DevOps 上使用 NuGet 将符号发送到我们的开发机器?
- nativescript - NativeScript Angular 与 ts/xml
- jquery - Bootstrap 4.1.3 modal body 保留 jquery 返回的数据。如何清除每个新请求的缓存?