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