https://colab.research.google.com/drive/1d50SyNgswBnMuieAEhA3Rdtw62gYpId0#scrollTo=5U1b6fqYnNCf
Google Colab Notebook
Run, share, and edit Python notebooks
colab.research.google.com
배웠던 것중에 인상 깊은 것 몇 가지만 써놓겠다.
1. 증가률 feature 새로 추가 (pct_change)
df_by_airlines = df_comp_sum.groupby("항공사별(1)")
# 연간 운항 편수 증가율 계산
df_comp_sum.loc[:,"운항 (편)_증가율"] = df_by_airlines["운항 (편)"].pct_change() * 100
# 연간 여객 수 증가율 계산
df_comp_sum.loc[:,"여객 (명)_증가율"] = df_by_airlines["여객 (명)"].pct_change() * 100
df_comp_sum.head()
df_comp_sum.loc[:,"화물 (톤)_증가율"] = df_by_airlines['운항 (편)'].pct_change() * 100
2. condition, drop(inplace)
조건으로 df 가져오고 필요없는 열은 drop하되 drop한 df은 inplace=True로 copy가 아닌 원본으로 가져온다.
cond1 = df_comp_sum['항공사별(1)'] !="합계"
cond2 = df_comp_sum['도착출발별(1)']=='계'
cond = cond1 & cond2
df_sum1 = df_comp_sum.loc[cond]
df_sum1
df_sum1.drop(['도착출발별(1)'], axis=1, inplace=True)
df_sum1
3. groupby, agg
feature로 grouping하여서 필요한 feature의 평균값을 가져온다.
df_sum1.groupby(['시점'])[['운항 (편)_증가율', '여객 (명)_증가율','화물 (톤)_증가율']].agg('mean')
4. secondary_y
두 개의 그래프의 두 개의 y축을 보이고 싶을 때 쓴다. y값의 범주가 서로 다를 경우 범주가 적은 쪽의 데이터 그래프가 단조롭고 증감률이 없어보일 수 있다.
# 출발별 연간 운항 편수 및 여객 수 분석
departure_stats = df_comp_arrive.groupby("시점")[["운항 (편)", "여객 (명)"]].sum()
departure_stats.plot(secondary_y="여객 (명)") # 여객 명수를 보기 위해 y축 추가
# departure_stats.plot()
5. 시간 parsing
object dtype인 시점을 datetime으로 바꾼 후에 년,월,일,요일 로 parsing해서 feature로 지정한다.
# 시간에 따른 화물 운송량 시각화
df_comp_sum["시점"] = pd.to_datetime(df_comp_sum["시점"]) # 날짜 형식으로 변환
df_comp_sum["년"] = df_comp_sum["시점"].dt.year
df_comp_sum["월"] = df_comp_sum["시점"].dt.month
df_comp_sum["일"] = df_comp_sum["시점"].dt.day
df_comp_sum["요일"] = df_comp_sum["시점"].dt.dayofweek # (월 = 0)
6. 특정 feature간 의 추이 비교
내가 원하는 feature의 특정값을 가져와서 x로 지정하고, feature간의 추이를 비교하기.
feature 짬뽕 시키기!
plt.figure(figsize=(12, 6))
plt.plot(df_comp_sum[df_comp_sum["항공사별(1)"] == "아시아나항공"]["년"],
df_comp_sum[df_comp_sum["항공사별(1)"] == "아시아나항공"]["화물 (톤)"],
label="아시아나항공")
plt.plot(df_comp_sum[df_comp_sum["항공사별(1)"] == "대한항공"]["년"],
df_comp_sum[df_comp_sum["항공사별(1)"] == "대한항공"]["화물 (톤)"],
label="대한항공")
plt.xlabel("년도")
plt.ylabel("화물 운송량 (톤)")
plt.legend()
plt.title("년도별 아시아나 항공과 대한항공의 화물 운송량 추이")
plt.show()
7. crosstab
Compute a simple cross tabulation of two (or more) factors.
By default, computes a frequency table of the factors unless an array of values and an aggregation function are passed.
year_comp = pd.crosstab(index=df_comp_sum["년"],
columns=df_comp_sum["항공사별(1)"],
values=df_comp_sum["여객 (명)"],
aggfunc="sum").fillna(0)
year_comp.style.background_gradient(axis=None).format("{:,.0f}")
데이터 짬뽕씨켜서 시각화하는 건 많이 못해봤다. 그래서 나름대로 할만한 것 같다.
이와 비슷한 데이터셋으로 통계 분석해보라고 하시는데, 뭘로 해야할 지 고민이
'개발공부 > SK Networks Family AI bootcamp 강의노트' 카테고리의 다른 글
17일차 [Bike sharing demand 데이터 분석/ 머신러닝 개요 / numpy 기초] (0) | 2025.02.06 |
---|---|
16일차 [ Seaborn, EDA ] (1) | 2025.02.05 |
15일차 [ matplotlib ] (0) | 2025.02.04 |
14일차 [ 데이터 시각화 ] (0) | 2025.02.03 |
14일차 [ pandas 심화 ] (0) | 2025.02.03 |