목차
1. 판다스(Pandas)란
2. 데이터 분석 과정에서의 판다스 역할
3. Series와 DataFrame
4. DataFrame 생성
5. 데이터 확인
5-1 head()
5-2 tail()
5-3 shape
5-4 info()
6. 데이터 선택과 필터링
6-1 특정 열 선택
6-2 조건 필터링
7. 데이터 조작
7-1 열 추가
7-2 행 추가
7-3 데이터 수정
8. 결측치 처리
8-1 결측치 확인
8-2 결측치 채우기
8-3 결측치 행 삭제
9. 데이터 정렬
10. 그룹화(groupby)
10-1 합계
10-2 평균
11. 파일 입출력
11-1 CSV 저장
11-2 CSV 읽기
12. 판다스가 중요한 이유
1. 판다스(Pandas)란
판다스(Pandas)는 데이터 분석 및 데이터 조작에 특화된 파이썬 데이터 분석 라이브러리(Python Data Analysis Library)이다.
특히 표 형태의 데이터(table 형태)를 다루는 데 강력하다.
판다스의 주요 특징은 다음과 같다.
- 구조화된 데이터 처리
- CSV, Excel, SQL, JSON 등 다양한 데이터 지원
- 필터링, 그룹화, 집계 등 기능 제공
판다스를 사용할 때는 보통 다음과 같이 import 한다.
import pandas as pd
pd는 판다스를 사용할 때 관례적으로 사용하는 별칭이다.
판다스를 사용하려면 먼저 설치가 필요하다.
pip install pandas
2. 데이터 분석 과정에서의 판다스 역할
데이터 분석 과정은 보통 다음과 같은 과정으로 진행된다.
문제 정의 → 데이터 수집 → 데이터전처리 → 데이터분석 → 데이터모델링 → 모델평가/검증 → 해석/시각화 → 보고서 작성 → 배포/유지보수
여기서 EDA(Exploratory Data Analysis) 데이터를 탐색하면서 패턴을 찾고 가설을 세우는 과정이다.
예를 들면
- 특정 변수와 결과 사이에 관계가 있는가
- 데이터에 이상치(outlier)가 있는가
- 어떤 패턴이 존재하는가
같은 것들을 분석한다.
이 과정에서 표 형태 데이터를 가장 잘 다루는 라이브러리가 Pandas이다.
대표적인 데이터 형태
- CSV 파일
- Excel 파일
- SQL 데이터
- JSON 데이터
이러한 데이터들은 대부분 행(row)과 열(column)로 구성된 테이블 형태이다.
3. Series와 DataFrame
판다스는 두 가지 핵심 데이터 구조를 가진다.
- Series
- 1차원 데이터 구조
- index + value
- DataFrame
- 2차원 데이터 구조
- 행과 열로 구성
- 엑셀 표와 매우 유사
데이터 분석에서는 대부분 DataFrame을 사용한다.
4. DataFrame 생성
딕셔너리를 이용하여 DataFrame을 생성할 수 있다.
import pandas as pd
data = {
'name': ['cool', 'hot', 'king'],
'age': [13, 34, 22]
}
df = pd.DataFrame(data)
print(df)
print(type(df))
출력 결과
name age
0 cool 13
1 hot 34
2 king 22
<class 'pandas.DataFrame'>
5. 데이터 확인
5-1 head()
지정된 개수의 행을 맨 위에서부터 반환한다.
Syntax
DataFrame.head(n=5)
Series.head(n=5
- n(선택) : DataFrame 또는 Series의 맨 위에서 가져올 행의 개수(기본값은 5이다)
df.head()
예시 - 1개 가져오기
df.head(1)
5-2 tail()
지정된 개수의 마지막 행을 반환한다.
Syntax
DataFrame.tail(n=5)
Series.tail(n=5)
- n(선택) : DataFrame 또는 Series의 마지막 끝에서 가져올 행의 개수(기본값은 5이다)
df.tail()
5-3 shape
DataFrame의 차원을 나타내는 튜플을 반환한다.
즉, DataFrame의 행과 열의 개수를 나타낸다.
Syntax
DataFrame.shape
df.shape
출력 예시
(3, 2)
5-4 info()
DataFrame에 대한 간결한 요약을 제공한다.
df.info()
출력 예시
<class 'pandas.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 2 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 3 non-null str
1 age 3 non-null int64
dtypes: int64(1), str(1)
memory usage: 180.0 bytes
숫자 열에 문자열이 포함되면 해당 열의 dtype이 object로 변경된다.
즉, 숫자형 데이터(int, float) 대신 문자열이 섞여 있다는 의미일 수 있으므로 데이터 오류 여부를 확인해야 한다.
6. 데이터 선택과 필터링
6-1 특정 열 선택
print(df['age'])
6-2 조건 필터링
print(df['age'] < 30)
출력 예시
0 True
1 False
2 True
Name: age, dtype: bool
df['age'] < 30 은 각 행이 조건을 만족하는지 여부를 True/False로 반환한다.
이 Boolean 값을 이용하면 조건을 만족하는 행만 선택할 수 있다.
예시
print(df[df['age'] < 30])
출력 예시
name age
0 cool 13
2 king 22
동작 원리는 다음과 같다.
df['age'] < 30
→ True / False 배열 생성
df[True, False, True]
→ True인 행만 선택
7. 데이터 조작
7-1 열 추가
df['passed'] = df['age'] >= 7
df
출력 예시
name age passed
0 cool 13 True
1 hot 34 True
2 king 22 True
7-2 행 추가
DataFrame 행을 추가할 때는 concat()을 사용한다.
여기서 ignore_index 하는 이유는 concat을 할 때 기존 DataFrame의 인덱스가 그대로 유지도기 때문이다.
인덱스가 중복되지 않게 ignore_index 값을 True로 지정해주어야 한다.
예시 - 새로운 행
new_row = {
'name' : ['son'],
'age' : [3],
}
df2 = pd.DataFrame(new_row)
df3 = pd.concat([df, df2], ignore_index=True)
print(df3)
출력 예시
name age passed
0 cool 13 True
1 hot 34 True
2 king 22 True
3 son 3 NaN
7-3 데이터 수정
데이터를 수정할 때는 .loc[행, 열] 을 사용한다.
df3.loc[0, 'passed'] = False
8. 결측치 처리
데이터 분석에서는 결측값(NaN)이 매우 중요하다.
8-1 결측치 확인
isnull()을 사용하여 결측치를 확인한다.
모든 값이 Null인 경우 True, 그렇지 않을 경우 False라는 부울 값으로 대체된 DataFrame 객체를 반환한다.
예시
print(df3)
print(df3.isnull())
출력 예시
name age passed
0 cool 13 False
1 hot 34 True
2 king 22 True
3 son 3 NaN
name age passed
0 False False False
1 False False False
2 False False False
3 False False True
8-2 결측치 채우기
fillna()를 사용하여 NULL 값을 지정된 값으로 대체한다.
예를 들어, 결측값을 False로 채우면, NaN 값이 모두 False로 변경된다.
print(df3)
df3['passed'] = df3['passed'].fillna(False)
print(df3)
출력 예시
name age passed
0 cool 13 False
1 hot 34 True
2 king 22 True
3 son 3 NaN
name age passed
0 cool 13 False
1 hot 34 True
2 king 22 True
3 son 3 False
8-3 결측치 행 삭제
dropna()을 사용하여 DataFrame에서 결측값(NaN 또는 None)을 제거한다.
기본적으로 하나라도 NaN이 존재하면 해당 행 전체가 삭제된다.
print(df3)
df3= df3.dropna()
print(df3)
출력 예시
name age passed
0 cool 13 False
1 hot 34 False
2 king 22 False
3 son 3 NaN
name age passed
0 cool 13 False
1 hot 34 False
2 king 22 False
9. 데이터 정렬
sort_values()는 특정 열을 기준으로 데이터를 정렬 할 때 사용한다.
print(df3)
sorted_df3 = df3.sort_values(by='age', ascending=False)
print(sorted_df3)
- by(필수) : 정렬할 레이블을 지정
- ascending(선택) : 기본값은 True로 오름차순, False는 내림차순
출력 예시
name age passed
0 cool 13 False
1 hot 34 False
2 king 22 False
name age passed
1 hot 34 False
2 king 22 False
0 cool 13 False
10. 그룹화(groupby)
groupby()를 사용하여 데이터를 그룹별로 집계할 수 있다.
data = {
'team': ['A','A','B','B','A'],
'score': [80,90,70,80,70]
}
df = pd.DataFrame(data)
10-1 합계
team 열을 기준으로 데이터 그룹을 나누고, 각 그룹의 score의 합을 계산한다.
df.groupby('team')['score'].sum()
출력 예시
team
A 240
B 150
Name: score, dtype: int64
10-2 평균
team 열을 기준으로 데이터를 그룹화하고, 각 그룹의 score의 평균을 계산한다.
df.groupby('team')['score'].mean()
출력 예시
team
A 80.0
B 75.0
Name: score, dtype: float64
11. 파일 입출력
11-1 CSV 저장
to_csv()를 사용한다.
df.to_csv('output.csv')
인덱스를 제거하고 싶은 경우
df.to_csv('output.csv', index=False)
11-2 CSV 읽기
read_csv()를 사용한다.
data_csv = pd.read_csv('output.csv')
print(data_csv)
12. 판다스가 중요한 이유
판다스는 머신러닝과 데이터 분석에서 매우 중요한 라이브러리이다.
특히 다음과 같은 작업에 사용된다.
- 데이터 탐색 (EDA)
- 데이터 전처리
- 특징 엔지니어링
- 학습 데이터 준비
즉, AI 모델을 만들기 전에 데이터를 정리하고 분석하는 핵심 도구이다.
'Python' 카테고리의 다른 글
| FastAPI와 REST API 쉽게 이해하기 (Streamlit과의 관계까지) (0) | 2026.03.24 |
|---|---|
| Streamlit 기초 정리: 설치부터 챗봇 UI 구현까지 (0) | 2026.03.24 |
| 파이썬 기초 12편 | 넘파이(Numpy) 기본 문법 (0) | 2026.03.09 |
| 파이썬 기초 11편 | 표준 라이브러리(Standard Library) 정리 (1) | 2026.03.09 |
| 파이썬 기초 10편 | 모듈과 패키지 완벽 정리 (import / __name__ 설명) (0) | 2026.03.09 |