التصور المتقدم للبيانات لعلوم البيانات في Python

تعد كيفية عمل مخططات باردة وتفاعلية بالكامل مع سلاسل Python واحدة من



صورة



التشوهات المعرفية حول تكاليف الغرق (مغالطة تكلفة الغرق) واحدة من العديد من التحيزات المعرفية الضارة ، والتي يصبح الناس ضحية لها. هذا يشير إلى ميلنا إلى الاستمرار في تكريس الوقتوالموارد لقضية خاسرة ، لأننا قضينا بالفعل - غرقوا - الكثير من الوقت في السعي. تنطبق المغالطة الأقل من التكلفة على البقاء في وظيفة سيئة لفترة أطول مما ينبغي ، والعمل بعبودية على مشروع حتى عندما يكون من الواضح أنه لن يعمل ، ونعم ، الاستمرار في استخدام مكتبة التآمر المملة والقديمة - matplotlib - عندما تكون هناك بدائل أكثر فعالية وتفاعلية وجاذبية.



خلال الأشهر القليلة الماضية ، أدركت أن السبب الوحيد لاستخدام matplotlib هو بسبب مئات الساعات التي قضيتها في تعلم بناء الجملة المعقد . تؤدي هذه التعقيدات إلى ساعات من الإحباط لمعرفة StackOverflow كيفية تنسيق التواريخ أو إضافة محور ص ثاني... لحسن الحظ ، يعد هذا وقتًا رائعًا لرسم الرسوم البيانية في Python ، وبعد استكشاف الخيارات ، يكون الفائز الواضح - من حيث سهولة الاستخدام والتوثيق والوظائف - مؤامرة . في هذه المقالة ، سنتعمق في الرسم التخطيطي ، ونتعلم كيفية إنشاء مخططات أفضل في وقت أقل - غالبًا باستخدام سطر واحد من التعليمات البرمجية.



كل كود هذا المقال متاح على جيثب . جميع الرسوم البيانية تفاعلية ويمكن عرضها على NBViewer .



صورة



نظرة عامة مؤامرة



حزمة plotly لبيثون - مكتبة البرمجيات مفتوحة المصدر، مبنية على plotly.js ، الذي، بدوره، هو مبني على d3.js . سنستخدم غلافًا فوق مخطط يسمى cufflinks المصمم للعمل مع Pandas DataFrame. لذا ، فإن أزرار أكمام المكدس الخاصة بنا> plotly> plotly.js> d3.js - وهذا يعني أننا نحصل على الكفاءة في برمجة Python مع قدرات رسومية تفاعلية لا تصدق من d3 .



( بلوتلي نفسها شركة رسوماتمع العديد من المنتجات والأدوات مفتوحة المصدر. مكتبة Python مجانية للاستخدام ويمكننا إنشاء مخططات غير محدودة بلا إنترنت بالإضافة إلى ما يصل إلى 25 مخططًا عبر الإنترنت لمشاركتها مع العالم .) تم



إنجاز جميع الأعمال في هذه المقالة في Jupyter Notebook مع عمل + أزرار أكمام تعمل غير متصل على الانترنت. بعد تثبيت مؤامرة وأزرار أكمام ، pip install cufflinks plotly استورد ما يلي للتشغيل في المشتري:



# Standard plotly imports
import plotly.plotly as py
import plotly.graph_objs as go
from plotly.offline import iplot, init_notebook_mode
# Using plotly + cufflinks in offline mode
import cufflinks
cufflinks.go_offline(connected=True)
init_notebook_mode(connected=True)




التوزيعات المتغيرة الفردية: الرسوم البيانية ومخططات الصندوق



المخططات أحادية المتغير - البعد الواحد هو الطريقة القياسية لبدء التحليل ، بينما المدرج التكراري هو مؤامرة انتقالية ( وإن كان مع بعض المشاكل ) لرسم مخطط توزيع. هنا ، باستخدام متوسط ​​إحصائيات مقالتي (يمكنك الاطلاع على كيفية الحصول على إحصائياتك الخاصة هنا أو استخدام إحصائي ) ، فلنقم بعمل رسم بياني تفاعلي لعدد التصفيق على المقالات ( dfهذا هو معيار بيانات Pandas):



df['claps'].iplot(kind='hist', xTitle='claps',
                  yTitle='count', title='Claps Distribution')




صورة



بالنسبة لأولئك الذين اعتادوا على ذلك matplotlib، كل ما علينا فعله هو إضافة حرف آخر ( iplotبدلاً من plot) ونحصل على رسم بياني أكثر جمالًا وتفاعلًا! يمكننا النقر على البيانات للحصول على مزيد من المعلومات ، والتكبير على أجزاء من الرسم البياني ، وكما سنرى لاحقًا ، حدد فئات مختلفة.



إذا أردنا رسم رسوم بيانية متراكبة ، فمن السهل بنفس القدر:



df[['time_started', 'time_published']].iplot(
    kind='hist',
    histnorm='percent',
    barmode='overlay',
    xTitle='Time of Day',
    yTitle='(%) of Articles',
    title='Time Started and Time Published')




صورة



مع القليل من التلاعب Pandas، يمكننا أن نجعل barplot:



# Resample to monthly frequency and plot 
df2 = df[['view','reads','published_date']].\
         set_index('published_date').\
         resample('M').mean()
df2.iplot(kind='bar', xTitle='Date', yTitle='Average',
    title='Monthly Average Views and Reads')




صورة



كما رأينا ، يمكننا الجمع بين قوة Pandas مع أزرار أكمام + مؤامرة. لتخطيط توزيع المراوح عن طريق النشر ، نستخدم pivot، ثم نرسم :



df.pivot(columns='publication', values='fans').iplot(
        kind='box',
        yTitle='fans',
        title='Fans Distribution by Publication')




صورة



تتمثل مزايا التفاعل في أنه يمكننا استكشاف البيانات واستضافتها على النحو الذي نراه مناسبًا. هناك الكثير من المعلومات في طوافة الصندوق ، وبدون القدرة على رؤية الأرقام ، سنفتقد معظمها!



مؤامرة مبعثر



مؤامرة مبعثر هو قلب معظم التحليلات. هذا يسمح لنا برؤية تطور متغير بمرور الوقت ، أو العلاقة بين متغيرين (أو أكثر).



السلاسل الزمنية



تحتوي معظم البيانات الحقيقية على عنصر زمني. لحسن الحظ تم تصميم أزرار أكمام + أزرار أكمام مع وضع تصور لسلسلة زمنية. دعونا تأطير البيانات من مقالات TDS الخاصة بي ونرى كيف تغيرت الاتجاهات.



 Create a dataframe of Towards Data Science Articles
tds = df[df['publication'] == 'Towards Data Science'].\
         set_index('published_date')
# Plot read time as a time series
tds[['claps', 'fans', 'title']].iplot(
    y='claps', mode='lines+markers', secondary_y = 'fans',
    secondary_y_title='Fans', xTitle='Date', yTitle='Claps',
    text='title', title='Fans and Claps over Time')




صورة



نرى بعض الأشياء المختلفة هنا:



  • احصل تلقائيًا على سلاسل زمنية منسقة بشكل جيد على المحور س
  • إضافة محور ص ثانوي لأن متغيراتنا لها نطاقات مختلفة
  • عرض عناوين المقالات عند التمرير




لمزيد من المعلومات ، يمكننا أيضًا إضافة التعليقات التوضيحية النصية بسهولة تامة:



tds_monthly_totals.iplot(
    mode='lines+markers+text',
    text=text,
    y='word_count',
    opacity=0.8,
    xTitle='Date',
    yTitle='Word Count',
    title='Total Word Count by Month')




صورة



بالنسبة إلى مخطط مبعثر ثنائي المتغير ملون بمتغير فئوي ثالث ، نستخدم:



df.iplot(
    x='read_time',
    y='read_ratio',
    # Specify the category
    categories='publication',
    xTitle='Read Time',
    yTitle='Reading Percent',
    title='Reading Percent vs Read Ratio by Publication')




صورة



دعونا نعقد الأمور قليلاً باستخدام محور السجل ، المحدد كتخطيط مخطط - (انظر وثائق Plotly لمواصفات التخطيط) ، وتحديد حجم فقاعات متغير رقمي:



tds.iplot(
    x='word_count',
    y='reads',
    size='read_ratio',
    text=text,
    mode='markers',
    # Log xaxis
    layout=dict(
        xaxis=dict(type='log', title='Word Count'),
        yaxis=dict(title='Reads'),
        title='Reads vs Log Word Count Sized by Read Ratio'))




صورة



مع القليل من العمل ( انظر دفتر الملاحظات للحصول على التفاصيل ) ، يمكننا حتى وضع أربعة متغيرات ( غير مستحسن ) على رسم بياني واحد!



صورة



كما كان من قبل ، يمكننا دمج Pandas مع أزرار أكمام + plotly للحصول على رسوم بيانية مفيدة



df.pivot_table(
    values='views', index='published_date',
    columns='publication').cumsum().iplot(
        mode='markers+lines',
        size=8,
        symbol=[1, 2, 3, 4, 5],
        layout=dict(
            xaxis=dict(title='Date'),
            yaxis=dict(type='log', title='Total Views'),
            title='Total Views over Time by Publication'))




صورة



لمزيد من الأمثلة على الوظائف ، راجع دفتر الملاحظات أو الوثائق . يمكننا إضافة تعليقات توضيحية نصية وخطوط مرجعية وخطوط ملائمة بشكل أفضل إلى الرسوم البيانية الخاصة بنا باستخدام سطر واحد من الكود البرمجي ولا يزال مع جميع التفاعلات.



مخططات متقدمة



ننتقل الآن إلى بعض الرسومات التي ربما لن تستخدمها كثيرًا ، ولكن يمكن أن تكون مثيرة للإعجاب. ونحن سوف تستخدم figure_factory plotly أن تفعل حتى هذه haffics لا يصدق في سطر واحد.



مصفوفة التشتت



عندما نريد استكشاف العلاقات بين العديد من المتغيرات ، فإن مصفوفة الانتثار (تسمى أيضًا splom) هي خيار رائع:



import plotly.figure_factory as ff
figure = ff.create_scatterplotmatrix(
    df[['claps', 'publication', 'views',      
        'read_ratio','word_count']],
    diag='histogram',
    index='publication')




صورة



حتى هذا الرسم البياني تفاعلي بالكامل ، مما يسمح لنا باستكشاف البيانات.



خريطة ارتباط الحرارة



لتصور الارتباطات بين المتغيرات الرقمية ، نحسب الارتباطات ثم نقوم بعمل خريطة حرارية مشروحة:



corrs = df.corr()
figure = ff.create_annotated_heatmap(
    z=corrs.values,
    x=list(corrs.columns),
    y=list(corrs.index),
    annotation_text=corrs.round(2).values,
    showscale=True)




صورة



قائمة الرسوم البيانية تطول وتطول. تحتوي أزرار الأكمام أيضًا على العديد من الموضوعات التي يمكننا استخدامها للحصول على شكل ومظهر مختلفين تمامًا دون أي جهد. على سبيل المثال ، أدناه لدينا مخطط نسبة في موضوع "الفضاء" ومخطط انتشار في "ggplot":



صورة



صورة



نحصل أيضًا على مخططات ثلاثية الأبعاد (الأسطح ومخططات الفقاعات):



صورة



صورة



بالنسبة لأولئك الذين يحبونها ، يمكنك حتى إنشاء مخطط دائري:



صورة



التحرير في Plotly Chart Studio



عندما تقوم بعمل هذه الرسوم البيانية في NoteBook Jupiter ، ستلاحظ رابطًا صغيرًا في الزاوية اليمنى السفلية من الرسم البياني "تصدير إلى plot.ly" ، إذا نقرت على هذا الرابط ، فسيتم نقلك إلى Chart Studio حيث يمكنك تعديل الرسم البياني للعرض التقديمي النهائي. يمكنك إضافة التعليقات التوضيحية وتحديد الألوان ومسح كل شيء بشكل عام لرسم بياني رائع. ثم يمكنك نشر الجدول الزمني الخاص بك على الإنترنت بحيث يمكن لأي شخص العثور عليه بالرجوع إليه.



فيما يلي رسمان بيانيان قمت بتعديلهما في Chart Studio: على



صورة



صورة



الرغم مما قيل هنا ، ما زلنا لم نستكشف جميع ميزات المكتبة! أنصحك بإلقاء نظرة على كل من وثائق مؤامرة ووثائق أزرار أكمام لمزيد من المؤامرات المذهلة.



صورة



الاستنتاجات



أسوأ جزء من سوء الفهم الخاطئ هو أنك تدرك فقط مقدار الوقت الذي أضعته بعد الاستقالة. لحسن الحظ ، الآن بعد أن ارتكبت خطأ البقاء مع matploblib لفترة طويلة جدًا ، لست مضطرًا لذلك!



عندما نفكر في مكتبات المؤامرة ، هناك العديد من الأشياء التي نريدها:



  1. رسوم بيانية من سطر واحد للاستكشاف السريع
  2. استبدال / استكشاف البيانات التفاعلية
  3. القدرة على حفر التفاصيل حسب الحاجة
  4. إعداد سهل للعرض النهائي




في الوقت الحالي ، أفضل خيار للقيام بكل هذا في Python هو مؤامرة. يتيح لنا Plotly عمل تصورات سريعة ويساعدنا على فهم بياناتنا بشكل أفضل من خلال التفاعل. بالإضافة إلى ذلك ، دعنا نواجه الأمر ، يجب أن يكون التخطيط أحد أجمل أجزاء علوم البيانات! مع المكتبات الأخرى ، تحول التآمر إلى مهمة شاقة ، ولكن مع المؤامرة ، هناك فرحة في صنع شخصية رائعة مرة أخرى!



صورة






صورة


تعرف على تفاصيل كيفية الحصول على مهنة رفيعة المستوى من الصفر أو المستوى الأعلى في المهارات والراتب من خلال الحصول على دورات SkillFactory المدفوعة عبر الإنترنت:











All Articles