Zuletzt aktiv 10 months ago

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

Änderung 5591e1d5e33e2e7fa01071a7c065cfd34f9042f0

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