ساخت یک داشبورد پایتون تعاملی با استفاده از SQL و Datapane

شکل ۱: ساخت یک داشبورد پایتون تعاملی با استفاده از SQL و Datapane
شکل ۱: ساخت یک داشبورد پایتون تعاملی با استفاده از SQL و Datapane
منتشر‌شده در towardsdatascience به تاریخ ۲۲ ژوئن ۲۰۲۱
لینک منبع Building an interactive Python dashboard using SQL and Datapane

زبان SQL یک زبان باور نکردنی است - در دهه ۷۰ میلادی اختراع شد و بسیاری از پروژه‌های جدید پایگاه‌داده مانند رد شیفت، برفلیک، کاکروachDB هنوز هم آن را به عنوان پایه و اساس خود انتخاب می‌کنند زیرا قدرتمند و نسبتا ساده است (حداقل برای شروع). و در حالی که در بازیابی داده برتری دارد، شما معمولا به یک پلتفرم هوش تجاری سازمانی مانند تابلائو یا لوکر نیاز دارید تا نتایج را تجسم کنید.

در این مقاله، من به شما نشان خواهم داد که چگونه SQL و کتابخانه‌های پایتون با منبع باز را ترکیب کنید تا یک داشبورد تعاملی در وب بسازید. این یک تکنیک عالی برای نمونه‌برداری سریع برنامه‌های کاربردی با استفاده از یک پایگاه‌داده است.

مجموعه داده

ما از یک مجموعه داده منبع باز معروف به نام چینوک استفاده خواهیم کرد، که داده‌ها را در مورد خرید در یک فروشگاه موسیقی کوچک در طول چندین سال ذخیره می‌کند. این داده‌ها به عنوان یک پایگاه‌داده SQLLite درون یک فایل واحد ذخیره می‌شود، بنابراین ما می‌توانیم آن را به طور مستقیم از محیط پایتون محلی خود بدون اعتبار دسترسی پرس و جو کنیم.

این یک جدول سریع است که طرح پایگاه‌داده را نشان می‌دهد:

شکل ۲: تصویر از نویسنده با الهام از آرجونچند
شکل ۲: تصویر از نویسنده با الهام از آرجونچند

اگر شما از پانداس می‌آیید و با طرح پایگاه‌داده آشنا نیستید، در اینجا چند نکته وجود دارد:

  • پایگاه‌داده به جداول جداگانه‌ای تقسیم می‌شود که اشیا منطقی مختلف را نشان می‌دهند. به عنوان مثال، تمام مشتریان در پایگاه‌داده‌ی مشتری هستند. این برخلاف پوشش داده Pandas سنتی است، که معمولا تنها یک جدول است.
  • هر جدول دارای مجموعه‌ای از زمینه‌ها است که ویژگی‌های جدول و ردیف‌هایی را تعریف می‌کنند که داده‌های واقعی را ذخیره می‌کنند. اینها درست مانند ستون‌ها و ردیف‌هایی در اکسل هستند.
  • روابط بین جداول با زمینه‌های خاصی به نام کلیدهای خارجی نشان داده می‌شود. برای مثال، هر خط یک album_id دارد که به جدول آلبوم متصل است، به این معنی که هر خط بخشی از یک آلبوم است. هنگامی که ما پایگاه‌داده را جستجو می‌کنیم، اغلب به جداول مختلف با هم بر روی کلیدهای خارجی آن‌ها متصل می‌شویم.

اتصال به پایگاه‌داده

ما با تعریف برخی توابع کمکی برای اتصال به پایگاه‌داده شروع می‌کنیم:

همانطور که می‌توانید ببینید، ما پرسوجوی SQL را به عنوان یک رشته می‌نویسیم و سپس آن را در یک تابع پایتون اجرا می‌کنیم. ترکیب دو زبان مختلف مانند این کمی عجیب و غریب است، اما وقتی آن را به دست آورید به طرز شگفت انگیزی خوب کار می‌کند! اجرای کد بالا تمام نام‌های جدول مختلف در پایگاه‌داده و تعداد سطرها در هر جدول را می‌دهد:

ساخت داشبورد

بنابراین، بیایید تصور کنیم که شما به عنوان یک دانشمند داده در چینوک شروع کرده‌اید، و رئیس شما می‌خواهد که بهترین راه‌های فروش را بداند تا آن‌ها بتوانند آن‌ها را در وب سایت تبلیغ کنند. برای پاسخ به این سوال، ما باید یک نامه پرس و جو مانند این بنویسیم:

ما با انتخاب ستون‌هایی که می‌خواهیم در خروجی ببینیم شروع می‌کنیم. از آنجا که اینها از چهار جدول مختلف می‌آیند (مسیر، آلبوم، هنرمند، فاکتور خط) ، ما باید به جداول روابط کلیدی خارجی بپیوندیم-طرح را بررسی کنید تا ببینید چه چیزی ممکن است. سپس با نام مسیر، سفارش با اکثر خریدها را گروه‌بندی کرده و تنها ۱۰ نتیجه برتر را انتخاب می‌کنیم.

اجرای پرس و جو به ما یک برنامه داده پانداس می‌دهد، که ما سپس آن را در یک بلوک Datatable پنهان می‌کنیم و آن را درDatapane.com منتشر می‌کنیم.

این یک جدول تعاملی تولید می‌کند که می‌تواند توسط کاربر فیلتر و مرتب شود.

پرسش‌های پیچیده‌تر

رئیس که با موفقیت اخیر خود دست و پنجه نرم می‌کند، از ما سوال پیچیده‌تری می‌پرسد: بهترین کارمندان فروش ما چه کسانی هستند، و چه زمانی بیش‌ترین فروش را انجام می‌دهند؟

به جای پاسخ دادن به این سوال با استفاده از جداول، می‌توانیم از یک کتابخانه تجسم پایتون مانند Plotly برای ایجاد نمودارهای تعاملی رضایت‌بخش استفاده کنیم:

این پرس و جو بسیار پیچیده‌تر از پرس و جو قبلی است:

  • ما از strftime برای کوتاه کردن اثر زمانی استفاده می‌کنیم تا بتوانیم هر ماه آن را گروه‌بندی کنیم. این باعث می‌شود که داده‌ها زمانی که ما آن را ترسیم می‌کنیم، بهتر به نظر برسند.
  • ما از یک زیر پرسوجو (که بیان جدول مشترک نیز نامیده می‌شود) برای محاسبه یک جدول میانی (مشتری-پشتیبانی-نماینده-فروش) استفاده می‌کنیم. سپس این جدول را در پرس و جوی نهایی می‌نامیم.
  • برخی از عملیات‌ها را می توان در Pandas یا SQL انجام داد-برای مثال ما یک گروه را در pandas برای حذف ستون «ماه» برای نمودار دوم انجام دادیم. من ترجیح می‌دهم پیچیده‌ترین پیوندها و گروه‌بندی‌ها را در SQL انجام دهم و فقط از پایتون برای قالب‌بندی نتایج در صورت لزوم استفاده کنم.

به نظر می‌رسد که عملکرد ماهانه بسیار ناپایدار است و هیچ اثر فصلی قابل تشخیصی ندارد. جین با ۲۰٪ برتری نسبت به استیو، بهترین مجری فروش است.

داشبورد کامل

از این نقطه به بعد جهان بر وفق مراد شما است. شما می‌توانید پرسوجوهای SQL فوق پیچیده را بنویسید و آن‌ها را با هر کتابخانه پایتون به تصویر بکشید. در نسخه کامل داشبورد چند نمودار و تصویر اضافه کرده‌ام:

  • آمارهای خلاصه در مورد کل مشتریان، کارمندان و ریل‌های فروخته‌شده
  • فروش براساس ژانر
  • فروش به مشتریان توسط کشور
  • میانگین اختلاف درصد نظم در برابر میانگین کشور
  • ارزش طول عمر مشتری

شما می‌توانید کد کامل این برنامه آموزشی را در Github ببینید.

نتیجه‌گیری

در این برنامه آموزشی شما دیدید که چگونه یک داشبورد تعاملی با نوشتن دستورها SQL در پایتون، طراحی نتایج باPlotly و به اشتراک گذاری آن‌ها با Datapane ایجاد کنید.

این یک روش عالی برای نمونه‌سازی سریع ایده‌ها، یا ساخت تجسم‌های پیچیده‌تر است که در پلتفرم‌های استاندارد BI وجود ندارد.

این متن با استفاده از ربات ترجمه مقاله علم داده ترجمه شده و به صورت محدود مورد بازبینی انسانی قرار گرفته است.در نتیجه می‌تواند دارای برخی اشکالات ترجمه باشد.
مقالات لینک‌شده در این متن می‌توانند به صورت رایگان با استفاده از مقاله‌خوان ترجمیار به فارسی مطالعه شوند.