Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/rust/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何绘制分组要素的堆叠条形图?_Python_Pandas_Matplotlib - Fatal编程技术网

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)
工作得很有魅力@麦克斯韦很高兴这对你有用,谢谢你接受了答案。另外,如果您认为它有用的话,请随意投票。@Maxwell
dfg=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