| |
| |
| |
| |
| |
|
|
| import pandas as pd |
|
|
|
|
| def dataset_shake(dataset_name, new_dataset_name, random_rate=10): |
| |
| process_df = pd.read_csv(f'data/{dataset_name}/generated_process_data.csv') |
| employee_df = pd.read_csv( |
| f'data/{dataset_name}/generated_employee_usage.csv') |
| material_df = pd.read_csv( |
| f'data/{dataset_name}/generated_material_usage.csv') |
| capitalcost_df = pd.read_csv( |
| f'data/{dataset_name}/generated_captial_cost.csv') |
|
|
| |
| |
| example_employee_ids = range(0, 12) |
| example_employee_name = ['A', 'B', "C", "D", |
| "E", "F", "G", "H", "I", "J", "K", "L"] |
| example_cost = [27769.652, 20508.323, 811.6214, 547.8455, |
| 392.4559, 372.7312, 354.8132, 2682.522, |
| 2451.125, 24071.33, 22683.42, 22683.42] |
| example_day_amount = [26, 26, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7] |
|
|
| picking_df = employee_df[employee_df['employee_name'] |
| == "ตัวแทนพนักงานเฉลี่ยคลังที่ 2 (ดองน้ำแข็ง)"] |
| example_picking_df = pd.DataFrame({ |
| 'employee_id': example_employee_ids, |
| 'employee_name': example_employee_name, |
| 'cost': example_cost, |
| 'day_amount': example_day_amount |
| }) |
|
|
| example_picking_df['cost'] = example_picking_df['cost'].astype(float) |
| example_picking_df['day_amount'] = example_picking_df['day_amount'].astype( |
| int) |
|
|
| |
| for i in range(len(picking_df)): |
| cost_mod_index = i % 12 |
| coefficient = random_rate / 2 |
| if cost_mod_index % 2 == 0: |
| coefficient = -random_rate / 2 |
| picking_df.loc[i, ['employee_id', 'employee_name', 'cost', 'day_amount'] |
| ] = example_picking_df.loc[cost_mod_index, ['employee_id', 'employee_name', 'cost', 'day_amount']] |
| |
| picking_df.loc[i, 'duration'] = picking_df.loc[i, 'duration'] + \ |
| (coefficient * picking_df.loc[i, 'duration'] / 100) |
|
|
| |
| packing_df = employee_df[employee_df['employee_name'] |
| == "ตัวแทนพนักงานเฉลี่ยคลังที่ 3 (ปูเข้าเป็นกระป๋อง)"] |
| packing_df.reset_index(drop=True, inplace=True) |
| example_employee_ids = range(12, 24) |
| example_employee_name = ['M', 'N', "O", "P", |
| "Q", "R", "S", "T", "U", "V", "W", "X"] |
| example_cost = [37769.652, 30508.323, 311.6214, 647.8455, |
| 492.4559, 472.7312, 454.8132, 3682.522, |
| 3451.125, 34071.33, 22683.42, 32683.42] |
| example_day_amount = [26, 26, 1, 1, 1, 1, 1, 7, 7, 7, 7, 7] |
|
|
| example_packing_df = pd.DataFrame({ |
| 'employee_id': example_employee_ids, |
| 'employee_name': example_employee_name, |
| 'cost': example_cost, |
| 'day_amount': example_day_amount |
| }) |
| example_packing_df['cost'] = example_packing_df['cost'].astype(float) |
| example_packing_df['day_amount'] = example_packing_df['day_amount'].astype( |
| int) |
|
|
| |
| for i in range(len(packing_df)): |
| cost_mod_index = i % 12 |
| coefficient = random_rate / 2 |
| if cost_mod_index % 2 == 0: |
| coefficient = -random_rate / 2 |
| packing_df.loc[i, ['employee_id', 'employee_name', 'cost', 'day_amount'] |
| ] = example_packing_df.loc[cost_mod_index, ['employee_id', 'employee_name', 'cost', 'day_amount']] |
| |
| packing_df.loc[i, 'duration'] = packing_df.loc[i, 'duration'] + \ |
| (coefficient * packing_df.loc[i, 'duration'] / 100) |
|
|
| |
| new_employee_df = pd.concat([picking_df, packing_df], ignore_index=True) |
|
|
| |
| new_capital_cost = capitalcost_df.copy() |
| for i in range(len(new_capital_cost)): |
| cost_mod_index = i % random_rate |
| amout_mod_index = i % random_rate / 2 |
| coefficient = 1 |
| if cost_mod_index % 2 == 0: |
| coefficient = -1 |
|
|
| |
| new_capital_cost.loc[i, 'cost'] = new_capital_cost.loc[i, 'cost'] + \ |
| (coefficient * cost_mod_index * |
| new_capital_cost.loc[i, 'cost'] / 100) |
| new_capital_cost.loc[i, 'duration'] = new_capital_cost.loc[i, 'duration'] + ( |
| coefficient * amout_mod_index * new_capital_cost.loc[i, 'duration'] / 100) |
|
|
| |
| new_material_cost = material_df.copy() |
| for i in range(len(new_material_cost)): |
| cost_mod_index = i % random_rate |
| amout_mod_index = i % random_rate / 2 |
| coefficient = 1 |
| if cost_mod_index % 2 == 0: |
| coefficient = -1 |
|
|
| |
| new_material_cost.loc[i, 'unit_cost'] = new_material_cost.loc[i, 'unit_cost'] + ( |
| coefficient * cost_mod_index * new_material_cost.loc[i, 'unit_cost'] / 100) |
| new_material_cost.loc[i, 'amount'] = new_material_cost.loc[i, 'amount'] + ( |
| coefficient * amout_mod_index * new_material_cost.loc[i, 'amount'] / 100) |
|
|
| |
| process_df.to_csv( |
| f'data/{new_dataset_name}/generated_process_data.csv', index=False) |
| new_employee_df.to_csv( |
| f'data/{new_dataset_name}/generated_employee_usage.csv', index=False) |
| new_material_cost.to_csv( |
| f'data/{new_dataset_name}/generated_material_usage.csv', index=False) |
| new_capital_cost.to_csv( |
| f'data/{new_dataset_name}/generated_captial_cost.csv', index=False) |
| |
| print( |
| f"Data from {dataset_name} has been shaken and saved as {new_dataset_name}.") |
|
|