Ultima attività 10 months ago

此程式使用 Streamlit 讀取、編輯並儲存員工資料至 YAML 檔案,提供直覺化 UI 介面,並支援欄位過濾與年齡篩選,適用於企業資料管理。

timmy ha revisionato questo gist 10 months ago. Vai alla revisione

Nessuna modifica

timmy ha revisionato questo gist 2 years ago. Vai alla revisione

1 file changed, 21 insertions, 21 deletions

edit_employee_data.py

@@ -3,53 +3,53 @@ import pandas as pd
3 3 import yaml
4 4 from yaml.loader import SafeLoader
5 5
6 - # Read YAML file
6 + # 讀取 YAML 檔案
7 7 def read_yaml(file_path):
8 8 with open(file_path, 'r') as file:
9 9 data = yaml.load(file, Loader=SafeLoader)
10 10 return data
11 11
12 - # Write to YAML file
12 + # 寫入 YAML 檔案
13 13 def write_yaml(file_path, data):
14 14 with open(file_path, 'w') as file:
15 15 yaml.dump(data, file)
16 16
17 - # Read data
17 + # 讀取資料
18 18 yaml_file = 'data.yaml'
19 19 data = read_yaml(yaml_file)
20 20
21 - # Convert data to DataFrame
21 + # 轉換資料為 DataFrame
22 22 df = pd.DataFrame(data['employees'])
23 23
24 - # Display DataFrame
25 - st.write('## Employee Data Table')
24 + # 顯示 DataFrame
25 + st.write('## 員工資料表')
26 26 st.write(df)
27 27
28 - # Allow user to edit data
29 - st.write('## Edit Employee Data')
30 - edited_df = st.data_editor(df)
28 + # 允許用戶編輯資料,並隱藏 City 欄位
29 + st.write('## 編輯員工資料')
30 + edited_df = st.data_editor(df.drop(columns=['City']))
31 31
32 - # When user submits edits, write data back to YAML file
33 - if st.button('Save Changes'):
32 + # 當用戶提交修改後,將資料寫回 YAML 檔案,但要保留 City 欄位
33 + if st.button('儲存修改'):
34 + edited_df['City'] = df['City'] # 將原始資料中的 City 欄位加回來
34 35 data['employees'] = edited_df.to_dict(orient='records')
35 36 write_yaml(yaml_file, data)
36 - st.success('Changes saved successfully!')
37 + st.success('修改成功儲存!')
37 38
38 - # Hide certain columns
39 + # 隱藏某些欄位
39 40 columns_to_hide = ['Salary']
40 41 df_visible = df.drop(columns=columns_to_hide)
41 42
42 - # Display DataFrame with hidden columns
43 - st.write('## Employee Data Table (Filtered)')
43 + # 顯示隱藏某些欄位後的 DataFrame
44 + st.write('## 員工資料表 (過濾後)')
44 45 st.write(df_visible)
45 46
46 - # Interaction: Slider
47 - age_filter = st.slider('Select age range', 20, 30, (20, 30))
47 + # 互動元素:滑桿
48 + age_filter = st.slider('選擇年齡範圍', 20, 30, (20, 30))
48 49
49 - # Filter DataFrame
50 + # 篩選 DataFrame
50 51 filtered_df = df_visible[(df_visible['Age'] >= age_filter[0]) & (df_visible['Age'] <= age_filter[1])]
51 52
52 - # Display filtered DataFrame
53 - st.write('## Filtered Employee Data Table')
53 + # 顯示篩選後的 DataFrame
54 + st.write('## 過濾後的員工資料表')
54 55 st.write(filtered_df)
55 -

timmy ha revisionato questo gist 2 years ago. Vai alla revisione

2 files changed, 71 insertions

data.yaml(file creato)

@@ -0,0 +1,16 @@
1 + employees:
2 + - Age: 34
3 + City: New York
4 + Name: Alice
5 + Occupation: Engineer
6 + Salary: 70000
7 + - Age: 27
8 + City: Los Angeles
9 + Name: Bob
10 + Occupation: Doctor
11 + Salary: 120000
12 + - Age: 22
13 + City: Chicago
14 + Name: Charlie
15 + Occupation: Artist
16 + Salary: 50000

edit_employee_data.py(file creato)

@@ -0,0 +1,55 @@
1 + import streamlit as st
2 + import pandas as pd
3 + import yaml
4 + from yaml.loader import SafeLoader
5 +
6 + # Read YAML file
7 + def read_yaml(file_path):
8 + with open(file_path, 'r') as file:
9 + data = yaml.load(file, Loader=SafeLoader)
10 + return data
11 +
12 + # Write to YAML file
13 + def write_yaml(file_path, data):
14 + with open(file_path, 'w') as file:
15 + yaml.dump(data, file)
16 +
17 + # Read data
18 + yaml_file = 'data.yaml'
19 + data = read_yaml(yaml_file)
20 +
21 + # Convert data to DataFrame
22 + df = pd.DataFrame(data['employees'])
23 +
24 + # Display DataFrame
25 + st.write('## Employee Data Table')
26 + st.write(df)
27 +
28 + # Allow user to edit data
29 + st.write('## Edit Employee Data')
30 + edited_df = st.data_editor(df)
31 +
32 + # When user submits edits, write data back to YAML file
33 + if st.button('Save Changes'):
34 + data['employees'] = edited_df.to_dict(orient='records')
35 + write_yaml(yaml_file, data)
36 + st.success('Changes saved successfully!')
37 +
38 + # Hide certain columns
39 + columns_to_hide = ['Salary']
40 + df_visible = df.drop(columns=columns_to_hide)
41 +
42 + # Display DataFrame with hidden columns
43 + st.write('## Employee Data Table (Filtered)')
44 + st.write(df_visible)
45 +
46 + # Interaction: Slider
47 + age_filter = st.slider('Select age range', 20, 30, (20, 30))
48 +
49 + # Filter DataFrame
50 + filtered_df = df_visible[(df_visible['Age'] >= age_filter[0]) & (df_visible['Age'] <= age_filter[1])]
51 +
52 + # Display filtered DataFrame
53 + st.write('## Filtered Employee Data Table')
54 + st.write(filtered_df)
55 +
Più nuovi Più vecchi