import gradio as gr import pandas as pd import numpy as np from transformers import pipeline from sklearn.impute import SimpleImputer from sklearn.ensemble import IsolationForest import subprocess import sys # التحقق من تثبيت PyTorch أو TensorFlow try: import torch except ImportError: print("PyTorch غير مثبت، سيتم تثبيته الآن.") subprocess.check_call([sys.executable, "-m", "pip", "install", "torch"]) try: import tensorflow except ImportError: print("TensorFlow غير مثبت، سيتم تثبيته الآن.") subprocess.check_call([sys.executable, "-m", "pip", "install", "tensorflow"]) # تحميل نموذج التلخيص من Hugging Face summarizer = pipeline("summarization", model="t5-small") def analyze_data_quality(file): df = pd.read_csv(file.name) # البحث عن القيم الناقصة missing_values = df.isnull().sum() missing_summary = missing_values[missing_values > 0].to_string() # البحث عن القيم الشاذة باستخدام Isolation Forest clf = IsolationForest(contamination=0.05, random_state=42) outliers = clf.fit_predict(df.select_dtypes(include=[np.number])) outlier_count = (outliers == -1).sum() # تلخيص النتائج report = f"🔍 تحليل جودة البيانات:\n\n" report += f"📌 عدد القيم الناقصة: {missing_values.sum()}\n" report += f"📌 عدد القيم الشاذة: {outlier_count}\n" report += "\n📊 تفاصيل القيم الناقصة:\n" + missing_summary if missing_summary else "\n✅ لا توجد قيم ناقصة." summary = summarizer(report, max_length=100, do_sample=False)[0]['summary_text'] return summary def clean_data(file): df = pd.read_csv(file.name) # معالجة القيم الناقصة بالتعبئة imputer = SimpleImputer(strategy="mean") df[df.select_dtypes(include=[np.number]).columns] = imputer.fit_transform(df.select_dtypes(include=[np.number])) # إزالة القيم الشاذة clf = IsolationForest(contamination=0.05, random_state=42) outliers = clf.fit_predict(df.select_dtypes(include=[np.number])) df_cleaned = df[outliers != -1] cleaned_file = "cleaned_data.csv" df_cleaned.to_csv(cleaned_file, index=False) return cleaned_file # إنشاء واجهة Gradio with gr.Blocks() as app: gr.Markdown("## 🛠️ محلل جودة البيانات") file_input = gr.File(label="📂 رفع ملف CSV") analysis_output = gr.Textbox(label="📊 تقرير جودة البيانات") cleaned_file_output = gr.File(label="✅ تحميل البيانات المنظفة") analyze_button = gr.Button("🔍 تحليل الجودة") clean_button = gr.Button("🧹 تنظيف البيانات") analyze_button.click(analyze_data_quality, inputs=file_input, outputs=analysis_output) clean_button.click(clean_data, inputs=file_input, outputs=cleaned_file_output) app.launch()