• בלוג
  • הטיסה התבטלה? לפחות נשחק עם פנדה

הטיסה התבטלה? לפחות נשחק עם פנדה

05/08/2024

הממשלה מפרסמת כל יום רשימה של טיסות שהמריאו, נחתו או התבטלו בקישור: https://data.gov.il/dataset/flydata

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

תוכן עניינים

  1. מבנה המידע

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])