Spaces:
Sleeping
Sleeping
import pandas as pd | |
import gradio as gr | |
# โหลดข้อมูลจากไฟล์ Excel ที่อยู่ในโค้ด | |
def load_data(): | |
# แทนที่ "path_to_your_file.xlsx" ด้วยพาธไฟล์ Excel ของคุณ | |
data = pd.read_excel("./BT-Engage-ขาวคาดแดง.xlsx") | |
return data | |
# ฟังก์ชันสำหรับกรองข้อมูลพร้อมจัดการกับข้อผิดพลาด | |
def filter_data(columns, budget_order, office_filter, ministry_filter, | |
citizen_service, digital_government, data_service, ai, cloud_security, | |
cybercrime, learning_center): | |
# โหลดข้อมูล | |
data = load_data() | |
# เลือกคอลัมน์ที่จะใช้ | |
if columns: | |
data = data[columns] | |
# เรียงลำดับงบประมาณ | |
if budget_order == 'น้อยไปมาก': | |
data = data.sort_values('งบประมาณ', ascending=True) | |
elif budget_order == 'มากไปน้อย': | |
data = data.sort_values('งบประมาณ', ascending=False) | |
# กรองสำนักงาน | |
if office_filter != "ทั้งหมด": | |
data = data[data['สำนักงาน'] == office_filter] | |
# กรองกระทรวง | |
if ministry_filter != "ทั้งหมด": | |
data = data[data['กระทรวง'] == ministry_filter] | |
# ฟิลเตอร์สำหรับคอลัมน์ Y/N โดยตรวจสอบการมีอยู่ของคอลัมน์และค่าที่กรองได้ | |
yn_columns = { | |
'Citizen Service & Doing Business': citizen_service, | |
'Digital Government': digital_government, | |
'Data Service': data_service, | |
'AI': ai, | |
'Cloud & Security': cloud_security, | |
'Cybercrime': cybercrime, | |
'Learning Center/Museum/Environmental/Forest': learning_center | |
} | |
for col, yn_filter in yn_columns.items(): | |
if yn_filter != "ไม่กรอง": | |
# ตรวจสอบว่าคอลัมน์มีอยู่ในข้อมูลหรือไม่และฟิลเตอร์ค่า Y หรือ N | |
if col in data.columns: | |
data = data[data[col].fillna('') == yn_filter] | |
return data | |
# โหลดข้อมูลสำหรับตัวเลือกในดรอปดาวน์ | |
data = load_data() | |
offices = ["ทั้งหมด"] + sorted(data['สำนักงาน'].dropna().unique().tolist()) | |
ministries = ["ทั้งหมด"] + sorted(data['กระทรวง'].dropna().unique().tolist()) | |
# การตั้งค่าอินเตอร์เฟซ Gradio | |
with gr.Blocks() as demo: | |
gr.Markdown("# Data Viewer and Filter") | |
column_selector = gr.CheckboxGroup( | |
choices=['ชื่อโครงการ', 'งบประมาณ', 'วัตถุประสงค์', 'สถานที่ดำเนินการ', | |
'ระยะเวลาดำเนินการ', 'สำนักงาน', 'กระทรวง', | |
'Citizen Service & Doing Business', 'Digital Government', | |
'Data Service', 'AI', 'Cloud & Security', 'Cybercrime', | |
'Learning Center/Museum/Environmental/Forest'], | |
label="เลือกคอลัมน์ที่ต้องการแสดง") | |
budget_order = gr.Radio(["น้อยไปมาก", "มากไปน้อย", "ไม่เรียงลำดับ"], label="เรียงลำดับงบประมาณ") | |
office_filter = gr.Dropdown(choices=offices, label="เลือกสำนักงาน") | |
ministry_filter = gr.Dropdown(choices=ministries, label="เลือกกระทรวง") | |
yn_filter_labels = [ | |
'Citizen Service & Doing Business', 'Digital Government', | |
'Data Service', 'AI', 'Cloud & Security', 'Cybercrime', | |
'Learning Center/Museum/Environmental/Forest' | |
] | |
yn_filters = {} | |
for label in yn_filter_labels: | |
yn_filters[label] = gr.Radio(["ไม่กรอง", "Y", "N"], label=label, value="ไม่กรอง") | |
submit_button = gr.Button("Filter Data") | |
output_data = gr.Dataframe(label="ผลลัพธ์ข้อมูลที่กรองแล้ว") | |
submit_button.click( | |
filter_data, | |
inputs=[column_selector, budget_order, office_filter, ministry_filter] + list(yn_filters.values()), | |
outputs=output_data | |
) | |
# รันแอปพลิเคชัน Gradio | |
demo.launch() | |