[SECTION 17. 파이썬 기초 문법 - Pandas 실전 활용: 데이터의 요약본 만들기]
groupby는 복잡해 보이지만 딱 3단계만 기억하면 됩니다.mean)이나 개수(count)를 계산합니다.import pandas as pd
# 1. 데이터 불러오기 (인덱스 컬럼 지정)
df = pd.read_csv('Clean_Dataset.csv', index_col=0)
# 2. 항공사(airline)별로 그룹을 묶고, 가격(price)의 평균 구하기
# [해석] airline으로 묶어서 -> price 컬럼을 선택해 -> mean(평균)을 내라!
airline_price = df.groupby('airline')['price'].mean()
print("--- 항공사별 평균 항공권 가격 ---")
print(airline_price)
df = pd.read_csv("Clean_Dataset.csv")
airline_price = df.groupby("class")["price"].mean()
print("--- 등급별 평균 항공권 가격 ---")
print(airline_price)
import pandas as pd
df = pd.read_csv('Clean_Dataset.csv', index_col=0)
# agg() 함수를 사용하면 여러 함수를 리스트 형태로 전달할 수 있습니다.
airline_stats = df.groupby('airline')['price'].agg(['mean', 'max', 'min', 'count'])
print("--- 항공사별 가격 상세 통계 ---")
print(airline_stats)
Q1. Clean_Dataset.csv를 사용하여 다음 분석을 수행하세요.
source_city)별로 평균 비행 시간(duration)을 구하세요.import pandas as pd
df = pd.read_csv('clean_dataset.csv')
source_duration = df.groupby('source_city')['duration'].agg(['mean'])
print(source_duration.sort_values(by=['mean'], ascending=False))
[SECTION 18. 파이썬 기초 문법 - 원-핫 인코딩(One-Hot Encoding)]
| 메소드 / 파라미터 | 사용 예시 |
|---|---|
pd.get_dummies() | '성별' 컬럼 하나가 '성별남', '성별여'라는 두 개의 새로운 열로 분리됨 |
columns=['컬럼명'] | 전체 10개 컬럼 중 '항공사', '도시' 등 특정 문자열 컬럼만 선택해서 숫자로 변환 |
drop_first=True | '남/여' 두 열 중 '남'만 남김. (1이면 남성, 0이면 여성으로 인식하여 중복 제거) |
dtype=int | 결과 표의 값이 True/False라는 글자 대신 1/0이라는 깔끔한 숫자로 출력됨 |
성별_남이 1인 순간, 성별_여는 무조건 0입니다. 즉, 하나만 알아도 나머지는 100% 예측 가능한 중복 정보입니다. AI는 이런 불필요한 중복(다중공선성)이 있으면 계산 오류를 낼 확률이 높아집니다.
| 이름 | 성별_남 | 성별_여 |
|---|---|---|
| 철수 | 1 | 0 |
| 영희 | 0 | 1 |
| 이름 | 성별_남 | 정체 |
|---|---|---|
| 철수 | 1 | 남자니까 1 |
| 영희 | 0 | 0이면? 자동으로 여성 |
import pandas as pd
# 1. 샘플 데이터 생성
df_person = pd.DataFrame({'이름': ['철수', '영희', '민수'], '성별': ['남', '여', '남']})
# 2. 원-핫 인코딩 적용 (drop_first=True)
# '성별_남' 열만 남게 되며, 0인 데이터가 여성을 의미함
df_gender = pd.get_dummies(df_person, columns=['성별'], drop_first=True, dtype=int)
print("--- 성별 인코딩 결과 ---")
print(df_gender)
import pandas as pd
# 1. 항공사 데이터 생성
df_air = pd.DataFrame({'항공사': ['Air_India', 'Vistara', 'Indigo', 'Vistara']})
# 2. 원-핫 인코딩
# Indigo와 Vistara 열만 남고, 둘 다 0이면 Air_India를 의미함
df_air_enc = pd.get_dummies(df_air, columns=['항공사'], drop_first=True, dtype=int)
print("\n--- 항공사 인코딩 결과 ---")
print(df_air_enc)
import pandas as pd
# 1. 실제 데이터 로드
df = pd.read_csv('Clean_Dataset.csv', index_col=0)
# 2. 인코딩할 컬럼들 리스트업
target_cols = ['airline', 'source_city', 'destination_city']
# 3. 한 번에 인코딩 적용 및 1/0 숫자로 고정
df_final = pd.get_dummies(df, columns=target_cols, drop_first=True, dtype=int)
print(f"\n인코딩 후 컬럼 개수: {df_final.shape[1]}개")
print(df_final.head())
Q1. Clean_Dataset.csv 데이터를 불러와서, 좌석 등급을 나타내는 'class' 컬럼에 대해 원-핫 인코딩을 수행하세요.
drop_first=True 옵션을 사용하세요.dtype=int 옵션을 사용하세요.df.columns를 출력하여 어떤 컬럼이 남았는지 확인하세요.import pandas as pd
df = pd.read_csv('clean_dataset.csv')
df_enc = pd.get_dummies(df, columns=['class'], drop_first=True, dtype='int')
print(df_enc.columns)Q2. Clean_Dataset.csv 데이터에서 'airline'과 'stops' 두 개의 컬럼을 동시에 원-핫 인코딩 하세요.
답안10이라는 변수에 저장하세요.df.shape 사용)import pandas as pd
df = pd.read_csv('clean_dataset.csv')
답안5 = pd.get_dummies(df, columns=['stops', 'airline'], drop_first=True, dtype='int')
print(f"인코딩 전 컬럼 갯수: {df.shape[1]}")
print(f"인코딩 후 컬럼 갯수: {답안5.shape[1]}")