הטיסה התבטלה? לפחות נשחק עם פנדה
05/08/2024
הממשלה מפרסמת כל יום רשימה של טיסות שהמריאו, נחתו או התבטלו בקישור: https://data.gov.il/dataset/flydata
עכשיו אוגוסט ואני יודע שכולנו במתח לגלות איזה טיסה יוצאת ואיזה חברה נשארת בקפריסין, ואיזו דרך טובה יותר לגלות את זה מאשר פייתון? בואו נראה את הטבלה ואז נחקור אותה עם קצת קוד פנדס.
1. מבנה המידע
הורדתי את הקובץ וקודם כל הדפסתי את השורות הראשונות ואת שמות העמודות כדי להבין מה עושים עם זה:
import pandas as pd
filename = "/Users/ynonp/Downloads/data/flights.csv"
if __name__ == "__main__":
df = pd.read_csv(filename)
print(df.columns)
print(df.head())
והתוצאה:
Index(['CHOPER', 'CHFLTN', 'CHOPERD', 'CHSTOL', 'CHPTOL', 'CHAORD', 'CHLOC1',
'CHLOC1D', 'CHLOC1TH', 'CHLOC1T', 'CHLOC1CH', 'CHLOCCT', 'CHTERM',
'CHCINT', 'CHCKZN', 'CHRMINE', 'CHRMINH'],
dtype='object')
CHOPER CHFLTN CHOPERD ... CHCKZN CHRMINE CHRMINH
0 W6 2325 WIZZAIR ... NaN CANCELED מבוטלת
1 A3 926 AEGEAN AIRLINES ... NaN CANCELED מבוטלת
2 W6 2097 WIZZAIR ... NaN CANCELED מבוטלת
3 W4 3258 WIZZ AIR MALTA ... A CANCELED מבוטלת
4 XR 613 CORENDON EUROPE ... A DEPARTED המריאה
אנחנו רואים את העמודות החשובות - CHOPERD הוא שם חברת התעופה ו CHRMINH מראה מה קרה עם הטיסה.
בשביל לגלות כמה טיסות בוטלו מתוך כמות הטיסות נוכל להדפיס:
# Total flights
print(len(df))
# Cancelled flights
print(len(df[df["CHRMINH"] == "מבוטלת"]))
בשביל לגלות את שמות כל חברות התעופה שביטלו איזושהי טיסה נכתוב:
# names of all airlines with cancelled flights
print(df[df["CHRMINH"] == "מבוטלת"]["CHOPERD"].unique())
והכי מעניין, בשביל לגלות איזה חברות תעופה ביטלו את כל הטיסות שלהן נקבץ את הנתונים לפי חברת תעופה ואז נדפיס רק את אלה שכל הטיסות שלהן בוטלו:
# names of all airlines that cancelled all their flights
for _id, group in df.groupby('CHOPERD'):
if (group["CHRMINH"] == "מבוטלת").all():
print(group["CHOPERD"].iloc[0])