File size: 5,727 Bytes
d4c7aae
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
import pandas as pd
from scipy.stats import variation, iqr


def display_input_variation(
    process_df,
    material_usage_df,
    employee_usage,
    capital_cost_df,
):
    process_des = process_df.describe()

    cost_dict = {
        "data": "Total Cost",
        "records": process_des["cost"]["count"],
        "types": len(process_df["process_id"].unique()),
        "min": process_des["cost"]["min"],
        "mean": round(process_des["cost"]["mean"], 2),
        "max": process_des["cost"]["max"],
        "sd": process_des["cost"]["std"],
        "variation": variation(process_df["cost"]),
        "iqr": iqr(process_df["cost"]),
    }

    material_des = material_usage_df.describe()

    material_amount = {
        "data": "Material Amount",
        "records": material_des["amount"]["count"],
        "types": len(material_usage_df["name"].unique()),
        "min": material_des["amount"]["min"],
        "mean": round(material_des["amount"]["mean"], 2),
        "max": material_des["amount"]["max"],
        "sd": material_des["amount"]["std"],
        "variation": variation(material_usage_df["amount"]),
        "iqr": iqr(material_usage_df["amount"]),
    }

    material_unit_cost = {
        "data": "Material Unit Cost",
        "records": material_des["unit_cost"]["count"],
        "types": len(material_usage_df["name"].unique()),
        "min": material_des["unit_cost"]["min"],
        "mean": round(material_des["unit_cost"]["mean"], 2),
        "max": material_des["unit_cost"]["max"],
        "sd": material_des["unit_cost"]["std"],
        "variation": variation(material_usage_df["unit_cost"]),
        "iqr": iqr(material_usage_df["unit_cost"]),
    }

    employee_usage["duration"] = (
        employee_usage["duration"] * employee_usage["amount"]
    )
    ec_des = employee_usage.describe()

    ec_unit_cost = {
        "data": "Labor Unit Cost",
        "records": ec_des["cost"]["count"],
        "types": len(employee_usage["employee_name"].unique()),
        "min": ec_des["cost"]["min"],
        "mean": round(ec_des["cost"]["mean"], 2),
        "max": ec_des["cost"]["max"],
        "sd": ec_des["cost"]["std"],
        "variation": variation(employee_usage["cost"]),
        "iqr": iqr(employee_usage["cost"]),
    }

    ec_duration = {
        "data": "Labor Duration",
        "records": ec_des["duration"]["count"],
        "types": len(employee_usage["employee_name"].unique()),
        "min": ec_des["duration"]["min"],
        "mean": round(ec_des["duration"]["mean"], 2),
        "max": ec_des["duration"]["max"],
        "sd": ec_des["duration"]["std"],
        "variation": variation(employee_usage["duration"]),
        "iqr": iqr(employee_usage["duration"]),
    }

    ec_day_amount = {
        "data": "Labor Day Amount",
        "records": ec_des["day_amount"]["count"],
        "types": len(employee_usage["employee_name"].unique()),
        "min": ec_des["day_amount"]["min"],
        "mean": round(ec_des["day_amount"]["mean"], 2),
        "max": ec_des["day_amount"]["max"],
        "sd": ec_des["day_amount"]["std"],
        "variation": variation(employee_usage["day_amount"]),
        "iqr": iqr(employee_usage["day_amount"]),
    }

    capital_des = capital_cost_df.describe()

    cc_unit_cost = {
        "data": "Capital Cost",
        "records": capital_des["cost"]["count"],
        "types": len(capital_cost_df["name"].unique()),
        "min": capital_des["cost"]["min"],
        "mean": round(capital_des["cost"]["mean"], 2),
        "max": capital_des["cost"]["max"],
        "sd": capital_des["cost"]["std"],
        "variation": variation(capital_cost_df["cost"]),
        "iqr": iqr(capital_cost_df["cost"])
    }

    cc_dayamount = {
        "data": "Capital Cost Day Amount",
        "records": capital_des["day_amount"]["count"],
        "types": len(capital_cost_df["name"].unique()),
        "min": capital_des["day_amount"]["min"],
        "mean": round(capital_des["day_amount"]["mean"], 2),
        "max": capital_des["day_amount"]["max"],
        "sd": capital_des["day_amount"]["std"],
        "variation": variation(capital_cost_df["day_amount"]),
        "iqr": iqr(capital_cost_df["day_amount"])
    }

    cc_duration = {
        "data": "Capital Cost Duration",
        "records": capital_des["duration"]["count"],
        "types": len(capital_cost_df["name"].unique()),
        "min": capital_des["duration"]["min"],
        "mean": round(capital_des["duration"]["mean"], 2),
        "max": capital_des["duration"]["max"],
        "sd": capital_des["duration"]["std"],
        "variation": variation(capital_cost_df["duration"]),
        "iqr": iqr(capital_cost_df["duration"])
    }

    data_variation = pd.DataFrame(
        [
            cost_dict,
            material_unit_cost,
            material_amount,
            ec_unit_cost,
            ec_duration,
            ec_day_amount,
            cc_unit_cost,
            cc_dayamount,
            cc_duration,
        ]
    )

    # try:
    #     display(data_variation)
    # except:
    #     print("Not Run in Jupyter Notebook")
    #     print(data_variation)
    return data_variation


def display_input_variation_by_directory(folder_name):
    process_df = pd.read_csv(f"{folder_name}/generated_process_data.csv")
    material_usage_df = pd.read_csv(
        f"{folder_name}/generated_material_usage.csv")
    employee_usage_df = pd.read_csv(
        f"{folder_name}/generated_employee_usage.csv")
    capital_cost_df = pd.read_csv(f"{folder_name}/generated_captial_cost.csv")

    result_variation = display_input_variation(
        process_df,
        material_usage_df,
        employee_usage_df,
        capital_cost_df,
    )

    return result_variation