You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

16 KiB

חזותיות של כמויות

 סקצ'נוט מאת (@sketchthedocs)
חזותיות של כמויות - סקצ'נוט מאת @nitya

בשיעור זה תחקור כיצד להשתמש באחת מהספריות הרבות הזמינות ב-Python כדי ללמוד כיצד ליצור חזותיות מעניינות סביב מושג הכמות. באמצעות מערך נתונים נקי על ציפורים במינסוטה, תוכל ללמוד עובדות מעניינות רבות על חיי הבר המקומיים.

שאלון לפני השיעור

התבוננות במוטת כנפיים עם Matplotlib

ספרייה מצוינת ליצירת גרפים ודיאגרמות פשוטות ומורכבות מסוגים שונים היא Matplotlib. באופן כללי, תהליך יצירת גרפים באמצעות ספריות אלו כולל זיהוי החלקים במערך הנתונים שברצונך למקד, ביצוע טרנספורמציות נחוצות על הנתונים, הקצאת ערכי ציר x ו-y, החלטה על סוג הגרף להצגה, ואז הצגת הגרף. Matplotlib מציעה מגוון רחב של חזותיות, אך בשיעור זה נתמקד באלו המתאימים ביותר להצגת כמויות: גרפי קו, גרפי פיזור וגרפי עמודות.

השתמש בגרף המתאים ביותר למבנה הנתונים ולסיפור שברצונך לספר.

  • לניתוח מגמות לאורך זמן: קו
  • להשוואת ערכים: עמודות, טורים, עוגה, פיזור
  • להראות כיצד חלקים מתייחסים לשלם: עוגה
  • להראות התפלגות נתונים: פיזור, עמודות
  • להראות מגמות: קו, טור
  • להראות קשרים בין ערכים: קו, פיזור, בועה

אם יש לך מערך נתונים ואתה צריך לגלות כמה פריטים מסוימים כלולים בו, אחת המשימות הראשונות שלך תהיה לבדוק את הערכים שלו.

ישנם 'דפי עזר' מצוינים ל-Matplotlib כאן.

יצירת גרף קו על ערכי מוטת כנפיים של ציפורים

פתח את הקובץ notebook.ipynb בתיקיית השיעור והוסף תא.

הערה: הנתונים מאוחסנים בשורש מאגר זה בתיקיית /data.

import pandas as pd
import matplotlib.pyplot as plt
birds = pd.read_csv('../../data/birds.csv')
birds.head()

הנתונים הם שילוב של טקסט ומספרים:

שם שם מדעי קטגוריה סדר משפחה סוג מצב שימור אורך מינימלי אורך מקסימלי משקל גוף מינימלי משקל גוף מקסימלי מוטת כנפיים מינימלית מוטת כנפיים מקסימלית
0 ברווז שרוק שחור-בטן Dendrocygna autumnalis ברווזים/אווזים/עופות מים Anseriformes Anatidae Dendrocygna LC 47 56 652 1020 76 94
1 ברווז שרוק חום Dendrocygna bicolor ברווזים/אווזים/עופות מים Anseriformes Anatidae Dendrocygna LC 45 53 712 1050 85 93
2 אווז שלג Anser caerulescens ברווזים/אווזים/עופות מים Anseriformes Anatidae Anser LC 64 79 2050 4050 135 165
3 אווז רוס Anser rossii ברווזים/אווזים/עופות מים Anseriformes Anatidae Anser LC 57.3 64 1066 1567 113 116
4 אווז לבן-חזית גדול Anser albifrons ברווזים/אווזים/עופות מים Anseriformes Anatidae Anser LC 64 81 1930 3310 130 165

נתחיל על ידי גרף חלק מהנתונים המספריים באמצעות גרף קו בסיסי. נניח שברצונך לראות את מוטת הכנפיים המקסימלית של הציפורים המעניינות הללו.

wingspan = birds['MaxWingspan'] 
wingspan.plot()

מוטת כנפיים מקסימלית

מה אתה שם לב מיד? נראה שיש לפחות ערך חריג אחד - זו מוטת כנפיים מרשימה! מוטת כנפיים של 2300 סנטימטרים שווה ל-23 מטרים - האם יש פטרודקטילים במינסוטה? בוא נחקור.

בעוד שתוכל לבצע מיון מהיר ב-Excel כדי למצוא את הערכים החריגים, שהם כנראה טעויות הקלדה, המשך תהליך החזותיות מתוך הגרף.

הוסף תוויות לציר ה-x כדי להראות אילו סוגי ציפורים מדובר:

plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.xticks(rotation=45)
x = birds['Name'] 
y = birds['MaxWingspan']

plt.plot(x, y)

plt.show()

מוטת כנפיים עם תוויות

גם עם סיבוב התוויות ל-45 מעלות, יש יותר מדי לקרוא. בוא ננסה אסטרטגיה שונה: תווית רק את הערכים החריגים והגדר את התוויות בתוך הגרף. תוכל להשתמש בגרף פיזור כדי ליצור יותר מקום לתוויות:

plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)

for i in range(len(birds)):
    x = birds['Name'][i]
    y = birds['MaxWingspan'][i]
    plt.plot(x, y, 'bo')
    if birds['MaxWingspan'][i] > 500:
        plt.text(x, y * (1 - 0.05), birds['Name'][i], fontsize=12)
    
plt.show()

מה קורה כאן? השתמשת ב-tick_params כדי להסתיר את התוויות התחתונות ואז יצרת לולאה על מערך הנתונים של הציפורים שלך. על ידי גרף עם נקודות כחולות קטנות באמצעות bo, בדקת אם יש ציפור עם מוטת כנפיים מקסימלית מעל 500 והצגת את התווית שלה ליד הנקודה אם כן. הזזת את התוויות מעט על ציר ה-y (y * (1 - 0.05)) והשתמשת בשם הציפור כתווית.

מה גילית?

ערכים חריגים

סינון הנתונים שלך

גם עיטם לבן-ראש וגם בז ערבות, למרות שהם כנראה ציפורים גדולות מאוד, נראים כמתויגים בצורה שגויה, עם 0 נוסף למוטת הכנפיים המקסימלית שלהם. לא סביר שתפגוש עיטם לבן-ראש עם מוטת כנפיים של 25 מטרים, אבל אם כן, אנא הודע לנו! בוא ניצור מערך נתונים חדש ללא שני הערכים החריגים הללו:

plt.title('Max Wingspan in Centimeters')
plt.ylabel('Wingspan (CM)')
plt.xlabel('Birds')
plt.tick_params(axis='both',which='both',labelbottom=False,bottom=False)
for i in range(len(birds)):
    x = birds['Name'][i]
    y = birds['MaxWingspan'][i]
    if birds['Name'][i] not in ['Bald eagle', 'Prairie falcon']:
        plt.plot(x, y, 'bo')
plt.show()

על ידי סינון הערכים החריגים, הנתונים שלך עכשיו יותר קוהרנטיים ומובנים.

גרף פיזור של מוטת כנפיים

עכשיו שיש לנו מערך נתונים נקי לפחות מבחינת מוטת כנפיים, בוא נגלה עוד על הציפורים הללו.

בעוד שגרפי קו ופיזור יכולים להציג מידע על ערכי נתונים והתפלגותם, אנחנו רוצים לחשוב על הערכים הטמונים במערך הנתונים הזה. תוכל ליצור חזותיות כדי לענות על השאלות הבאות על כמויות:

כמה קטגוריות של ציפורים יש, ומה המספרים שלהן?
כמה ציפורים נכחדו, בסכנת הכחדה, נדירות או נפוצות?
כמה יש מהסוגים והסדרים השונים במינוח של לינאוס?

חקור גרפי עמודות

גרפי עמודות הם מעשיים כאשר אתה צריך להציג קבוצות של נתונים. בוא נחקור את קטגוריות הציפורים הקיימות במערך הנתונים הזה כדי לראות איזו היא הנפוצה ביותר במספר.

בקובץ המחברת, צור גרף עמודות בסיסי.

שים לב, תוכל לסנן את שתי הציפורים החריגות שזיהינו בסעיף הקודם, לערוך את הטעות במוטת הכנפיים שלהן, או להשאיר אותן בתרגילים אלו שאינם תלויים בערכי מוטת כנפיים.

אם ברצונך ליצור גרף עמודות, תוכל לבחור את הנתונים שברצונך להתמקד בהם. גרפי עמודות יכולים להיווצר מנתונים גולמיים:

birds.plot(x='Category',
        kind='bar',
        stacked=True,
        title='Birds of Minnesota')

נתונים מלאים כגרף עמודות

עם זאת, גרף עמודות זה אינו קריא מכיוון שיש יותר מדי נתונים לא מקובצים. עליך לבחור רק את הנתונים שברצונך לגרף, אז בוא נסתכל על אורך הציפורים לפי קטגוריה.

סנן את הנתונים שלך כך שיכללו רק את קטגוריית הציפורים.

שים לב שאתה משתמש ב-Pandas לניהול הנתונים, ואז נותן ל-Matplotlib לבצע את הגרף.

מכיוון שיש הרבה קטגוריות, תוכל להציג את הגרף הזה אנכית ולהתאים את גובהו כדי להתחשב בכל הנתונים:

category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()

קטגוריה ואורך

גרף עמודות זה מציג מבט טוב על מספר הציפורים בכל קטגוריה. במבט חטוף, אתה רואה שמספר הציפורים הגדול ביותר באזור זה נמצא בקטגוריית ברווזים/אווזים/עופות מים. מינסוטה היא 'ארץ 10,000 האגמים', כך שזה לא מפתיע!

נסה כמה ספירות אחרות על מערך הנתונים הזה. האם משהו מפתיע אותך?

השוואת נתונים

תוכל לנסות השוואות שונות של נתונים מקובצים על ידי יצירת צירים חדשים. נסה השוואה של אורך מקסימלי של ציפור, בהתבסס על הקטגוריה שלה:

maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()

השוואת נתונים

שום דבר לא מפתיע כאן: לקוליברים יש אורך מקסימלי קטן ביותר בהשוואה לפליקנים או אווזים. זה טוב כאשר נתונים הגיוניים מבחינה לוגית!

תוכל ליצור חזותיות מעניינות יותר של גרפי עמודות על ידי הצגת נתונים חופפים. בוא נציג את האורך המינימלי והמקסימלי על קטגוריית ציפור נתונה:

minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']

plt.barh(category, maxLength)
plt.barh(category, minLength)

plt.show()

בגרף זה, תוכל לראות את הטווח לכל קטגוריית ציפור של האורך המינימלי והמקסימלי. תוכל לומר בבטחה, בהתבסס על נתונים אלו, שככל שהציפור גדולה יותר, טווח האורך שלה גדול יותר. מרתק!

ערכים חופפים

🚀 אתגר

מערך הנתונים של הציפורים הזה מציע שפע של מידע על סוגים שונים של ציפורים בתוך מערכת אקולוגית מסוימת. חפש באינטרנט וראה אם תוכל למצוא מערכי נתונים אחרים הקשורים לציפורים. תרגל יצירת גרפים ודיאגרמות סביב הציפורים הללו כדי לגלות עובדות שלא ידעת.

שאלון לאחר השיעור

סקירה ולימוד עצמי

השיעור הראשון הזה נתן לך מידע על איך להשתמש ב-Matplotlib כדי להציג כמויות. ערוך מחקר על דרכים אחרות לעבוד עם מערכי נתונים לצורך חזותיות. Plotly היא אחת שלא נסקור בשיעורים אלו, אז תסתכל על מה שהיא יכולה להציע.

משימה

קווים, פיזורים ועמודות


כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. בעוד שאנו שואפים לדיוק, יש להיות מודעים לכך שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. איננו נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.