10 דברים שאתה חייב לדעת כשאתה מייצר תרשימים באמצעות matplotlib של python

מחבר:
בתאריך:

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

python matplotlib logo

 

1. ייבוא הספריות שישמשו במדריך

%matplotlib inline
import matplotlib.pyplot as plt
import pandas as pd
  • מלבד matplotlib כדאי לייבא את %matplotlib inline שמאפשרת לצייר את התרשימים בתוך ה-jupyter notebook ללא פקודה מיוחדת.
  • pandas ישמש לניהול מידע טבלאי (לקריאת המדריך על pandas).

 

2. תרשים פשוט

כדי לצייר תרשים פשוט עם ערכי x ו-y נספק את הרשימות של ערכי x ו-y, לדוגמה:

x = [1.5, 2.33, 3, 4]
y = [5, 6, 9, 13]

נעשה מזה תרשים באמצעות שורה אחת שאליה נעביר את ערכי x ו-y:

plt.plot(x, y)

תרשים פשוט matplotlib

כדאי להוסיף כותרת, שמות עמודות, ושמות הצירים באמצעות הפקודות הבאות:

plt.title("x vs y")
plt.legend(["y"])
plt.xlabel("x")
plt.ylabel("y")

 

3. תרשים פשוט שמשווה בין מספר עמודות

כדי להציג מספר עמודות באותו התרשים:

plt.plot(x, col_name1)
plt.plot(x, col_name2)
# Plot x vs multiple columns
z = [11, 8, 6, 2]
plt.plot(x, y)
plt.plot(x, z)
plt.title("x vs y and z")
plt.legend(["y","z"],  loc="lower left")
plt.xlabel("x")
plt.ylabel("y and z")

תרשים עם מספר עמודות matplotlib

הפרמטר loc שאותו העברנו ל-legend ממקם את המקרא.

כדי לראות את התרשים בלבד ניתן להוסיף:

plt.show()

 

4. תרשים שמבוסס על סט נתונים מיובא באמצעות pandas

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

# Plot pandas dataframe 
df = pd.read_csv('../data/height_shoe.csv')

רוצים ללמוד על ספריית pandas? קראו את המדריך.

להורדת סט הנתונים.

נגדיר את עמודת הגובה בתור האינדקס ונציג את המידע:

df.set_index('Height')
df.head()

אנחנו מצפים קורלציה בין גובה למידת הנעל.

df.corr()['Height'].sort_values()
Shoe Size    0.897163
Height       1.000000
Name: Height, dtype: float64

 

5. תרשים פיזור

קורלציה נוח לשרטט באמצעות תרשים פיזור (scatter plot).

plt.plot(df['Height'], df['Shoe Size'], 'o')

תרשים עם מספר עמודות matplotlib

  • פרמטר ראשון הוא ציר ה-x
  • פרמטר שני ציר ה-y
  • 'o' הופך את התרשים לתרשים פיזור

 

6. הפרדת תרשים הפיזור לאוכלוסיות

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

male   = df[df.gender == 'm']
female = df[df.gender == 'f']

נשרטט את הנתונים אחרי ההפרדה:

plt.plot(male['Height'], male['Shoe Size'], 'bo')
plt.plot(female['Height'], female['Shoe Size'], 'r+')

תרשים פיזור עם הפרדה לקבוצות

את הסגנון השונה של הנקודות הגדרנו באופן הבא:

  • r+ פלוסים בצבע אדום
  • bo נקודות בצבע כחול

וכמו תמיד כדאי להוסיף את התגיות והמקרא:

plt.title("Height vs Shoe size by gender")
plt.legend(["male","female"], loc='lower right')
plt.xlabel("height")
plt.ylabel("shoe size")

 

7. הצגת שכיחויות באמצעות היסטוגרמה

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

male['Height'].plot(kind='hist', bins=4, alpha=.6, color='blue')
female['Height'].plot(kind='hist', bins=4, alpha=.6, color='red')

היסטוגרמה באמצעות matplotlib

  • bins - לכמה קבוצות משנה לחלק
  • alpha - נותן שקיפות מה שעוזר לנו כשאנחנו רוצים לראות את הנתונים החופפים בין הקבוצות

כדאי להוסיף תגיות:

plt.xlabel("height")
plt.legend(["male","female"])

 

8. הצגת התפלגויות ומדדי מרכז באמצעות boxplot

דרך מצוינת ללמוד על התפלגות ומדדי מרכז (ממוצע, חציון, רבעונים) היא באמצעות המתודה describe של pandas.

male.describe()

וכדי לשרטט את זה אפשר להשתמש ב-boxplot.

א. ניצור רשימה שמקבצת את הגובה של נשים וגברים:

data_to_plot = [male['Height'], female['Height']]

ב. ניצור אובייקט figure:

fig = plt.figure()

ג. נוסיף אובייקט בשביל הצירים:

ax = fig.add_subplot(111)

111 - רשת של 1 * 1 בתוך תרשים 1

ד. ניצור את ה-boxplot:

bp = ax.boxplot(data_to_plot)

ה. נגדיר את התגיות של ציר ה-x:

ax.set_xticklabels(["Male", "Female"])

ו. נתייג את ציר ה-y:

plt.ylabel("height")

הצגת התפלגויות ומדדי מרכז באמצעות boxplot

 

9. הצגת פרופורציות באמצעות תרשים עוגה

כדי להציג את הפרופורציות בתוך האוכלוסיה נשתמש בתרשים עוגה (pie chart).

א. נמצא את השכיחות של זכרים ונקבות ונאסוף את השכיחויות לתוך רשימה:

counts = [male.shape[0], female.shape[0]]

ב. נגדיר את התגיות:

labels = ['males', 'females']

ג. נצייר את התרשים:

plt.pie(counts, labels=labels)

כדי לשפר את התרשים:

plt.pie(counts, labels=labels, 
          autopct="%0.2f%%", 
          explode=[0, 0.1], 
          startangle=90)
  • autopct - 2 ספרות משמעותיות אחרי הנקודה
  • explode - מרחיק את חתיכות העוגה. במקרה זה הרחקתי את החתיכה השנייה.
  • startangle - מסובב את התרשים.

תרשים עוגה באמצעות matplotlib

 

10. כיצד לייצא את התרשים לתמונה

כדי לייצא את התרשים לתמונה:

plt.savefig('piechart.png', bbox_inches='tight')

bbox_inches - נפטר מהשוליים הלבנים סביב התמונה.

לכל המדריכים בנושא של למידת מכונה

 

אהבתם? לא אהבתם? דרגו!

0 הצבעות, ממוצע 0 מתוך 5 כוכבים

 

הוסף תגובה חדשה

 

= 5 + 5