Pandas는 데이터 분석 및 조작을 위한 강력한 라이브러리로, 특히 DataFrame 객체는 표 형식의 데이터를 다루는 데 매우 유용합니다.
본 포스트에서는 Pandas의 DataFrame에서 자주 사용되는 메서드들을 소개하고자 합니다. 이 메서드들은 데이터의 효율적인 탐색, 선택, 조작, 결측치 처리 및 집계를 가능하게 하여 데이터 분석 작업을 한층 더 수월하게 만들어 줍니다.
Pandas에서 DataFrame은 2차원 데이터 구조로, 행과 열로 구성된 표 형식의 데이터를 저장하고 조작하는 데 사용됩니다.
DataFrame은 다음과 같은 특징을 가지고 있습니다:
-
행과 열: DataFrame은 행(row)과 열(column)로 구성되어 있으며, 각 열은 서로 다른 데이터 타입(예: 정수, 실수, 문자열 등)을 가질 수 있습니다.
-
인덱스: 각 행은 고유한 인덱스를 가지며, 이를 통해 데이터에 쉽게 접근하고 조작할 수 있습니다. 기본적으로 인덱스는 0부터 시작하는 정수로 설정되지만, 사용자가 지정할 수도 있습니다.
-
라벨: 각 열은 이름(라벨)을 가지며, 이를 통해 특정 열에 접근하거나 조작할 수 있습니다.
-
다양한 데이터 소스: DataFrame은 CSV 파일, Excel 파일, SQL 데이터베이스 등 다양한 데이터 소스에서 쉽게 생성할 수 있습니다.
-
강력한 데이터 조작 기능: Pandas는 데이터 필터링, 정렬, 집계, 결합, 결측치 처리 등 다양한 데이터 조작 기능을 제공합니다.
1. 데이터 생성
다음과 같이 DataFrame을 생성할 수 있습니다:
import pandas as pd
data = {
'이름': ['Alice', 'Bob', 'Charlie'],
'나이': [25, 30, 35],
'도시': ['서울', '부산', '대구']
}
df = pd.DataFrame(data)
print(df)
이 코드는 다음과 같은 DataFrame을 생성합니다:
이름 나이 도시
0 Alice 25 서울
1 Bob 30 부산
2 Charlie 35 대구
2. 데이터 조회 및 탐색
-
head(n)
: DataFrame의 처음 n개의 행을 반환합니다. 기본값은 5입니다.df.head(3)
-
tail(n)
: DataFrame의 마지막 n개의 행을 반환합니다. 기본값은 5입니다.df.tail(3)
-
info()
: DataFrame의 요약 정보를 제공합니다. 데이터 타입, 결측치 수 등 다양한 정보를 쉽게 확인할 수 있습니다.df.info()
-
describe()
: 수치형 데이터의 통계 요약을 제공합니다. 평균, 표준편차, 최소값, 최대값 등의 값들을 포함하고 있습니다.df.describe()
3. 데이터 선택 및 필터링
-
loc[]
: 라벨 기반 인덱싱을 사용하여 특정 행과 열을 선택합니다.df.loc[0] # 첫 번째 행 선택 df.loc[:, '이름'] # '이름' 열 선택
-
iloc[]
: 정수 기반 인덱싱을 사용하여 특정 행과 열을 선택합니다.df.iloc[0, 1] # 첫 번째 행, 두 번째 열의 값 선택
-
조건 필터링: 특정 조건을 만족하는 행을 선택합니다.
df[df['나이'] > 30] # 나이가 30보다 큰 행 선택
-
AND 조건 (&)
: Pandas에서 DataFrame에 대해 다중 조건을 사용하여 필터링할 때는 각 조건을 괄호로 묶고, 조건 사이에 비트 연산자&
(AND) 또는|
(OR)를 사용합니다. 조건을 결합할 때는 반드시 괄호를 사용해야 합니다. 예를 들어, 나이가 30보다 크고 도시가 ‘서울’인 행을 선택하고 싶다면 다음과 같이 작성할 수 있습니다:df[(df['나이'] > 30) & (df['도시'] == '서울')]
-
OR 조건 (|)
: 나이가 30보다 크거나 도시가 ‘부산’인 행을 선택하고 싶다면 다음과 같이 작성할 수 있습니다:df[(df['나이'] > 30) | (df['도시'] == '부산')]
-
복합 조건
: 여러 조건을 조합하여 사용할 수도 있습니다. 예를 들어, 나이가 30보다 크고 도시가 ‘서울’이거나 ‘부산’인 행을 선택하려면 다음과 같이 작성할 수 있습니다:df[((df['나이'] > 30) & (df['도시'] == '서울')) | (df['도시'] == '부산')]
4. 데이터 조작
-
sort_values(by)
: 특정 열을 기준으로 DataFrame을 정렬합니다.df.sort_values(by='나이', ascending=False)
-
drop(labels)
: 특정 행이나 열을 삭제합니다.df.drop(columns='도시') # '도시' 열 삭제
-
rename(columns)
: 열의 이름을 변경합니다.df.rename(columns={'이름': '이름_변경'}, inplace=True)
5. 데이터 추가 및 수정
-
assign()
: 새로운 열을 추가하거나 기존 열을 수정합니다.df = df.assign(성별=['여', '남', '남'])
-
append()
: 다른 DataFrame을 현재 DataFrame에 추가합니다.df2 = pd.DataFrame({'이름': ['David'], '나이': [40], '도시': ['광주']}) df = df.append(df2, ignore_index=True)
6. 결측치 처리
-
isnull()
: 결측치가 있는지 확인합니다.df.isnull()
-
fillna(value)
: 결측치를 특정 값으로 채웁니다.df.fillna(0)
-
dropna()
: 결측치가 있는 행이나 열을 삭제합니다.df.dropna()
7. 그룹화 및 집계
-
groupby(by)
: 특정 열을 기준으로 데이터를 그룹화합니다.df.groupby('도시').mean() # 도시별 평균 나이 계산
-
agg()
: 그룹화된 데이터에 대해 여러 집계 함수를 적용합니다.df.groupby('도시').agg({'나이': ['mean', 'max']})
Pandas의 DataFrame은 다양한 데이터 분석 작업에 매우 유용한 메서드들을 제공합니다. 위에서 소개한 메서드를 적절히 활용하면 데이터를 보다 효율적으로 탐색하고 조작할 수 있습니다.