|
2 weeks ago | |
---|---|---|
.. | ||
solution | 3 weeks ago | |
README.md | 2 weeks ago | |
assignment.md | 3 weeks ago | |
notebook.ipynb | 3 weeks ago |
README.md
הצגת כמויות
![]() |
---|
הצגת כמויות - סקיצ'נוט מאת @nitya |
בשיעור זה תלמדו כיצד להשתמש באחת מהספריות הרבות הזמינות ב-Python כדי ליצור ויזואליזציות מעניינות סביב מושג הכמות. באמצעות סט נתונים נקי על ציפורים ממינסוטה, תוכלו ללמוד עובדות מעניינות רבות על חיי הבר המקומיים.
שאלון לפני השיעור
התבוננות במוטת כנפיים עם Matplotlib
ספרייה מצוינת ליצירת גרפים ותרשימים פשוטים ומורכבים מסוגים שונים היא Matplotlib. באופן כללי, תהליך יצירת גרפים באמצעות ספריות אלו כולל זיהוי החלקים ב-DataFrame שברצונכם למקד, ביצוע טרנספורמציות נחוצות על הנתונים, הקצאת ערכי ציר 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 | Black-bellied whistling-duck | Dendrocygna autumnalis | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 47 | 56 | 652 | 1020 | 76 | 94 |
1 | Fulvous whistling-duck | Dendrocygna bicolor | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Dendrocygna | LC | 45 | 53 | 712 | 1050 | 85 | 93 |
2 | Snow goose | Anser caerulescens | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 64 | 79 | 2050 | 4050 | 135 | 165 |
3 | Ross's goose | Anser rossii | Ducks/Geese/Waterfowl | Anseriformes | Anatidae | Anser | LC | 57.3 | 64 | 1066 | 1567 | 113 | 116 |
4 | Greater white-fronted goose | Anser albifrons | Ducks/Geese/Waterfowl | 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 מטרים, אבל אם כן, אנא עדכנו אותנו! בואו ניצור DataFrame חדש ללא שני הערכים החריגים הללו:
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()
תרשים העמודות הזה מציג מבט טוב על מספר הציפורים בכל קטגוריה. במבט חטוף, ניתן לראות שהמספר הגדול ביותר של ציפורים באזור זה שייך לקטגוריית Ducks/Geese/Waterfowl. מינסוטה היא 'ארץ 10,000 האגמים', כך שזה לא מפתיע!
✅ נסו לספור נתונים אחרים בסט הנתונים הזה. האם משהו מפתיע אתכם?
השוואת נתונים
ניתן לנסות השוואות שונות של נתונים מקובצים על ידי יצירת צירים חדשים. נסו השוואה של MaxLength של ציפור, בהתבסס על הקטגוריה שלה:
maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()
אין כאן הפתעות: לקוליברים יש MaxLength הקטן ביותר בהשוואה לפליקנים או לאווזים. זה טוב כשהנתונים הגיוניים!
ניתן ליצור ויזואליזציות מעניינות יותר של תרשימי עמודות על ידי הצגת נתונים חופפים. בואו נציג חפיפה בין אורך מינימלי ומקסימלי בקטגוריית ציפורים מסוימת:
minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']
plt.barh(category, maxLength)
plt.barh(category, minLength)
plt.show()
בתרשים זה, ניתן לראות את הטווח לכל קטגוריית ציפורים של האורך המינימלי והמקסימלי. ניתן לומר בבטחה, בהתבסס על נתונים אלו, שככל שהציפור גדולה יותר, כך טווח האורך שלה גדול יותר. מרתק!
🚀 אתגר
סט הנתונים הזה על ציפורים מציע שפע של מידע על סוגים שונים של ציפורים בתוך מערכת אקולוגית מסוימת. חפשו באינטרנט ונסו למצוא סטי נתונים נוספים על ציפורים. תרגלו בניית גרפים ותרשימים סביב הציפורים הללו כדי לגלות עובדות שלא ידעתם.
שאלון לאחר השיעור
סקירה ולימוד עצמי
השיעור הראשון הזה נתן לכם מידע על איך להשתמש ב-Matplotlib כדי להציג כמויות. בצעו מחקר על דרכים נוספות לעבוד עם סטי נתונים לצורך ויזואליזציה. Plotly היא אחת שלא נעסוק בה בשיעורים הללו, אז תסתכלו על מה שהיא יכולה להציע.
משימה
כתב ויתור:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית Co-op Translator. למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית נחשב למקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. איננו נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.