如何解决对列进行分组后在python中绘制饼图
我是 python 和 matplotlib 的新手,正在寻求帮助。
我有以下示例数据和我尝试过的程序。
我正在尝试为列“阶段”和“峰值”以及 pei 中的数据构建多个饼图,将“组件”作为标签,将“发生”作为总和。
在给定的数据中,“Phase”和“Peak”是“Component”运行的组合。每个组件都有自己的出现次数。 例如:
- Phase1、Peak1、Comp1 执行 35 次读取操作。
- Phase1、Peak2、Comp1 执行 45 次读取操作。
- Phase1、Peak3、Comp1 执行 54 次读取操作。
- Phase2、Peak1、Comp1,执行 33 次写入操作
在这里您可以看到 Comp1 是常见的,它在不同的“阶段”和“峰值”上运行。
我想将一个饼图分组为一组相位、峰值、操作。
查看一个饼图,我应该知道哪个组件在相位和峰值上执行大量读取。另一个用于写入等的饼图。
数据是动态的。含义、阶段、峰值不断变化。所以饼图应该是动态的。
该场景就像,组件在其中一个 TEST 阶段运行。测试阶段将在其中一个峰值上。我们需要识别所有正在执行读/写操作的组件。 你可以想象一个 TEST 阶段是一个服务器。 Peak 是另一个运行 TEST 服务器的服务器。 这只是服务器的分类。
所以它就像 PEAK->PHASE->Component 做读/写操作。
饼图应该让我们了解哪个组件在哪个相位和峰值上执行更多/更少的读/写操作。
#Paste below code in https://www.w3schools.com/python/trypandas.asp?filename=demo_pandas_csv
#Three lines to make our compiler able to draw:
import sys
import matplotlib
matplotlib.use('Agg')
import pandas as pd
import matplotlib.pyplot as plt
data = {"Phase": ["TEST","TEST","TEST2","TEST3","TEST4","TEST5"],"Peak": [1,1,2,2],"Component": ["COMP1","COMP2","COMP3","COMP4","COMP5","COMP6","COMP7","COMP8","COMP9","COMP10","COMP11","COMP12","COMP13","COMP14","COMP15"],"Operation": ["READ","READ","WRITE","WRITE"],"Occurrences":
[4343,546,232,6675,343,7676,2323,565,676,45,223,44]}
df = pd.DataFrame(data)
print(df.Occurrences.groupby(df.Component).sum())
print(df.groupby(['Component','Occurrences','Phase','Operation']).sum())
plt.pie(df['Occurrences'],labels=df['Component'],autopct="%.2f")
#plt.axes().set_aspect("equal")
#plt.show()
#df.groupby(['Phase','Operation'])['Counter'].sum().plot.pie(subplots=True,autopct='%.1f%%')
#Two lines to make our compiler able to draw:
plt.savefig(sys.stdout.buffer)
sys.stdout.flush()
使用上述代码,我无法按照上述说明对其进行分组。我想对于 python 和 matplotlib 专家来说,这是一项简单的任务。期待一些帮助。谢谢。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。