[SECTION 13. 파이썬 기초 문법 - Pandas 실전 활용: 외부 데이터 불러오기]
| 함수 | 대상 파일 형식 | 설명 및 용도 |
|---|---|---|
read_csv() | .csv, .txt | 가장 많이 쓰이는 방식. 콤마(,)나 탭으로 구분된 텍스트 데이터 로드 |
read_excel() | .xls, .xlsx | 엑셀 파일을 불러올 때 사용 |
read_json() | .json | 웹 서버와 데이터를 주고받을 때 쓰는 JSON 형식을 표로 변환 |
read_html() | 웹 페이지 (URL) | 웹 페이지 내의 <table> 태그를 찾아 자동으로 표를 추출 |
read_csv() 완벽 정복하기filepath: 파일 경로 혹은 URLencoding: 한글이 깨진다면 'cp949' 또는 'utf-8'을 지정sep: 구분자 (기본값은 쉼표 ,)index_col: 특정 열을 인덱스로 사용하고 싶을 때 지정| 분류 | 명령어 | 기능 설명 | 주요 확인 사항 |
|---|---|---|---|
| 데이터 확인 | df.head(n) | 데이터프레임의 상위 n개 행을 반환합니다. | 데이터의 구성 형식 및 실제 값의 형태 |
| 데이터 확인 | df.tail(n) | 데이터프레임의 하위 n개 행을 반환합니다. | 데이터 로드 완료 여부 및 마지막 부분의 형식 |
| 데이터 구조 | df.shape | 데이터프레임의 행(Row)과 열(Column) 수를 반환합니다. | 전체 데이터의 규모(차원) 파악 |
| 데이터 구조 | df.columns | 데이터프레임에 포함된 모든 열 이름을 반환합니다. | 분석에 사용할 특성(Feature) 명칭 확인 |
| 데이터 정보 | df.info() | 인덱스, 컬럼명, 데이터 타입, 결측치 정보를 출력합니다. | 결측치(Null) 존재 여부 및 데이터 타입 일치 확인 |
| 기술 통계 | df.describe() | 수치형 데이터의 주요 통계량을 요약하여 출력합니다. | 평균, 표준편차, 사분위수, 최댓값/최솟값 확인 |
Clean_Dataset.csv 데이터 불러오기Clean_Dataset.csv
import pandas as pd
# 1. CSV 데이터 불러오기
df = pd.read_csv('./Clean_Dataset.csv')
df


Clean_Dataset.csv 분석하기import pandas as pd
# 1. CSV 파일 불러오기
# index_col=0 은 파일의 첫 번째 열을 인덱스로 지정하겠다는 의미입니다.
df = pd.read_csv('./Clean_Dataset.csv', index_col=0)
# 2. 데이터 확인 (상위 5개 행)
print("--- 상위 5개 데이터 (head) ---")
print(df.head())
# 3. 데이터 확인 (하위 3개 행)
print("\n--- 하위 3개 데이터 (tail) ---")
print(df.tail(3))
# 4. 데이터 구조 확인 (행, 열)
print("\n--- 데이터 구조 (shape) ---")
print(df.shape)
# 5. 열 이름 확인
print("\n--- 열 목록 (columns) ---")
print(df.columns)
# 6. 데이터 정보 확인 (타입 및 결측치)
print("\n--- 데이터 정보 (info) ---")
df.info()
# 7. 기술 통계량 확인
print("\n--- 기술 통계 (describe) ---")
print(df.describe())
Clean_Dataset.csv 에서 열(Column)로 데이터 선택[]) 안에 컬럼명을 입력합니다.import pandas as pd
# 1. CSV 파일 불러오기
df = pd.read_csv('./Clean_Dataset.csv')
# 2. 단일 열 선택 (Series 형태로 반환)
# 항공사(airline) 정보만 추출
airlines = df['airline']
print("--- 단일 열 선택 (airline) ---")
print(airlines.head())
# 3. 여러 열 선택 (DataFrame 형태로 반환)
# 항공사(airline), 출발 도시(source_city), 가격(price) 정보 추출
subset = df[['airline', 'source_city', 'price']]
print("\n--- 여러 열 선택 (airline, source_city, price) ---")
print(subset.head())
[[ ]] 사용해야 합니다. (내부의 ['airline', 'price']는 선택할 열들의 '리스트'를 의미합니다.)Clean_Dataset.csv 에서 특정 열과 범위 선택loc와 정수 인덱스 기반의 iloc의 차이점을 익히는 것이 핵심입니다.import pandas as pd
# 1. CSV 파일 불러오기
df = pd.read_csv('./Clean_Dataset.csv')
# 2. 0번부터 5번 인덱스 행까지, 'airline'부터 'source_city' 컬럼까지 선택
# ※ loc는 마지막 범위(5번 행, source_city 열)를 포함합니다.
print("--- loc를 이용한 범위 선택 ---")
print(df.loc[0:5, 'airline':'source_city'])
# 3. 0~4번 행(5번 제외), 0~2번 열(3번 제외) 선택
# ※ iloc는 파이썬 슬라이싱 규칙에 따라 마지막 인덱스를 포함하지 않습니다.
print("\n--- iloc를 이용한 범위 선택 ---")
print(df.iloc[0:5, 0:3])
Q1. 항공권 데이터의 전체적인 규모를 파악하고, 분석에 필요한 핵심 정보만 골라내려고 합니다.
Clean_Dataset.csv 파일을 불러와서 데이터프레임의 전체 행(Row)과 열(Column)의 개수를 출력하세요.df_price 변수에 저장하세요.df_price의 상위 10개 데이터를 출력하여 제대로 추출되었는지 확인하세요.import pandas as pd
df = pd.read_csv('Clean_Dataset.csv')
print(f"행과 열의 개수: {df.shape}")
df_price = df[['airline', 'price']]
print(df_price.head(10))Q2. 특정 구간의 노선 정보(출발지~도착지)를 집중적으로 확인해야 합니다.
loc를 사용하여 인덱스 번호 50번부터 60번까지의 데이터를 추출하세요.import pandas as pd
df = pd.read_csv('Clean_Dataset.csv')
# 50번부터 60번까지의 정보
print(df.loc[50:60, 'source_city' : 'destination_city'].info())
# 50번부터 60번까지의 데이터 개수
print(df.loc[50:60, 'source_city' : 'destination_city'].shape[0])
[SECTION 14. 파이썬 기초 문법 - Pandas 실전 활용: 필요 데이터 변경하기]
| 기능 | 메소드/문법 | 설명 |
|---|---|---|
| 열 추가(계산) | df['새컬럼'] = 연산 | 기존 컬럼을 이용해 새로운 데이터를 계산해서 추가합니다. |
| 열 삽입 | df.insert(위치, 이름, 값) | 내가 원하는 특정 위치(순서)에 컬럼을 끼워 넣습니다. |
| 삭제 | df.drop() | 행(Row)이나 열(Column)을 삭제합니다. axis 설정이 핵심입니다. |
| 이름 변경 | df.rename() | 컬럼의 이름을 더 이해하기 쉬운 명칭으로 바꿉니다. |
| 정렬 | df.sort_values() | 특정 기준을 정해 데이터를 오름차순/내림차순으로 줄 세웁니다. |
df['새이름'] = 계산식 형태로 작성합니다.# 항공권 가격(price)이 2배로 올랐다고 가정해봅시다.
import pandas as pd
df = pd.read_csv('./Clean_Dataset.csv')
# 'price2'라는 이름으로 2배 가격 열 추가
df['price2'] = df['price'] * 2
print(df[['price', 'price2']].head())
df.insert(위치번호, '열이름', 값)import pandas as pd
df = pd.read_csv('./Clean_Dataset.csv')
# 맨 앞(0번 인덱스)에 '국가' 정보를 넣고 싶을 때
df.insert(0, 'country', 'India')
print(df.head(3))
df.rename(columns={'옛이름': '새이름'}){ : }) 구조를 사용한다는 점이 핵심입니다.import pandas as pd
df = pd.read_csv("Clean_Dataset.csv")
df2 = df.rename(columns={"airline" : "항공사"})
print("=== 원본 ===")
print(df.columns)
print("=== 수정본 ===")
print(df2.columns)
by: 기준이 될 컬럼명ascending: True(오름차순, 기본값), False(내림차순, 큰 것부터)import pandas as pd
df = pd.read_csv("Clean_Dataset.csv")
df_sorted = df.sort_values(by="price", ascending=False)
print(df_sorted[['airline','price']])
axis=1: 세로 줄(열, Column) 삭제axis=0: 가로 줄(행, Row) 삭제 (기본값)import pandas as pd
df = pd.read_csv("Clean_Dataset.csv")
df['price2'] = df['price'] * 2
df = df.drop(['price2'], axis=1)
print(df.columns)
import pandas as pd
df = pd.read_csv("Clean_Dataset.csv")
print(df.head())
# 3번째 행을 제거
df = df.drop(3)
print(df.head())
Q1. 항공사에서 세금 정책이 변경되어 모든 항공권 가격을 5% 인상하기로 했습니다. 또한, 분석 보고서를 위해 컬럼 이름을 더 명확하게 바꿔야 합니다.
price 컬럼에 1.05를 곱하여 final_price라는 새로운 열을 만드세요.airline 컬럼의 이름을 brand로 변경하세요.import pandas as pd
df = pd.read_csv('Clean_Dataset.csv')
df['final_price'] = df['price'] * 1.05
df = df.rename(columns={'airline' : 'brand'})
df.head()Q2. 데이터 분석을 시작하기 전, 불필요한 번호를 지우고 비행 시간이 긴 순서대로 데이터를 정리하라는 지시를 받았습니다.
Unnamed: 0 컬럼을 삭제하세요. (axis 설정 주의)is_filtered라는 컬럼을 만들고, 모든 값을 True로 채우세요. (df.insert 활용)duration)이 긴 순서(내림차순)대로 정렬하여 출력하세요.