개인공부

데이터 전처리 & 시각화 26.01.14(수)

nom_de_plume 2026. 1. 14. 19:44

Pandas

챕터 3-1 ~ 4

 

Pandas

- 파이썬 데이터 분석의 핵심 라이브러리

import pandas as pd

# 예시 데이터프레임 생성
df = pd.read_csv('data.csv') # 또는 직접 생성

 

컬럼(Column)

- 컬럼

  • 데이터프레임(DataFrame)의 열(또는 변수)
  • 행과 열로 구성, 각 열은 서로 다른 종류의 데이터를 담고 있습니다.
  • 데이터프레임의 세로 방향에 있는 데이터들
  • 특징
    1. 고유한 이름(라벨)을 가지고 있으며, 해당 컬럼의 데이터를 식별하는 데 사용
    2. 특정한 종류의 데이터를 담고 있고 숫자, 문자열, 날짜 등 다양한 유형의 데이터를 포함할 수 있음
    3. 시리즈(Series) 객체로 구성되어 있으며, 시리즈는 동일한 데이터 유형을 가진 1차원 배열과 유사함
    4. 데이터프레임의 일부로 간주되며, 해당 열의 데이터를 조작하고 접근할 수 있는 인터페이스를 제공함
  • 컬럼명 변경하기
names = [’컬럼명1’ , ‘컬럼명2’ , … , ‘컬럼명 19’]
  • 컬럼명 확인하기
데이터프레임.column

 

데이터 및 컬럼 상태 확인

- 데이터를 불러온 후 가장 먼저 수행해야 하는 단계

기능 코드 설명
상단 데이터 확인 df.head(n) 상위 n개 행 출력 (기본값 5)
하단 데이터 확인 df.tail(n) 하위 n개 행 출력
요약 정보 확인 df.info() 인덱스, 컬럼명, 컬럼의 데이터 개수, 데이터 타입, 결측치(Non-null) 개수 확인
기술 통계량 df.describe() 숫자형 컬럼의 개수, 평균, 표준편차, 사분위수, 중앙값 등 확인
데이터 모양 df.shape (행, 열) 크기를 튜플로 반환
컬럼명 목록 df.columns 전체 컬럼 이름 확인
결측치 개수 df.isnull().sum() 각 컬럼별 비어있는 값(NaN)의 개수 확인

 

데이터 불러온 다음 꼭 확인

  • 결측치 확인
df.isnull()
  • 결측치 제거
df.dropna()
  • 중복 데이터 확인
df.duplicated(subset=['컬럼1', '컬럼2', '컬럼3'])
  • 중복 데이터 제거
df.drop_duplicates(subset=['컬럼1', '컬럼2', '컬럼3'])
  • 이상치 처리
# IQR 계산
Q1 = df['컬럼1'].quantile(0.25)
Q3 = df['컬럼1'].quantile(0.75)
IQR = Q3 - Q1

# 이상치 기준 설정
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 이상치 제거
df[(df['컬럼1'] >= lower_bound) & (df['컬럼1'] <= upper_bound)]
  • 데이터 타입 변경
DataFrame['column_name'] = DataFrame['column_name'].astype(new_dtype)

df['column_name'].astype(int)
df['column_name'].astype(float)
df['column_name'].astype(str)
df['column_name'].astype(bool)
df['column_name'].astype('category')
df['column_name'].astype('datetime64[ns]')
df['column_name'].astype(complex)
df['column_name'].astype(object)

 

데이터 선택 (Selection)

- 원하는 특정 행이나 열을 뽑아내는 방법

- 컬럼(열) 선택

  • 1개의 컬럼 전체: 슬라이싱 활용해서 선택
data.loc[: , '컬럼명']

#또는 데이터프레임['컬럼명'] 으로도 동일한 값을 선택할 수 있습니다.
data['컬럼명']
# 여러개의 컬럼을 선택할 경우에도 리스트를 활용해서 선택
data[   ['컬럼명1', '컬럼명2', '컬럼명3' ]   ]
# 여러개 컬럼을 선택할때, 내가 원하는 순서대로 데이터를 선택
data[   ['컬럼명3', '컬럼명1', '컬럼명2' ]   ]

 

  • 2개 이상의 셀 선택: 리스트 형태를 활용해서 데이터를 선택
# 2개 컬럼명을 선택할 경우
data.loc[  '행이름'  , ['컬럼명1' , '컬럼명2']   ]
# 2개 행이름을 선택할 경우
data.loc[  ['행이름1', '행이름2'] , '컬럼명1'    ]
# 리스트 슬라이싱 활용해서 특정 범위를 지정하여 선택
data.loc[ '행이름' , '컬럼명1' : ] # '컬럼명1' : ==> 컬럼명1부터 끝까지라는 의미

 

- 행(row) 및 범위 선택: loc와 iloc

  • df.loc (Label-based): 이름으로 선택하기
    • df.loc[0] : 인덱스 이름이 0인 행 선택
    • df.loc[0:3, 'Name':'Age'] : 인덱스 0~3행, Name부터 Age 컬럼까지 (끝 점 포함)
    • 행번호(로우)와 열번호(컬럼)를 통해 특정 행과 열 데이터를 선택
data.iloc[0,2]
#행과 열 번호를 통해 특정 데이터를 선택할 수 있음

# iloc을 사용하여 특정 행과 열 선택
selected_data = df.iloc[1:4, 0:2]  # 인덱스 1부터 3까지의 행과 0부터 1까지의 열 선택
print(selected_data)
  • df.iloc (Integer-based): 인덱스 번호로 선택하기
    • df.iloc[0] : 첫 번째 행 선택
    • df.iloc[0:3, 0:2] : 0~2번 행, 0~1번 열 선택 (끝 점 포함 안 함 - 파이썬 슬라이싱 규칙)
    • 인덱스가 번호가 아니고 특정 문자일 경우
data.loc['행이름' , '컬럼명']
# 행이름과 컬럼명을 통해서도 특정 데이터를 선택할 수 있음

# loc을 사용하여 특정 행과 열 선택
selected_data = df.loc['b':'d', 'A':'B']  # 레이블 'b'부터 'd'까지의 행과 'A'부터 'B'까지의 열 선택
print(selected_data)