【发布时间】:2019-02-06 06:54:37
【问题描述】:
我一直在尝试发布一些类似的解决方案,但没有成功。
我正在尝试为我们制造过程中的所有Step No 获取Cost 的直方图。每个部分有不同数量的步骤,所以我想在每个部分的一个图/图像上有一组直方图。
在我的真实数据中有很多部分,所以如果这可以遍历很多部分并保存理想的图表。
此外,我们对要覆盖在直方图上的每个步骤都有一个目标成本。这在一个单独的数据框中表示。我陷入了子图的循环中,所以我还没有尝试过。
到目前为止,这是我的代码:
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_excel('Dist_Example.xlsx')
df1 = df[~df['Cost Type'].isin(['Material'])]
number_of_subplots = len(df1['Step No'].unique())
steps = df1['Step No'].unique()
fig, axs = plt.subplots(1, number_of_subplots, sharey = True, tight_layout=True)
for step in steps:
df2 = df1[df1['Step No'].isin([step])]
axs[step].hist(df2['Cost'])
plt.show()
提前感谢您帮助我!
这是Target Cost 我想在直方图上显示为垂直线:
PartNo StepNo TargetCost
ABC 10 12
ABC 20 20
ABC 30 13
以下是一些示例历史数据,它们应位于直方图中的 bin 中:
PartNo SerialNo StepNo CostType Cost
ABC 123 10 Labor 11
ABC 123 10 Material 16
ABC 456 10 Labor 21
ABC 456 10 Material 26
ABC 789 10 Labor 21
ABC 789 10 Material 16
ABC 1011 10 Labor 11
ABC 1011 10 Material 6
ABC 1112 10 Labor 1
ABC 1112 10 Material -4
ABC 123 20 Labor 11
ABC 123 20 Material 19
ABC 456 20 Labor 24
ABC 456 20 Material 29
ABC 789 20 Labor 24
ABC 789 20 Material 19
ABC 1011 20 Labor 14
ABC 1011 20 Material 9
ABC 1112 20 Labor 4
ABC 1112 20 Material -1
ABC 123 30 Labor 11
ABC 123 30 Material 13
ABC 456 30 Labor 18
ABC 456 30 Material 23
ABC 789 30 Labor 18
ABC 789 30 Material 13
ABC 1011 30 Labor 8
ABC 1011 30 Material 3
ABC 1112 30 Labor -2
ABC 1112 30 Material -7
还有第二个样本数据集:
PartNo SerialNo StepNo CostType Cost
DEF Aplha 10 Labor 2
DEF Zed 10 Labor 3
DEF Kelly 10 Labor 4
DEF Aplha 20 Labor 3
DEF Zed 20 Labor 2
DEF Kelly 20 Labor 5
DEF Aplha 30 Labor 6
DEF Zed 30 Labor 7
DEF Kelly 30 Labor 5
DEF Aplha 40 Labor 3
DEF Zed 40 Labor 4
DEF Kelly 40 Labor 2
DEF Aplha 50 Labor 8
DEF Zed 50 Labor 9
DEF Kelly 50 Labor 7
【问题讨论】:
-
我冒昧地编辑了列名,以便使用
pd.read_clipboard(sep='\\s+')更轻松地获取数据集
标签: python-3.x pandas matplotlib subplot