Python 如何绘制分组要素的堆叠条形图?
我有以下数据帧:Python 如何绘制分组要素的堆叠条形图?,python,pandas,matplotlib,Python,Pandas,Matplotlib,我有以下数据帧: Part_Number Serial_Number Timestamp Feature Machine Tool Rework PN1 100 9/9/2020 8:26 FEAT_FN_H30 H10 93 1 PN1 101 9/9/2020 9:05 FEAT1_FN_H12 G3 85 2 PN1 102 9/9/2020 9:29 FEAT_F
Part_Number Serial_Number Timestamp Feature Machine Tool Rework
PN1 100 9/9/2020 8:26 FEAT_FN_H30 H10 93 1
PN1 101 9/9/2020 9:05 FEAT1_FN_H12 G3 85 2
PN1 102 9/9/2020 9:29 FEAT_FN_H23 H4 81 1
PN1 103 9/9/2020 10:53 FEAT1_FN_H15 H7 24 3
PN1 104 9/9/2020 10:53 FEAT1_FN_H17 H7 24 3
PN1 105 9/9/2020 10:53 FEAT1_FN_H19 24 1
PN1 106 9/9/2020 12:03 FEAT1_LF_LOC_BE F7 6 2
PN1 107 9/9/2020 12:03 FEAT1_LF_LOC_FN 12
PN1 108 9/9/2020 12:33 FEAT_FN_H42 93 2
PN1 109 9/9/2020 12:33 FEAT_FN_H43 H10 83 1
PN1 110 9/9/2020 12:33 FEAT_FN_H44 H10 83 1
PN1 111 9/9/2020 12:33 FEAT_FN_H45 H10 83 1
PN1 112 9/9/2020 12:33 FEAT_FN_H46 H10 83 1
我需要的是一个条形图,其中包含为每个功能执行的返工总和
然后,我需要用哪台机器对该特性执行这些重写来分解该条。我试图上传我正在寻找的照片,但一直收到一个错误。- 所需的功能并聚合
总和
- 分组的
格式从长到宽数据帧
- 删除取消堆叠时创建的多级列名的级别0
- 绘制堆叠的条形图,并使用
- 如果您有大量的
,请使用'Feature'
作为水平条,根据需要调整.barh
,并将figsize
更改为plt.xlabel(“返工”)
ylabel
- 如果您有大量的
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
#读取数据
df=pd.read\u csv('test.csv'))
#显示(df)
零件号序列号时间戳特征机床返工
0 PN1100 9/9/2020 8:26壮举FN\u H30 H10 93.0 1
1 PN1019/9/2020 9:05功能1\u FN\u H12 G3 85.0 2
2 PN1019/9/2020 9:05功能1\u FN\u H12 G3 85.0 3
3 PN1019/9/2020 9:05 FEAT1_FN_H12 G4 85.0 2
4 PN1 102 9/9/2020 9:29壮举FN_H23 H4 81.0 1
5 PN1 103 9/9/2020 10:53 FEAT1_FN_H15 H7 24.0 3
6 PN11049/9/2020 10:53 FEAT1_FN_H17 H7 24.0 3
7 PN11059/9/2020 10:53 FEAT1_FN_H19 NaN 24.0 1
8 PN1 106 9/9/2020 12:03功能1\u LF\u LOC\u BE F7 6.0 2
9 PN1 107 9/9/2020 12:03 FEAT1_LF_LOC_FN南南12
10 PN1 108 9/9/2020 12:33壮举42南93.0 2
11 PN1 109 9/9/2020 12:33壮举43 H10 83.0 1
12 PN11109/9/2020 12:33壮举44 H1083.01
13 PN1119/9/2020 12:33壮举45 H1083.01
14 PN11129/9/2020 12:33壮举46 H10 83.0 1
#groupby和sum
dfg=df.groupby(['Feature','Machine']).agg({'Rework':sum}).unstack()
#固定列名
dfg.columns=dfg.columns.droplevel(0)
#按行和对索引进行排序
dfg=dfg.reindex(dfg.sum(轴=1).排序值(升序=False).索引)
#绘制前五名
dfg.head().plot.bar(stacked=True,figsize=(8,5),grid=True)
plt.ylabel(“返工”)
plt.legend(title=dfg.columns.name,bbox\u to\u anchor=(1.05,1),loc='左上角')
测试数据
- 为测试添加了额外的数据,因为没有多个
生成带有'Machine'
的示例'Feature'
- 所需的功能并聚合
总和
- 分组的
格式从长到宽数据帧
- 删除取消堆叠时创建的多级列名的级别0
- 绘制堆叠的条形图,并使用
- 如果您有大量的
,请使用'Feature'
作为水平条,根据需要调整.barh
,并将figsize
更改为plt.xlabel(“返工”)
ylabel
- 如果您有大量的
将熊猫作为pd导入
将matplotlib.pyplot作为plt导入
#读取数据
df=pd.read\u csv('test.csv'))
#显示(df)
零件号序列号时间戳特征机床返工
0 PN1100 9/9/2020 8:26壮举FN\u H30 H10 93.0 1
1 PN1019/9/2020 9:05功能1\u FN\u H12 G3 85.0 2
2 PN1019/9/2020 9:05功能1\u FN\u H12 G3 85.0 3
3 PN1019/9/2020 9:05 FEAT1_FN_H12 G4 85.0 2
4 PN1 102 9/9/2020 9:29壮举FN_H23 H4 81.0 1
5 PN1 103 9/9/2020 10:53 FEAT1_FN_H15 H7 24.0 3
6 PN11049/9/2020 10:53 FEAT1_FN_H17 H7 24.0 3
7 PN11059/9/2020 10:53 FEAT1_FN_H19 NaN 24.0 1
8 PN1 106 9/9/2020 12:03功能1\u LF\u LOC\u BE F7 6.0 2
9 PN1 107 9/9/2020 12:03 FEAT1_LF_LOC_FN南南12
10 PN1 108 9/9/2020 12:33壮举42南93.0 2
11 PN1 109 9/9/2020 12:33壮举43 H10 83.0 1
12 PN11109/9/2020 12:33壮举44 H1083.01
13 PN1119/9/2020 12:33壮举45 H1083.01
14 PN11129/9/2020 12:33壮举46 H10 83.0 1
#groupby和sum
dfg=df.groupby(['Feature','Machine']).agg({'Rework':sum}).unstack()
#固定列名
dfg.columns=dfg.columns.droplevel(0)
#按行和对索引进行排序
dfg=dfg.reindex(dfg.sum(轴=1).排序值(升序=False).索引)
#绘制前五名
dfg.head().plot.bar(stacked=True,figsize=(8,5),grid=True)
plt.ylabel(“返工”)
plt.legend(title=dfg.columns.name,bbox\u to\u anchor=(1.05,1),loc='左上角')
测试数据
- 为测试添加了额外的数据,因为没有多个
生成带有'Machine'
的示例'Feature'
这回答了你的问题吗?这回答了你的问题吗?这回答了你的问题吗?这回答了你的问题吗@麦克斯韦
dfg=dfg.reindex(dfg.sum(axis=1).排序值(升序=False).索引).head(5)
工作得很有魅力@麦克斯韦很高兴这对你有用,谢谢你接受了答案。另外,如果您认为它有用的话,请随意投票。@Maxwelldfg=dfg.reindex(dfg.sum(axis=1.s
Part_Number,Serial_Number,Timestamp,Feature,Machine,Tool,Rework
PN1,100,9/9/2020 8:26,FEAT_FN_H30,H10,93,1
PN1,101,9/9/2020 9:05,FEAT1_FN_H12,G3,85,2
PN1,101,9/9/2020 9:05,FEAT1_FN_H12,G3,85,3
PN1,101,9/9/2020 9:05,FEAT1_FN_H12,G4,85,2
PN1,102,9/9/2020 9:29,FEAT_FN_H23,H4,81,1
PN1,103,9/9/2020 10:53,FEAT1_FN_H15,H7,24,3
PN1,104,9/9/2020 10:53,FEAT1_FN_H17,H7,24,3
PN1,105,9/9/2020 10:53,FEAT1_FN_H19,,24,1
PN1,106,9/9/2020 12:03,FEAT1_LF_LOC_BE,F7,6,2
PN1,107,9/9/2020 12:03,FEAT1_LF_LOC_FN,,,12
PN1,108,9/9/2020 12:33,FEAT_FN_H42,,93,2
PN1,109,9/9/2020 12:33,FEAT_FN_H43,H10,83,1
PN1,110,9/9/2020 12:33,FEAT_FN_H44,H10,83,1
PN1,111,9/9/2020 12:33,FEAT_FN_H45,H10,83,1
PN1,112,9/9/2020 12:33,FEAT_FN_H46,H10,83,1