개인의견
배달
구내식당
부동산
H&M
게임
마케팅
의견취합
생각보다 겹치지 않고 의견이 나와서, 진짜 하기 싫은 거 하나 고르기 / 진짜 하고싶은 거 고르기 했는데
ㅋㅋ 이러다 평생 안 정해질 것 같아서 핀볼 돌림

나는 개인적으로 데이터가 단순하지 않고 관심있는 분야인 게임을 하고싶었지만, 팀원분들 중에서는 게임에 관심이 없는 분들이 있어서 걱정됐다😅
롤체는 나도 한번밖에 해보진 않았지만, 동진님이 롤체를 하셔서 같이 자료 만드는 데 큰 도움을 주셨다
그래서 나온 결과물

무려 45페이지짜리 자료임

+) 동현님은 코테때문에 준비하느라 바쁘셔서 자료 만들때엔 참여하시지 못했지만, 팀원분들이 남겨놓은 질문 리스트에 세세하게 답변을 달아주심 🙇 감사합니다
ppt를 마치고 컬럼들 같이 보면 좋을 것 같다고 하셔서 미리 불러놓은 데이터프레임들 쭉쭉 보여드리면서 설명했다!
여기서 새롭게 알게된 건
pd.set_option('display.max_colwidth',None) # 긴 문자열 표시
컬럼 내 문자열의 길이가 긴 경우 이렇게 제한을 풀어줄 수 있다 !
내일까지 어떤 분석이 나올 수 있을지 생각해보고 논의하기로 해서, 나는 좀 더 정리해서 다듬어보려고 한다✨
🔗개인과제
필수 1) 데이터 불러오기 🟢
내가 작성한 코드
#저는 vscode를 사용했습니다
#from google.colab import drive
#drive.mount('/content/drive')
import pandas as pd
df = pd.read_csv(r"경로는비밀/flight_data_homework.csv")
# 행 열 개수 확인
df.shape
# 테이블 처음 5줄 확인하기
df.head()
필수 2) 결측치 처리🟢
내가 작성한 코드
import pandas as pd
import numpy as np
# 컬럼 별 결측치 개수 구하기
df.isnull().sum()
# 결측치가 있는 행 모두 제거
df = df.dropna()
#확인
df.isnull().sum()
필수 3) 조건에 맞는 데이터 추출하기 🟢
내가 작성한 코드
import pandas as pd
import numpy as np
# destination 컬럼 기준 price의 평균값과 중앙값
# 전처리시각화 강의자료 기준
# df[['Price', 'Destination']].groupby('Destination').agg(['mean','median']).round(1)
# 소현튜터님 강의자료 기준 🟢
df.groupby('Destination')[['Price']].agg(['mean', 'median']).round(1)
#이 두가지가 나오는 값은 같은데 어떤 차이가 있는지 모르겠습니다
# airline, total_stops, route 중복값 제거
# 행기준으로 airline , total , route 세개 값이 전부 일치해야 제거
# df2_1 = df[['Airline', 'Total_Stops', 'Route']].drop_duplicates().reset_index(drop=True)
# airline, total_stops 기준 > groupby 하고 unique > route값만 중복인 걸 제거
df2 = df.groupby(['Airline', 'Total_Stops'])['Route'].unique().explode().reset_index()
# 문제 정답은 route 값만 중복인 걸 제거하는 게 맞는 것 같은데 모호한 것 같아 두가지 다 제출합니다
두번째 문제는 중복값 제거하고 count하는 게 원래 출제 목적이라고 하셨다! count가 빠져서 어렵게 된 문제인 것 같다 😅
df2 = df.groupby(['Airline', 'Total_Stops'])['Route'].nunique().reset_index()
필수 4) 조건에 맞는 데이터 추출하기2 🟢
내가 작성한 코드
import pandas as pd
import numpy as np
# 피봇테이블 구현 / 출발지, 도착지 기준 Airline count / count 값 기준 내림차순 정렬
pivot_table = df.pivot_table(index = ['Source', 'Destination'], values = 'Airline', aggfunc = 'count').sort_values(by = 'Airline', ascending = False)
#확인용
pivot_table
# Airline = air india / price >= 7000 필터링
filtering = df[(df['Airline'] == 'Air India') & (df['Price'] >= 7000)]
# 확인용
filtering.head()
filtering.tail()
# mask 방식
mask = ((df['Airline'] == 'Air India') & (df['Price'] >= 7000)
df[mask]
도전 1) 조건에 맞는 데이터 추출하기3 🟢
내가 작성한 코드
import pandas as pd
import numpy as np
import datetime as dt
# object > datetime
df['Date_of_Journey'] = pd.to_datetime(df['Date_of_Journey'])
# 확인용
df.info()
# dt.day_name 사용
df['day_name'] = df['Date_of_Journey'].dt.day_name()
avg_wed_price = df.loc[df['day_name'] == 'Wednesday'][['Price']].agg('mean')
# 확인용
print(avg_wed_price)
# 예약 날짜 컬럼 datetime형식으로 변환
df['Date_of_Journey'] = pd.to_datetime(df['Date_of_Journey'].infer_datetime_format = True)
# 요일 컬럼 추가
df['Day_of_Week'] = df['Date_of_Journey'].dt.day_name()
# 수요일에 예약된 항공권의 평균 가격 계산
wednesday_avg_price = df[df['Day_of_Week'] == 'Wednesday']['Price'].mean()
wednesday_avg_price
# 예약 날짜 컬럼 datetime형식으로 변환
df['Date_of_Journey'] = pd.to_datetime(df['Date_of_Journey'].infer_datetime_format = True)
# 수요일에 예약된 항공권의 평균 가격 계산
wednesday_avg_price = df['Date_of_Journey'].apply(lambda x: x.day_name() == 'Wednesday')]['Price'].mean()
wednesday_avg_price
# 예약 날짜 컬럼 datetime형식으로 변환
df['Date_of_Journey'] = pd.to_datetime(df['Date_of_Journey'].infer_datetime_format = True)
# 시작 날짜 설정
start_date = df['Date_of_Journey'].min()
end_date = df['Date_of_Journey'].max()
# 매주 수요일에 반복되는 날짜 생성
reservations = list(rrule(WEEKLY, dtstart = start_date, until = end_date, byweekday = WE))
wednesday_avg_price = df[df['Date_of_Journey'].isin(reservations)]['Price'].mean()
# 예약 날짜 컬럼 datetime형식으로 변환
df['Date_of_Journey'] = pd.to_datetime(df['Date_of_Journey'].infer_datetime_format = True)
# 시작 날짜 설정
start_date = df['Date_of_Journey'].min()
# 매주 수요일에 반복되는 날짜 생성
# 월 MO 또는 0
# 화 TU 또는 1
# 수 WE 또는 2
# 목 TH 또는 3
# 금 FR 또는 4
# 토 SA 또는 5
# 일 SU 또는 6
reservations = list(rrule(WEEKLY, dtstart = start_date, byweekday = 2))
mask = (df['Date_of_Journey'].isin(reservations))
df2 = df[mask]
df2['Price'].mean
도전 2) 조건에 맞는 데이터 추출하기4 🟢
내가 작성한 코드
import pandas as pd
import numpy as np
import datetime as dt
# Dep_TIme > datetime > hour만 추출
df['Dep_Hour'] = pd.to_datetime(df['Dep_Time'], format='%H:%M').dt.hour
# 아침,낮,오후,밤 lambda로 나눠주기
df['DT_category'] = df['Dep_Hour'].apply(lambda x: '아침' if 5 <= x < 12
else '낮' if 12 <= x < 18
else '오후' if 18 <= x < 24
else '밤')
# category 숫자 세기
df['DT_category'].value_counts()
df['Dep_Time'] = pd.to_datetime(df['Dep_Time'].infer_datetime_format = True)
df['Time_Of_Day'] = df['Dep_Time'].apply(lambda x: '아침' if 5 <= x < 12
else '낮' if 12 <= x < 18
else '오후' if 18 <= x < 24
else '밤')
df.groupby(['Time_Of_Day'])['Airline'].count.reset_index()
다 어찌저찌 정답은 잘 구했다!
pd.to_datetime쓸때 .infer_datetime_format = True를 쓰는 걸 잊지 말자
코드카타 57-58❌코드카타 33-34❌과제해설 복기✅4주차❌주제선정✅ 데이터소스 정리✅아침부터 새로 도입된 QR체크인은 말썽이고, 우리 팀 노션은 다른 조에서 삭제하고, 와중에 나는 실업인정 4차출석 때문에 바로 가야해서 왕 정신 없었다 😵💫
원래 9시 땡하면 바로 출발하려고 했는데 늦을 것 같아서 택시탐 -6700💸 돌아올때도 생각보다 일찍 끝났길래 발제 전까지 도착하고 싶어서 택시탐 -9500💸 괜자나 딩딩딩딩딩
게임 데이터 얘기하니까 잘 모르는 게임인데도 불구하고 뭔가 이것저것 나올 수 있는 분석 방향이 떠올라서 재밌을 것 같아가지고 너무 설렜다
다솜님의 목소리가 점점 축축 쳐졌지만... (미안합니다..) 그래서 아무튼 더 열심히 자료 만들게 된 것 같다!
매번 느끼지만 동진님은 참 어떤 것이든 설명하는 것에 타고나신 것 같아서 놀랍다 ppt 방향도 호다닥 정하고 뚝딱뚝딱 정리해서 만드셔서 신기했음
결국 오늘도 나오는 동진님샤라웃.. 고맙습니다.. 고맙습니다..
빨리 데이터 씹고뜯고맛보고즐기고 해야지
내일도 파이팅🍀
(강의는 꼭 듣기.. ^^ !! 양심이 있다면 ^^!!)
게임~!!~ 수히님 전문 도메인이닷 축하해욧!!!!!!! 일주일 넘게 봐야하는데 익숙한게 좋은듯욬ㅋㅋ