Exercises

R for Data Science by Wickham & Grolemund

Author

Sungkyun Cho

Published

April 22, 2024

Load packages
# numerical calculation & data frames
import numpy as np
import pandas as pd

# visualization
import matplotlib.pyplot as plt
import seaborn as sns
import seaborn.objects as so

# statistics
import statsmodels.api as sm

# pandas options
pd.set_option('mode.copy_on_write', True)  # pandas 2.0
pd.options.display.float_format = '{:.2f}'.format  # pd.reset_option('display.float_format')
pd.options.display.max_rows = 7  # max number of rows to display

# NumPy options
np.set_printoptions(precision = 2, suppress=True)  # suppress scientific notation

# For high resolution display
import matplotlib_inline
matplotlib_inline.backend_inline.set_matplotlib_formats("retina")
# Load the nycflight13 dataset
flights = sm.datasets.get_rdataset("flights", "nycflights13").data.drop(columns="time_hour")

A

다음 조건을 만족하는 항공편을 필터링 해보세요. (1~6)

  1. Had an arrival delay of two or more hours
  2. Flew to Houston (IAH or HOU)
  3. Departed in summer (July, August, and September)
  4. Arrived more than two hours late, but didn’t leave late
  5. Were delayed by at least an hour, but made up over 30 minutes in flight
    출발할 때 예정시간보다 1시간 이상 지연되어 출발하였으나 빠르게 비행하여 출발 지연된 시간보다 도착 지연이 30분이상 단축된 항공편들입니다. (예를 들어, 1시간 늦게 출발했는데, 도착은 28분 지연된 항공편)
  6. Departed between midnight and 6am (inclusive)

  1. Find the fastest flights.
  2. Sort flights to find the most delayed flights. Find the flights that left earliest (예정시간보다 가장 일찍 출발한).
  3. Which flights travelled the farthest? Which travelled the shortest?
  4. 각 도착지 별로, 뉴욕에서 출항한 항공편이 1년 중 몇 일 있었는가?
  5. 뉴욕에서 1년 중 300일 이상 출항하는 도착지들을 구하면?

B

  1. Our definition of cancelled flights (dep_delay or arr_delay is missing) is slightly suboptimal. Why? Which is the most important column?
    • 예를 들어, 출발지연은 missing이 아니나 도착지연은 missing인 것이 있음
  2. Look at the number of cancelled flights per day. Is there a pattern? Is the proportion of cancelled flights related to the (daily) average delay?
    • 취소되는 항공편들이 많은 것과 관계 있는 것은 무엇이 있을까…
  3. What time of day should you fly if you want to avoid delays as much as possible?
  4. For each destination, compute the total minutes of delay. For each flight, compute the proportion of the total delay for its destination.
  5. Find all destinations that are flown by at least two carriers. Use that information to rank the carriers.
    • 즉, 적어도 두 항공사가 출항하는 도착지들도 한정한 후,
    • 다양한 곳으로 출항할수록 높은 순위의 항공사라고 보고, 항공사들의 순위를 정해봄

C

Challenges:

  1. Which carrier has the worst arrival delays? Challenge: can you disentangle the effects of bad airports vs. bad carriers? Why/why not?

    • 항공사(carrier)마다 취항하는 곳에 차이가 날 수 있다면, 그건 그 노선 혹은 공항의 문제이지 항공사의 문제는 아닐 수도 있음을 암시하는 것임
  2. Which plane (tailnum) has the worst on-time record?

    • on-time을 적절히 정의한 후에 진행; 여러 방식이 있을 수 있음
    • 예를 들어, 늦게 도착하지 않은 항공편의 “갯수”로 보거나
    • 도착지연의 평균값을 기준으로 볼 수도 있음
  3. Look at each destination. Can you find flights that are suspiciously fast? (i.e. flights that represent a potential data entry error).

    • 빠르게 비행한 이유: 제트 기류? 정체가 심한 공항?…
    • 같은 루트를 비행하는 항공편들 안에서 특이점이라면 의심해 볼만함…
    • 서로 다른 루트를 비행하는 항공편들과의 비교는?
    • 빠르다는 것을 비교하려면 동일한 루트에서 비교해야 적절함
    • 다른 루트의 항공편들까지 같이 비교하려면 어떤 방식이 있겠는가?
  4. Compute the air time of a flight relative to the shortest flight to that destination. Which flights were most delayed in the air?

    • “상대적”의 의미가 값의 차이로 볼지 비율의 차이로 볼지도 고려해 볼 것
  5. ** For each plane, count the number of flights before the first delay of greater than 1 hour.

    • np.cumsum을 활용