|
|
1 year ago | |
|---|---|---|
| .. | ||
| solution | 1 year ago | |
| README.md | 1 year ago | |
| assignment.md | 1 year ago | |
| notebook.ipynb | 1 year ago | |
README.md
חזותיות של כמויות
![]() |
|---|
| חזותיות של כמויות - סקצ'נוט מאת @nitya |
בשיעור זה תחקור כיצד להשתמש באחת מהספריות הרבות הזמינות בפייתון כדי ללמוד כיצד ליצור חזותיות מעניינות סביב מושג הכמות. באמצעות מערך נתונים נקי על ציפורים במינסוטה, תוכל ללמוד עובדות מעניינות רבות על חיי הבר המקומיים.
שאלון לפני השיעור
התבוננות במוטת כנפיים עם 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. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי דיוקים. המסמך המקורי בשפתו המקורית צריך להיחשב כמקור סמכותי. עבור מידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי אדם. איננו נושאים באחריות לאי הבנות או לפרשנויות שגויות הנובעות משימוש בתרגום זה.








