pgx
PGX — Lightweight Postgres for AI agents. Written in Rust. Thousands of isolated databases in one runtime. 🐘
翻譯準備中
尚未偵測到更新。GitHub 發布版本後會顯示在這裡。
個人 GitHub 帳號下公開儲存庫的擁有者可以登入並驗證所有權,自行管理介紹,無需管理員核准。
登入並產生驗證檔案,在 30 分鐘內將其提交至此儲存庫的預設分支。其他分支或分叉儲存庫中的檔案無效。然後在下方檢查檔案,即可無需管理員核准直接管理專案。請保留檔案以維持管理權限。
如需登入,將前往登入頁面。登入後請回到此處,再次點擊所選的驗證按鈕。
在專案資料夾中執行 /nomorevibe verify,即可驗證所有權並自行管理介紹。
一分鐘完成驗證Sales analytics project: data cleaning, EDA, insights, ML forecast, BigQuery SQL and an in-browser dashboard that analyzes your own CSV/Excel files
翻譯準備中
取自儲存庫 README
正在載入完整 README。
檢視完整 README ↗مشروع تحليل بيانات كامل لملف مبيعات Kafaat.csv:
تنظيف ← تحليل استكشافي ← رسوم بيانية ← نموذج توقع ← لوحة تفاعلية ← نسخة سحابية على BigQuery و Looker Studio.
| المؤشر | القيمة |
|---|---|
| الفترة | 2004-06-17 → 2006-06-16 |
| الصفقات (بعد التنظيف) | 1,992 من 1,998 |
| إجمالي المبيعات | 10,035,789 ريال |
| إجمالي الربح | 3,766,212 ريال |
| هامش الربح | 37.5% |
الرؤى والتوصيات الكاملة في output/insights.md.
🔗 maram-almutairi.github.io/kafaat-sales-analytics
صفحة المشروع باللغة الإنجليزية وبنفس تصميم البورتفوليو، وفيها:
01_clean.py ويظهر تقرير بالصفوف المحذوفة.الصفحة ملف ثابت (index.html + site/)، بدون مكتبات خارجية: الرسوم مكتوبة بـ JavaScript، ومكتبة قراءة Excel (SheetJS 0.20.3) محفوظة داخل الـ repo.
| # | المرحلة | الملف | المخرجات |
|---|---|---|---|
| 1 | تنظيف البيانات | scripts/01_clean.py | data/Kafaat_Cleaned.csv, output/cleaning_report.md |
| 2 | التحليل الاستكشافي | scripts/02_eda.py | output/*_summary.csv, monthly_trend.csv, margin_tiers.csv |
| 3 | الرسوم البيانية | scripts/03_visualization.py | output/figures/*.png |
| 4 | نموذج التوقع | scripts/04_ml_model.py | output/ml_*.csv, 07_feature_importance.png |
| 5 | لوحة المعلومات | dashboard/app.py | تطبيق Streamlit |
| 6 | السحابة | sql/*.sql | جداول BigQuery + Looker Studio |
Kafaat_Cleaned.csv "بدون إضافة أعمدة"، والمتطلبات تطلب إضافة Profit و Margin_% و Year و Month و Weekday.
⇐ الملف النظيف يحتفظ بالأعمدة السبعة الأصلية فقط، والأعمدة المشتقة تُحسب في scripts/utils.py → load_clean() (وفي BigQuery عبر view v_sales) حتى يحسبها الجميع بنفس الطريقة.Mjeeed ⇐ Mjeed و Lulu Hyper ⇐ Lulu (صُححت ولم تُحذف).scripts/utils.py (دوال مشتركة)، store_summary.csv، margin_tiers.csv، city_product_matrix.csv، ورسم مستويات الهامش، لأن مستويات الهامش الثابتة هي أهم اكتشاف في البيانات.kafaat/
├── data/
│ ├── Kafaat.csv الملف الأصلي
│ └── Kafaat_Cleaned.csv الملف النظيف (7 أعمدة، التاريخ بصيغة YYYY-MM-DD)
├── scripts/
│ ├── utils.py قواعد التنظيف clean_raw() + load_clean() + summarize()
│ ├── 01_clean.py التنظيف + تقرير الصفوف المحذوفة (القواعد في utils.clean_raw)
│ ├── 02_eda.py التحليل الاستكشافي + الجداول الملخصة
│ ├── 03_visualization.py 6 رسوم بيانية
│ └── 04_ml_model.py Linear Regression + Random Forest
├── sql/
│ ├── 01_create_table.sql الجدول الخام + الجدول النظيف + view التحليل
│ ├── 02_eda_queries.sql استعلامات التحليل
│ └── 03_advanced_queries.sql Window Functions + BigQuery ML
├── dashboard/
│ └── app.py Streamlit Dashboard (نسخة Python محلية)
├── output/
│ ├── city_summary.csv rep_summary.csv store_summary.csv product_summary.csv
│ ├── monthly_trend.csv margin_tiers.csv city_product_matrix.csv
│ ├── ml_metrics.csv ml_feature_importance.csv ml_forecast.csv
│ ├── cleaning_report.md eda_log.txt
│ ├── insights.md الرؤى والتوصيات
│ └── figures/ 01..07 *.png
├── index.html صفحة GitHub Pages
├── site/ style.css + app.js + vendor/xlsx.full.min.js + logo.png
├── README.md
└── requirements.txt
python -m venv .venv
.venv\Scripts\activate # Windows (Linux/Mac: source .venv/bin/activate)
pip install -r requirements.txt
python scripts/01_clean.py
python scripts/02_eda.py
python scripts/03_visualization.py
python scripts/04_ml_model.py
streamlit run dashboard/app.py # http://localhost:8501
الترتيب مهم، لأن كل خطوة تقرأ مخرجات الخطوة التي قبلها.
| الخطوة | المحذوف | السبب |
|---|---|---|
| Cost أو Sale فارغ | 2 | قيمة فارغة / مسافات فقط |
| قيم شاذة | 1 | Cost = 50,000,000 (خارج Q3 + 3×IQR) |
| تواريخ شاذة | 3 | 2014–2015 بعيدة 8 سنوات عن باقي البيانات |
| مكررات | 0 | — |
| المجموع | 6 (0.3%) |
Excel serial → 1899-12-30 + n يوم.output/cleaning_report.md.| البُعد | الأعلى مبيعاً | الأعلى ربحاً / هامشاً | الأضعف |
|---|---|---|---|
| المدينة | الدمام 1.86M | الرياض 709K (39.6%) | حائل 1.47M |
| المندوب | Yahia 2.17M | Ghalia هامش 38.6% | Abdul 1.82M (36.5%) |
| المتجر | كارفور 2.62M | بنده هامش 38.4% | كارفور أقل هامش 36.8% |
| المنتج | Food 2.68M | Office هامش 38.1% | Home 2.30M |
أنشئ مشروعاً في Google Cloud Console وفعّل BigQuery API.
ثبّت Google Cloud CLI ثم:
gcloud auth login
gcloud config set project <PROJECT_ID>
أنشئ الـ dataset والجدول الخام (أول جزأين من sql/01_create_table.sql):
bq mk --location=US kafaat
ارفع الملف الأصلي كما هو (كل الأعمدة STRING، والتنظيف يتم داخل BigQuery):
bq load --source_format=CSV --skip_leading_rows=1 --replace \
kafaat.sales_raw data/Kafaat.csv \
Date:STRING,City:STRING,Rep:STRING,Store:STRING,Prod:STRING,Cost:STRING,Sale:STRING
نفّذ باقي sql/01_create_table.sql في BigQuery Console. ينتج عنه:
kafaat.sales_clean: جدول نظيف مقسّم (partitioned) بالشهر ومجمّع (clustered) بالمدينة والمنتجkafaat.v_sales: view فيه Profit و Margin_Pct و Year و Month و Weekdayاستعلام التدقيق في آخر الملف يجب أن يعطي rows_clean = 1992.
نفّذ sql/02_eda_queries.sql و sql/03_advanced_queries.sql. الاستعلام 9 في الملف الأخير يدرّب نموذج BigQuery ML ARIMA_PLUS للتوقع داخل السحابة.
kafaat ← v_sales.Margin % = SUM(Profit) / SUM(Sale) (النوع Percent)Low-margin deals % = SUM(CASE WHEN Margin_Pct < 15 THEN 1 ELSE 0 END) / COUNT(Sale)sales_raw ثم أعد إنشاء sales_clean عبر Scheduled query في BigQuery (مثلاً يومياً).| الطريقة | الوصف |
|---|---|
| GitHub Pages (المستخدَم حالياً) | Settings ← Pages ← Source = Deploy from a branch، Branch = main / (root). أي git push جديد يحدّث الموقع خلال دقيقة. |
| Streamlit (محلياً) | streamlit run dashboard/app.py: نسخة Python من اللوحة بنفس قواعد التنظيف. |
| Looker Studio | القسم 6 أعلاه: بدون كود، ويُشارك برابط. |
pandas, numpy, matplotlib, seaborn, scikit-learn, streamlit, plotly. التفاصيل في requirements.txt (تم الاختبار على Python 3.12).