Q1
# 읽어오기
df = pd.read_csv("Desktop/J/Python/세션_전소현 튜터/data/flight_data_homework.csv")
# 행 열 확인
df.shape # 결과 : 10,683 row x 11 columns
# 처음 5줄
df.head()
Q2
# 결측치 개수 확인
df.isna().sum()
# 결측치 행 제거
df1 = df.dropna()
# 제거 확인
df1.isna().sum()
Q3
df1.groupby('Destination')['Price'].agg(['mean', 'median']).round(1)
df2 = df1.groupby(['Airline', 'Total_Stops'])['Route'].nunique().reset_index()
Q4
pd.pivot_table(df, index=['Source', 'Destination'], values='Airline', aggfunc='count').sort_values(by='Airline', ascending=False)
mask = ((df['Airline']=='Air India') & (df['Price']>=7000))
df[mask]
Q5. Date_of_Journey 기준 수요일에 예약된 경우의 평균 가격을 구해주세요.
# 데이트타임으로 변환
df['Date_of_Journey'] = pd.to_datetime(df['Date_of_Journey'])
# 시작과 끝 설정
start_date = df['Date_of_Journey'].min()
end_date = df['Date_of_Journey'].max()
# rrule로 수요일만 담기
wednesdays = list(rrule(WEEKLY, byweekday=WE, dtstart=start_date, until=end_date))
# 수요일의 날짜만 선택해서 price 평균 구하기
wednesdays_average_price = df[df['Date_of_Journey'].isin(wednesdays)]['Price'].mean()
Q6. 출발 시간(Dep_Time) 컬럼을 기준으로 lambda 함수를 활용하여 아침, 오후, 저녁, 밤 비행기로 항공편(Airline)을 분류하고 그 개수를 count 해주세요.
아침: 5시 이상 12시 미만
낮: 12시 이상 18시 미만
오후: 18시 이상 24시 미만
밤: 24시 이상 5시 미만(즉, 위의 세가지가 아닌 경우)
# 데이트타임으로 변환
df['Dep_Time'] = pd.to_datetime(df['Dep_Time'])
# 항공편 분류
df['Time'] = df['Dep_Time'].apply(lambda x:
'아침' if 5 <= x.hour < 12 else
'낮' if 12 <= x.hour < 18 else
'오후' if 18 <= x.hour < 24 else
'밤')
# 카운트
cnt = df.groupby(['Airline', 'Time']).count()
# 중복 없이 나타내기
cnt= df.groupby(['Time'])['Airline'].count().reset_index()