TITANIC

תרגול ב Python – טיטאניק (שימוש בספריית pandas)

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

מה היו הגילאים שלהם ומי הצליח לשרוד?

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


בקובץ passengers יש את רשימת הנוסעים והפרטים עליהם.
להלן מצורף הקובץ עבור כל הנוסעים של טיטאניק להורדה: Passangers.csv

פרטים על העמודות:

PassengerId – מספר נוסע

Pclass – סוג כרטיס

Name – שם הנוסע

Sex – מין הנוסע

Age – גיל הנוסע

SibSp – מספר אחים/בני זוג על סיפון הטיטאניק

Ticket – מספר כרטיס

Fare – מחיר כרטיס

Cabin- מספר חדר

Embarked – נמל הפלגה (C = Cherbourg, Q = Queenstown, S = Southampton)

 

להלן מצורף הקובץ של מספרי הנוסעים והאם שרדו להורדה: Survived.csv

פרטים על העמודות:

PassengerId – מספר נוסע

Survived – האם שרד (1- שרד, 2-לא שרד)

 

התרגול מחולק לשלושה חלקים על פי רמות. בהצלחה!

 

מתחילים

  1. קרא את הקובץ "Passenger.csv"

  2. כמה נוסעים היו בסה"כ בספינה?

  3. עבור כמה אנשים אנחנו יודעים את הגיל שלהם?

  4. מה ההבדל בין Count ל len ?

  5. אנא מחק את האנשים שאין להם כרטיס. (שדה Tickets ריק).

  6. מספר הנשים שיש בספינה?

מתקדמים

  1. כמה גברים ונשים יש בספינה? (בשורת קוד 1 בלבד)

  2. מהו הגיל הממוצע של הנוסעים?

  3. אנא מלא את הגיל הממוצע במקומות החסרים.

  4. מהו אחוז הגברים בספינה אשר הגיל שלהם גדול מ 30 ונמצאים ב class הראשון?

  5. אנא חבר בין טבלת Passengers לבין טבלת Survived (בהנחה שלכל עובד ידוע האם שרד או לא). באיזה סוג Join השתמשת ולמה?

  6. כמה אחוז מהאנשים הצליחו לשרוד?

  7. כמה אחוז מהילדים (גיל 12 ומטה) הצליחו לשרוד?

  8. בסיפור טיטאניק ישנם 2 גרסאות לגבי מי היה הראשון לעלות על ספינות ההצלה (נשים וילדים) או בני המעמד הגבוהה, בוא ננסה לבדוק את הגרסה הנכונה ביותר:

    1. מהו אחוז השורדים שהינם נשים או ילדים מתחת לגיל 12.

    2. מהו אחוז השורדים שנמצאים ב class הראשון?

     

אתגר

  1. עבור כל Class חשב את:

    1. כמות הנוסעים

    2. כמות האנשים ששרדו

    3. אחוז האנשים ששרדו

מיין לפי כמות הנוסעים מהקטן לגדול.

  1. חשב את אחוז האנשים ששרדו על פי קבוצות גילאים:

    1. 0-12

    2. 13-24

    3. 25-50

    4. 50+

פתרונות

מתחילים

1.קרא את הקובץ "Passenger.csv"

				
					df = pd.read_csv("Passengers.csv")
				
			

2. כמה נוסעים היו בסה"כ בספינה?

				
					len(df) #891
				
			

3.עבור כמה אנשים אנחנו יודעים את הגיל שלהם?

				
					df["Age"].count() #714
				
			

4.מה ההבדל בין Count ל len ?

 len -סופר את כמות הרשומות שקיימות (כולל null) ואילוא count סופר את מספר השורות שיש בהם ערך בלבד.

5. אנא מחק את האנשים שאין להם כרטיס. (שדה Ticket ריק).

				
					# Option 1
df = df.dropna(subset=["Ticket"]) # After: 888 rows

#Option 2
df.dropna(subset=["Ticket"],inplace=True)  # After: 888 rows

				
			

6. מספר הנשים שיש בספינה?

				
					# Option 1
num_female = len(df[df["Sex"]=="female"]) # 333 female

#Option 2
num_female = (df["Sex"]=="female").sum() #333 female
				
			

מתקדמים

1. כמה גברים ונשים יש בספינה?

				
					df["Sex"].value_counts() # 311 female , 577 male
				
			

2. מהו הגיל הממוצע של הנוסעים?

				
					mean = df["Age"].mean() # 29.7
				
			

3. אנא מלא את הגיל הממוצע במקומות החסרים.

				
					df["Age"].fillna(mean,inplace=True)
				
			

4. מהו אחוז הגברים בספינה אשר הגיל שלהם גדול מ 30 ונמצאים ב class הראשון?

				
					len(df[(df["Age"]>30) & (df["Sex"]=="male")])/len(df)
				
			

5. אנא חבר בין טבלת Passengers לבין טבלת Survived (עבור כל נוסע ידוע האם שרד או לא). באיזה סוג Join השתמשת ולמה?

נשתמש ב inner join כי ידוע שעבור כל נוסע ידוע אם שרד או לא,
אנחנו לא נשתמש ב full join היות ויש לנו נוסעים שמחקנו מטבלת הנוסעים אך עדיין קיימים בטבלה השניה.
אנחנו לא נשתמש ב left joinכי פשוט הוא יביא לנו את אותה התשובה כמו inner join, ה performance של inner join יותר מהירה.

				
					# Read Survived.csv
survived = pd.read_csv("Survived.csv")

# Join between 2 Tables
df = df.join(survived, on="PassengerId", lsuffix='_left', rsuffix='', how='inner')

				
			

6. כמה אחוז מהאנשים הצליחו לשרוד?

				
					p_survived = len(df[df["Survived"]==1])/len(df)*100 # 38.55%
				
			

7. כמה אחוז מהילדים (גיל 12 ומטה) הצליחו לשרוד?

				
					df_children = df[df["Age"]<12] # 67 children

len(df_children[df_children["Survived"]==1])/len(df_children)*100 # 49.25%
				
			

8. בסיפור טיטאניק ישנם 2 גרסאות לגבי מי היה הראשון לעלות על ספינות ההצלה (נשים וילדים) או בני המעמד הגבוהה, בוא ננסה לבדוק את הגרסה הנכונה ביותר:

   a. מהו אחוז השורדים שהינם נשים או ילדים מתחת לגיל 12.

b. מהו אחוז השורדים שנמצאים ב class הראשון?
				
					# A
df_children_or_female = df[(df["Age"]<12)|((df["Sex"]=="female"))] # 347 children or female

len(df_children_or_female[df_children_or_female["Survived"]==1])/len(df_children_or_female)*100 # 40.63%

# B

df_first_class = df[df["Pclass"]==1] # 216 People

len(df_first_class[df_first_class["Survived"]==1])/len(df_first_class)*100 # 37.96%
				
			

אהבת את המאמר?

שיתוף ב facebook
שתף בפייסבוק
שיתוף ב twitter
שתף ב - Twitter
שיתוף ב linkedin
שתף ב- Linkdin
שיתוף ב whatsapp
שתף ב - Whatsapp

השאר תגובה

3.3 3 הצבעות
Article Rating
Subscribe
Notify of
guest
2 Comments
Oldest
Newest Most Voted
Inline Feedbacks
הצג את כל התגובות

[…] במידה ותרצו לתרגל תרגיל מלא בדרגות קושי שונות בנושא טיטאניק, מוזמנים להכנס לאתר […]

[…] במידה ותרצו לתרגל תרגיל מלא בדרגות קושי שונות בנושא טיטאניק, מוזמנים להכנס לאתר […]

אולי יעניין אותך גם