5 تصورات للمساعدة في تحسين قصة البيانات

تمت ترجمة هذه المقالة قبل دورة Python Developer .




رواية القصص هي واحدة من أهم المهارات لمحترفي تحليل البيانات. لتوصيل الأفكار والقيام بها بشكل مقنع ، تحتاج إلى بناء تواصل فعال. في هذه المقالة ، سنقدم 5 طرق تصور تتجاوز الفهم الكلاسيكي ويمكن أن تجعل قصة البيانات الخاصة بك أكثر جمالية وجمالًا. سنعمل مع مكتبة الرسومات Plotly في Python (وهي متوفرة أيضًا في R) ، والتي تسمح لك بإنشاء رسوم متحركة وتفاعلية بأقل جهد.

ما هو جيد في بلوتلي


يمكن دمج الرسوم البيانية المؤامرة بسهولة في بيئات مختلفة: فهي تعمل بشكل جيد في دفاتر الملاحظات الكبيرة ، ويمكن دمجها في موقع الويب ، كما أنها متكاملة تمامًا مع Dash - وهي أداة ممتازة لإنشاء لوحات المعلومات والتطبيقات التحليلية.

لنبدأ


إذا لم تكن قد قمت بتثبيت مؤامرة بالفعل ، يمكنك القيام بذلك باستخدام الأمر التالي:

pip install plotly

عظيم ، الآن يمكنك الاستمرار!

1. الرسوم المتحركة


غالبًا ما يرتبط عملنا بالبيانات الزمنية ، على سبيل المثال ، عندما نفكر في تطور مقياس معين. الرسوم المتحركة في مؤامرة هي أداة رائعة تساعد على عكس كيفية تغير البيانات بمرور الوقت باستخدام سطر واحد فقط من التعليمات البرمجية.



import plotly.express as px
from vega_datasets import data
df = data.disasters()
df = df[df.Year > 1990]
fig = px.bar(df,
             y="Entity",
             x="Deaths",
             animation_frame="Year",
             orientation='h',
             range_x=[0, df.Deaths.max()],
             color="Entity")
# improve aesthetics (size, grids etc.)
fig.update_layout(width=1000,
                  height=800,
                  xaxis_showgrid=False,
                  yaxis_showgrid=False,
                  paper_bgcolor='rgba(0,0,0,0)',
                  plot_bgcolor='rgba(0,0,0,0)',
                  title_text='Evolution of Natural Disasters',
                  showlegend=False)
fig.update_xaxes(title_text='Number of Deaths')
fig.update_yaxes(title_text='')
fig.show()

يمكن رسم أي رسم بياني تقريبًا إذا كان لديك متغير يساعدك على التصفية حسب الوقت. مثال للرسوم المتحركة المبعثرة المبعثرة:

import plotly.express as px
df = px.data.gapminder()
fig = px.scatter(
    df,
    x="gdpPercap",
    y="lifeExp",
    animation_frame="year",
    size="pop",
    color="continent",
    hover_name="country",
    log_x=True,
    size_max=55,
    range_x=[100, 100000],
    range_y=[25, 90],

    #   color_continuous_scale=px.colors.sequential.Emrld
)
fig.update_layout(width=1000,
                  height=800,
                  xaxis_showgrid=False,
                  yaxis_showgrid=False,
                  paper_bgcolor='rgba(0,0,0,0)',
                  plot_bgcolor='rgba(0,0,0,0)')

2. مخططات أمة الله


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

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



الرسم التخطيطي تفاعلي ، يمكنك النقر على الفئات وعرض كل فئة على حدة. كل ما عليك فعله هو اتخاذ قرار بشأن هذه الفئات ، والتفكير في التسلسل الهرمي بينها (الجدلparentsفي الكود) وتعيين القيم المناسبة ، والتي في حالتنا ستكون ناتج المجموعة من قبل المشغلين .

import plotly.graph_objects as go
import plotly.express as px
import numpy as np
import pandas as pd
df = px.data.tips()
fig = go.Figure(go.Sunburst(
    labels=["Female", "Male", "Dinner", "Lunch", 'Dinner ', 'Lunch '],
    parents=["", "", "Female", "Female", 'Male', 'Male'],
    values=np.append(
        df.groupby('sex').tip.mean().values,
        df.groupby(['sex', 'time']).tip.mean().values),
    marker=dict(colors=px.colors.sequential.Emrld)),
                layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',
                                 plot_bgcolor='rgba(0,0,0,0)'))

fig.update_layout(margin=dict(t=0, l=0, r=0, b=0),
                  title_text='Tipping Habbits Per Gender, Time and Day')
fig.show()

الآن دعنا نضيف مستوى تسلسل هرمي آخر:



للقيام بذلك ، سنضيف نتيجة مجموعة أخرى ، والتي سنحصل منها على ثلاث فئات أخرى.

import plotly.graph_objects as go
import plotly.express as px
import pandas as pd
import numpy as np
df = px.data.tips()
fig = go.Figure(go.Sunburst(labels=[
    "Female", "Male", "Dinner", "Lunch", 'Dinner ', 'Lunch ', 'Fri', 'Sat',
    'Sun', 'Thu', 'Fri ', 'Thu ', 'Fri  ', 'Sat  ', 'Sun  ', 'Fri   ', 'Thu   '
],
                            parents=[
                                "", "", "Female", "Female", 'Male', 'Male',
                                'Dinner', 'Dinner', 'Dinner', 'Dinner',
                                'Lunch', 'Lunch', 'Dinner ', 'Dinner ',
                                'Dinner ', 'Lunch ', 'Lunch '
                            ],
                            values=np.append(
                                np.append(
                                    df.groupby('sex').tip.mean().values,
                                    df.groupby(['sex',
                                                'time']).tip.mean().values,
                                ),
                                df.groupby(['sex', 'time',
                                            'day']).tip.mean().values),
                            marker=dict(colors=px.colors.sequential.Emrld)),
                layout=go.Layout(paper_bgcolor='rgba(0,0,0,0)',
                                 plot_bgcolor='rgba(0,0,0,0)'))
fig.update_layout(margin=dict(t=0, l=0, r=0, b=0),
                  title_text='Tipping Habbits Per Gender, Time and Day')

fig.show()

3. الفئات الموازية


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



import plotly.express as px
from vega_datasets import data
import pandas as pd
df = data.movies()
df = df.dropna()
df['Genre_id'] = df.Major_Genre.factorize()[0]
fig = px.parallel_categories(
    df,
    dimensions=['MPAA_Rating', 'Creative_Type', 'Major_Genre'],
    color="Genre_id",
    color_continuous_scale=px.colors.sequential.Emrld,
)
fig.show()

4. إحداثيات موازية


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



import plotly.express as px
from vega_datasets import data
import pandas as pd
df = data.movies()
df = df.dropna()
df['Genre_id'] = df.Major_Genre.factorize()[0]
fig = px.parallel_coordinates(
    df,
    dimensions=[
        'IMDB_Rating', 'IMDB_Votes', 'Production_Budget', 'Running_Time_min',
        'US_Gross', 'Worldwide_Gross', 'US_DVD_Sales'
    ],
    color='IMDB_Rating',
    color_continuous_scale=px.colors.sequential.Emrld)
fig.show()


5. الرسوم البيانية وأجهزة الاستشعار والمؤشرات




هناك حاجة إلى مخططات الاستشعار عن علم الجمال. إنها طريقة جيدة للإبلاغ عن مؤشرات النجاح أو الأداء وربطها بهدفك.



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

import plotly.graph_objects as go
fig = go.Figure(go.Indicator(
    domain = {'x': [0, 1], 'y': [0, 1]},
    value = 4.3,
    mode = "gauge+number+delta",
    title = {'text': "Success Metric"},
    delta = {'reference': 3.9},
    gauge = {'bar': {'color': "lightgreen"},
        'axis': {'range': [None, 5]},
             'steps' : [
                 {'range': [0, 2.5], 'color': "lightgray"},
                 {'range': [2.5, 4], 'color': "gray"}],
          }))
fig.show()

import plotly.graph_objects as go
fig = go.Figure(go.Indicator(
    title = {'text': "Success Metric"},
     mode = "number+delta",
    value = 300,
    delta = {'reference': 160}))
fig.show()


fig = go.Figure(go.Indicator(
     title = {'text': "Success Metric"},
    mode = "delta",
    value = 40,
 delta = {'reference': 160}))
fig.show()

هذا كل شئ!


آمل أن تجد شيئًا مفيدًا لنفسك. ابق في المنزل ، وكن آمنا ، وعمل منتجا.



تعلم المزيد عن الدورة.



All Articles