3. 데이터 파악 및 수정
🔗 'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _φ(๑╹╹๑)
📌 데이터 파악
- read_csv('파일 경로'): 실습 데이터 불러오기
import pandas as pd # pandas 패키지 로드
# 실습 데이터: 미국 환경 보호국에서 공개한 1999~2008년 미국에 출시된 자동차 234종 정보
mpg = pd.read_csv('mpg.csv') # 실습 데이터 → 데이터 프레임
| mpg 데이터 변수명 |
내용 |
| manufacturer | 제조 회사 |
| model | 자동차 모델명 |
| displ | 배기량 (displacement) |
| year | 생산연도 |
| cyl | 실린더 개수 (cylinders) |
| trans | 변속기 종류 (transmission) |
| drv | 구동 방식 (drive wheel) |
| cty | 도시 연비 (city) |
| hwy | 고속도로 연비 (highway) |
| fl | 연료 종류 (fuel) |
| category | 자동차 종류 |
- head(): 데이터의 앞에서부터 다섯 번째 행까지 출력하는 기능, 괄호 안에 숫자 입력시 해당 행까지 출력
mpg.head()

- tail(): head()와 반대로 데이터의 뒤에서부터 다섯 번째 행까지 출력하는 기능, 괄호 안에 숫자 입력시 해당 행까지 출력
mpg.tail()

- shape: 데이터 프레임의 행, 열 개수를 출력하는 기능으로 (행 개수, 열 개수)로 출력되며, 변수가 지니고 있는 값으로 함수와 달리 괄호 사용 X
mpg.shape # 출력 결과: (234, 11)
- info(): 변수들의 속성을 출력하는 기능
- 출력 결과 설명
- <class 'pandas.core.frame.dataframe'> : pandas로 만든 데이터 프레임
- 234 entries, 0 to 233: 234행으로 구성되어 있으며, 행 번호가 0부터 233까지
- total 11 columns: 변수 11개로 구성
- 나머지 정보: 변수 속성 정보
- #: 해당 변수 순서
- column: 변수 이름
- Non-Null Count: 결측치(누락된 값)를 제외하고 변수에 들어있는 값의 개수
- Dtype: 속성
- int64: 정수
- float64: 실수
- object: 문자
- datetime64: 날짜 시간
- 출력 결과 설명
mpg.info()

- describe(): 변수들의 요약 통계량을 출력하는 기능
- 사분위수 이해하기 쉬운 링크: https://velog.io/@j1eon/IQR-%EB%B6%84%EC%84%9D%EB%B2%95
IQR 분석
IQR (Interquartile Range) 사분위수 범위는 이상치를 탐지하는 데 사용되는 대표적 통계 지표 > 데이터의 변동성을 시각화하고, 이상치를 객관적으로 걸러낼 수 있는 통계적 도구 중 하나
velog.io
| 출력값 (숫자 변수 해당) |
통계량 | 설명 |
| count | 빈도 | (결측치를 제외한) 값의 개수 |
| mean | 평균 | 모든 값을 더해 값의 개수로 나눈 값 |
| std | 표준편차 | 변수의 값들이 평균에서 떨어진 정도 |
| min | 최소값 | 가장 작은 값 |
| 25% | 1사분위수 | 하위 25%(4분의 1) 위치의 값 |
| 50% | 중앙값 | 하위 50%(중앙) 위치의 값 |
| 75% | 3사분위수 | 하위 75%(4분의 3) 위치의 값 |
| max | 최대값 | 가장 큰 값 |
| 출력값 (문자 변수 해당) |
통계량 | 설명 |
| count | 빈도 | (결측치를 제외한) 값의 개수 |
| unique | 고유값 빈도 | 중복을 제거한 범주의 개수 |
| top | 최빈값 | 개수가 가장 많은 값 |
| freq | 최빈값 빈도 | 개수가 가장 많은 값의 개수 |
# 기본 형태
# mpg.describe()
# 문자로 된 변수의 요약 통계량 함께 출력하는 방법
mpg.describe(include = 'all')

- cty(도시 연비: 자동차가 도시에서 연료 1갤런에 몇 마일 주행하는지를 의미) 요약 통계량 살펴보기
- mean: 자동차가 도시에서 갤런당 평균 16.8마일 주행
- min: 도시 연비가 가장 낮은 자동차는 갤런당 9마일 주행
- max: 도시 연비가 가장 높은 자동차는 갤런당 35마일 주행
- manufacturer(자동차 제조 회사) 요약 통계량 살펴보기
- unique: 자동차 제조 회사의 종류 15개
- top: 가장 많은 자동차를 생산한 제조 회사는 dodge
- freq: dodge는 37종을 생산
📌 변수명 변경
- 복사본 만들기: 원본 데이터를 보존하여 오류 발생시 원 상태로 되돌리고 데이터를 비교하며 변형 과정을 검토할 수 있도록 하기 위함
mpg_new = mpg.copy()
- 변수명 변경: rename({columns: '기존 변수명': '새 변수명'})한 후, 할당해야 바뀐 변수명 저장
# 변수명 cty → city, hwy → highway 변경
mpg_new = mpg_new.rename(columns = {'cty': 'city', 'hwy': 'highway'}
mpg_new.head()

📌 파생변수 생성
- 파생변수 생성
# total 변수: 통합 연비 변수(도시 연비와 고속도로 연비의 평균)
mpg['total'] = (mpg['cty'] + mpg['hwy'])/2
mpg.head()

mpg['total'].mean() # 전체 자동차의 평균 연비
- 조건문을 활용한 파생변수 생성
- 기준값 정하기: 데이터프레임의 describe() 함수와 plot.hist() 함수를 활용하여 요약 통계량과 히스토그램(값의 빈도를 막대 길이로 표현한 그래프)을 확인한 후, 상황에 맞는 기준값 설정
- 조건 판정 변수 생성: numpy(수치 연산 관련) 패키지의 where(조건, '참인 경우', '거짓인 경우') 함수 활용
- 빈도표로 조건 판정 수 확인: 데이터프레임의 value_counts() 함수 활용
# 요약 통계량 확인
mpg['total'].describe()

# 히스토그램 확인
mpg['total'].plot.hist()

# 합격 판정 변수 생성
import numpy as np
mpg['test'] = np.where(mpg['total'] >= 20, 'pass', 'fail')
mpg.head()

# 빈도표로 합격 수 확인
mpg['test'].value_counts()

- 중첩 조건문을 활용한 파생변수 생성
| 통합 연비 등급 | 기준 |
| A | 30 이상 |
| B | 20~29 |
| C | 20 미만 |
mpg['grade'] = np.where(mpg['total'] >= 30, 'A', np.where(mpg['total'] >= 20, 'B', 'C'))

mpg['grade'].value_counts()# 빈도 기준 내림차순 정렬

mpg['grade'].value_counts().sort_index() # 빈도 기준 내림차순 정렬 → 알파벳 순 정렬

- '또는' 조건문을 활용한 파생변수 생성
# mpg 데이터의 category가 'subcompact', 'compact', '2seater'에 해당하는 경우 'small', 그렇지 않다면 'large'
# 방법 1: '|' ('\'키 + 'Shift'키 동시에) 사용
mpg['size'] = np.where((mpg['category'] == 'subcompact') | (mpg['category'] == 'compact') | (mpg['category'] == '2seater'), 'small', 'large')
mpg['size'].value_counts()
# 방법 2: isin() 함수 활용
mpg['size'] = np.where(mpg['category'].isin(['compact', 'subcompact', '2seater']), 'small', 'large')
mpg['size'].value_counts()

'데이터 분석 > Python' 카테고리의 다른 글
| 6. 데이터 시각화(seaborn 패키지) (0) | 2026.07.20 |
|---|---|
| 5. 데이터 정제(결측치, 이상치) (0) | 2026.07.17 |
| 4. 데이터 가공(전처리) (0) | 2026.07.16 |
| 2. DataFrame (0) | 2026.07.14 |
| 1. 변수, 함수, 모듈, 패키지 (0) | 2026.07.13 |