Python

파이썬 기초 13편 | 판다스(Pandas) 기본 문법

SecLogs YJ 2026. 3. 10. 16:29
목차

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 모델을 만들기 전에 데이터를 정리하고 분석하는 핵심 도구이다.