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.

218 lines
16 KiB

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

<!--
CO_OP_TRANSLATOR_METADATA:
{
"original_hash": "a49d78e32e280c410f04e5f2a2068e77",
"translation_date": "2025-09-05T23:21:33+00:00",
"source_file": "3-Data-Visualization/09-visualization-quantities/README.md",
"language_code": "he"
}
-->
# הצגת כמויות
|![סקיצ'נוט מאת [(@sketchthedocs)](https://sketchthedocs.dev)](../../sketchnotes/09-Visualizing-Quantities.png)|
|:---:|
| הצגת כמויות - _סקיצ'נוט מאת [@nitya](https://twitter.com/nitya)_ |
בשיעור זה תלמדו כיצד להשתמש באחת מהספריות הרבות הזמינות ב-Python כדי ליצור ויזואליזציות מעניינות סביב מושג הכמות. באמצעות סט נתונים נקי על ציפורים ממינסוטה, תוכלו ללמוד עובדות מעניינות רבות על חיי הבר המקומיים.
## [שאלון לפני השיעור](https://ff-quizzes.netlify.app/en/ds/quiz/16)
## התבוננות במוטת כנפיים עם Matplotlib
ספרייה מצוינת ליצירת גרפים ותרשימים פשוטים ומורכבים מסוגים שונים היא [Matplotlib](https://matplotlib.org/stable/index.html). באופן כללי, תהליך יצירת גרפים באמצעות ספריות אלו כולל זיהוי החלקים ב-DataFrame שברצונכם למקד, ביצוע טרנספורמציות נחוצות על הנתונים, הקצאת ערכי ציר x ו-y, החלטה על סוג הגרף להצגה, ואז הצגת הגרף. Matplotlib מציעה מגוון רחב של ויזואליזציות, אך בשיעור זה נתמקד באלו המתאימות ביותר להצגת כמויות: גרפים קוויים, תרשימי פיזור ותרשימי עמודות.
> ✅ השתמשו בגרף המתאים ביותר למבנה הנתונים ולסיפור שברצונכם לספר.
> - לניתוח מגמות לאורך זמן: קו
> - להשוואת ערכים: עמודות, עוגה, תרשים פיזור
> - להראות כיצד חלקים מתייחסים לשלם: עוגה
> - להראות התפלגות נתונים: תרשים פיזור, עמודות
> - להראות מגמות: קו, עמודות
> - להראות קשרים בין ערכים: קו, תרשים פיזור, בועה
אם יש לכם סט נתונים ואתם צריכים לגלות כמה פריטים מסוימים כלולים בו, אחת המשימות הראשונות תהיה לבדוק את הערכים שלו.
✅ קיימים 'דפי עזר' מצוינים ל-Matplotlib [כאן](https://matplotlib.org/cheatsheets/cheatsheets.pdf).
## יצירת גרף קווי על ערכי מוטת כנפיים של ציפורים
פתחו את הקובץ `notebook.ipynb` שנמצא בתיקיית השיעור והוסיפו תא.
> הערה: הנתונים מאוחסנים בתיקיית השורש של מאגר זה בתיקיית `/data`.
```python
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 |
נתחיל בגרף קווי בסיסי של הנתונים המספריים. נניח שברצונכם לראות את מוטת הכנפיים המקסימלית של הציפורים המעניינות הללו.
```python
wingspan = birds['MaxWingspan']
wingspan.plot()
```
![מוטת כנפיים מקסימלית](../../../../3-Data-Visualization/09-visualization-quantities/images/max-wingspan-02.png)
מה שמים לב מיד? נראה שיש לפחות ערך חריג אחד - זו מוטת כנפיים מרשימה! מוטת כנפיים של 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()
```
![מוטת כנפיים עם תוויות](../../../../3-Data-Visualization/09-visualization-quantities/images/max-wingspan-labels-02.png)
גם עם סיבוב התוויות ל-45 מעלות, יש יותר מדי תוויות לקריאה. ננסה אסטרטגיה אחרת: תיוג רק של הערכים החריגים והצבת התוויות בתוך הגרף. ניתן להשתמש בתרשים פיזור כדי לפנות מקום לתוויות:
```python
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)`) ושימושתם בשם הציפור כתווית.
מה גיליתם?
![ערכים חריגים](../../../../3-Data-Visualization/09-visualization-quantities/images/labeled-wingspan-02.png)
## סינון הנתונים
גם העיט הקירח וגם הבז הערבתי, למרות שהם כנראה ציפורים גדולות מאוד, נראים כמתויגים בטעות, עם `0` נוסף למוטת הכנפיים המקסימלית שלהם. לא סביר שתפגשו עיט קירח עם מוטת כנפיים של 25 מטרים, אבל אם כן, אנא עדכנו אותנו! בואו ניצור DataFrame חדש ללא שני הערכים החריגים הללו:
```python
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()
```
על ידי סינון הערכים החריגים, הנתונים שלכם כעת יותר קוהרנטיים ומובנים.
![תרשים פיזור של מוטת כנפיים](../../../../3-Data-Visualization/09-visualization-quantities/images/scatterplot-wingspan-02.png)
כעת, כשיש לנו סט נתונים נקי יותר לפחות מבחינת מוטת כנפיים, בואו נגלה עוד על הציפורים הללו.
בעוד שגרפים קוויים ותרשימי פיזור יכולים להציג מידע על ערכי נתונים וההתפלגות שלהם, נרצה לחשוב על הערכים הטמונים בסט הנתונים הזה. ניתן ליצור ויזואליזציות כדי לענות על השאלות הבאות על כמויות:
> כמה קטגוריות של ציפורים יש, ומה המספרים שלהן?
> כמה ציפורים נכחדו, בסכנת הכחדה, נדירות או נפוצות?
> כמה יש מכל סוג וסדר במונחים של המינוח של לינאוס?
## חקר תרשימי עמודות
תרשימי עמודות הם פרקטיים כאשר יש צורך להציג קבוצות של נתונים. בואו נחקור את הקטגוריות של הציפורים הקיימות בסט הנתונים הזה כדי לראות איזו קטגוריה היא הנפוצה ביותר.
בנווטבוק, צרו תרשים עמודות בסיסי.
✅ שימו לב, ניתן לסנן את שתי הציפורים החריגות שזיהינו בסעיף הקודם, לערוך את הטעות במוטת הכנפיים שלהן, או להשאיר אותן לצורך התרגילים הללו שאינם תלויים בערכי מוטת הכנפיים.
אם ברצונכם ליצור תרשים עמודות, תוכלו לבחור את הנתונים שברצונכם להתמקד בהם. תרשימי עמודות יכולים להיווצר מנתונים גולמיים:
```python
birds.plot(x='Category',
kind='bar',
stacked=True,
title='Birds of Minnesota')
```
![נתונים מלאים כתרשים עמודות](../../../../3-Data-Visualization/09-visualization-quantities/images/full-data-bar-02.png)
עם זאת, תרשים העמודות הזה אינו קריא מכיוון שיש יותר מדי נתונים לא מקובצים. יש לבחור רק את הנתונים שברצונכם להציג, אז בואו נסתכל על אורך הציפורים לפי הקטגוריה שלהן.
סננו את הנתונים כך שיכללו רק את קטגוריית הציפורים.
✅ שימו לב שאתם משתמשים ב-Pandas לניהול הנתונים, ואז נותנים ל-Matplotlib לבצע את הוויזואליזציה.
מכיוון שיש הרבה קטגוריות, ניתן להציג את התרשים הזה בצורה אנכית ולהתאים את גובהו כדי להתחשב בכל הנתונים:
```python
category_count = birds.value_counts(birds['Category'].values, sort=True)
plt.rcParams['figure.figsize'] = [6, 12]
category_count.plot.barh()
```
![קטגוריה ואורך](../../../../3-Data-Visualization/09-visualization-quantities/images/category-counts-02.png)
תרשים העמודות הזה מציג מבט טוב על מספר הציפורים בכל קטגוריה. במבט חטוף, ניתן לראות שהמספר הגדול ביותר של ציפורים באזור זה שייך לקטגוריית Ducks/Geese/Waterfowl. מינסוטה היא 'ארץ 10,000 האגמים', כך שזה לא מפתיע!
✅ נסו לספור נתונים אחרים בסט הנתונים הזה. האם משהו מפתיע אתכם?
## השוואת נתונים
ניתן לנסות השוואות שונות של נתונים מקובצים על ידי יצירת צירים חדשים. נסו השוואה של MaxLength של ציפור, בהתבסס על הקטגוריה שלה:
```python
maxlength = birds['MaxLength']
plt.barh(y=birds['Category'], width=maxlength)
plt.rcParams['figure.figsize'] = [6, 12]
plt.show()
```
![השוואת נתונים](../../../../3-Data-Visualization/09-visualization-quantities/images/category-length-02.png)
אין כאן הפתעות: לקוליברים יש MaxLength הקטן ביותר בהשוואה לפליקנים או לאווזים. זה טוב כשהנתונים הגיוניים!
ניתן ליצור ויזואליזציות מעניינות יותר של תרשימי עמודות על ידי הצגת נתונים חופפים. בואו נציג חפיפה בין אורך מינימלי ומקסימלי בקטגוריית ציפורים מסוימת:
```python
minLength = birds['MinLength']
maxLength = birds['MaxLength']
category = birds['Category']
plt.barh(category, maxLength)
plt.barh(category, minLength)
plt.show()
```
בתרשים זה, ניתן לראות את הטווח לכל קטגוריית ציפורים של האורך המינימלי והמקסימלי. ניתן לומר בבטחה, בהתבסס על נתונים אלו, שככל שהציפור גדולה יותר, כך טווח האורך שלה גדול יותר. מרתק!
![ערכים חופפים](../../../../3-Data-Visualization/09-visualization-quantities/images/superimposed-02.png)
## 🚀 אתגר
סט הנתונים הזה על ציפורים מציע שפע של מידע על סוגים שונים של ציפורים בתוך מערכת אקולוגית מסוימת. חפשו באינטרנט ונסו למצוא סטי נתונים נוספים על ציפורים. תרגלו בניית גרפים ותרשימים סביב הציפורים הללו כדי לגלות עובדות שלא ידעתם.
## [שאלון לאחר השיעור](https://ff-quizzes.netlify.app/en/ds/quiz/17)
## סקירה ולימוד עצמי
השיעור הראשון הזה נתן לכם מידע על איך להשתמש ב-Matplotlib כדי להציג כמויות. בצעו מחקר על דרכים נוספות לעבוד עם סטי נתונים לצורך ויזואליזציה. [Plotly](https://github.com/plotly/plotly.py) היא אחת שלא נעסוק בה בשיעורים הללו, אז תסתכלו על מה שהיא יכולה להציע.
## משימה
[קווים, פיזורים ועמודות](assignment.md)
---
**כתב ויתור**:
מסמך זה תורגם באמצעות שירות תרגום מבוסס בינה מלאכותית [Co-op Translator](https://github.com/Azure/co-op-translator). למרות שאנו שואפים לדיוק, יש לקחת בחשבון שתרגומים אוטומטיים עשויים להכיל שגיאות או אי-דיוקים. המסמך המקורי בשפתו המקורית נחשב למקור הסמכותי. למידע קריטי, מומלץ להשתמש בתרגום מקצועי על ידי מתרגם אנושי. איננו נושאים באחריות לכל אי-הבנה או פרשנות שגויה הנובעת משימוש בתרגום זה.