:누락, 오류 -> 알맞은 형태로 깨끗하게 가공하는 과정
핵심 목적
데이터 구조 확인: 행·열 개수, 열 이름, 자료형 확인
결측치 확인: 비어 있는 값이 어느 열에 얼마나 있는지 확인
중복값 확인: 같은 데이터가 반복되어 있는지 확인
이상치 확인: 너무 크거나 작은, 일반적인 범위를 벗어난 값 확인
분포 확인: 값이 어디에 많이 몰렸는지 확인
변수 관계 확인: 두 변수 사이에 관련성이 있는지 확인
가설 검증: “여성이 더 많이 생존했을 것이다”처럼 세운 가설을 데이터로 확인
시작 정 실행할 코드
import os
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
\
plt.rcParams['font.family'] = 'AppleGothic'
plt.rcParams['axes.unicode_minus'] = False # 마이너스 기호 깨짐 방지
df.head() # 앞부분 데이터 확인
df.info() # 자료형·결측치 등 구조 확인
df.describe() # 평균, 최솟값, 사분위수 등 통계 확인
df.isna().sum() # 열별 결측치 수
df.duplicated().sum() # 중복 행 수
df["Age"] = df["Age"].fillna(df["Age"].median())
plt.boxplot(df["Age"].dropna())
plt.show()
- df.corr(numeric_only=True) : 비숫자형 열을 제외, 숫자형열끼리만 상관계수를 계산하도록 명시하는 코드
plt.matshow(df.corr(numeric_only=True)) : (숫자형 컬럼들만 골라내어 서로의 상관계수를 계산) -> 매트릭스 시각화 엔진으로 넘기고 숫자를 색상으로 치환한 판을 만듬
plt.colorbar() : 색상 설명서
plt.show()
: 2차원 배열이나 데이터프레임의 숫자 데이터를 그대로 그리드로 가져와서, 숫자의 크기에 따라 서로 다른 색상을 칠해주는 역할
.agg() : 그룹별 또는 전체 데이터에 여러 개의 요약 통계량(평균, 합계, 최댓값 등)을 동시에 적용
- goupby와 연결되서 많이 쓰임
이상치 판단
Q1 = df["Age"].quantile(0.25)
Q3 = df["Age"].quantile(0.75)
IQR = Q3 - Q1
\
lower = Q1 - 1.5 IQR
upper = Q3 + 1.5 IQR
box plot😎
기본적인 코드
plt.boxplot(df["price"])
plt.show()
결측값이 있으면 먼저 제외
plt.boxplot(df["price"].dropna())
plt.show()
import seaborn as sns
sns.boxplot(x="category", y="price", data=df)
plt.show()
sns.boxplot(x="category", y="price", data=df)
\
plt.title("카테고리별 가격 분포")
plt.xlabel("카테고리")
plt.ylabel("가격")
plt.show()
df.boxplot(column="sold", by="price")
plt.show()
import seaborn as sns
import matplotlib.pyplot as plt
\
(1) Seaborn 이용
sns.scatterplot(data=df, x="price", y="sold")
plt.show()
\
(2) Pandas 내장 기능을 이용
df.plot(kind="scatter", x="price", y="sold")
plt.show()
그룹별 비교
df.groupby("Sex")["Survived"].mean()
bar plot
sns.barplot(x="Sex", y="Survived", data=df)
plt.show()
순서 😎
데이터 불러오기
→ 구조 확인
→ 결측치·중복·이상치 확인
→ 필요한 전처리
→ 분포와 관계 시각화
→ 가설 설정·검증
→ 결론 도출