Python Pandas

Series와 DataFrame의 차이 및 기본 생성 방법

PyExplorer 2025. 2. 1. 16:59

Series와 DataFrame의 차이 및 기본 생성 방법

Python의 데이터 분석 라이브러리인 Pandas는 데이터를 다루는 데 매우 유용한 도구입니다. Pandas의 핵심 객체로는 SeriesDataFrame이 있으며, 이 둘은 데이터 구조를 이해하는 데 필수적입니다. 이번 글에서는 SeriesDataFrame의 차이를 살펴보고, 기본적인 생성 방법을 예제와 함께 소개하겠습니다.

1. Series와 DataFrame의 차이

1.1 Series란?

Series는 1차원 배열과 같은 구조로, 인덱스를 포함하는 데이터입니다. Python의 리스트나 NumPy 배열과 유사하지만, 인덱싱 기능이 추가되어 데이터 분석에 더욱 적합합니다.

Series 예제

import pandas as pd

# 리스트를 사용하여 Series 생성
s = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(s)

출력 결과:

a    10
b    20
c    30
d    40
dtype: int64

각 요소가 인덱스와 함께 저장되어 있으며, 이를 통해 특정 값을 쉽게 조회할 수 있습니다.

print(s['b'])  # 20 출력

1.2 DataFrame이란?

DataFrame은 2차원 표 형태의 데이터 구조로, 여러 개의 Series가 열(column) 단위로 구성된 형태입니다. 행(row)과 열(column)으로 이루어져 있으며, 엑셀의 스프레드시트나 SQL의 테이블과 유사한 형태를 가집니다.

DataFrame 예제

# 딕셔너리를 사용하여 DataFrame 생성
data = {
    '이름': ['Alice', 'Bob', 'Charlie'],
    '나이': [25, 30, 35],
    '도시': ['Seoul', 'Busan', 'Incheon']
}
df = pd.DataFrame(data)
print(df)

출력 결과:

       이름  나이      도시
0  Alice  25  Seoul
1    Bob  30  Busan
2  Charlie  35  Incheon

각 열은 Series로 구성되어 있으며, 열 이름과 행 인덱스를 가지고 있습니다.

2. Series와 DataFrame의 기본 생성 방법

2.1 Series 생성 방법

Series는 리스트, 딕셔너리, NumPy 배열 등을 사용하여 생성할 수 있습니다.

리스트로 생성

s1 = pd.Series([1, 2, 3, 4, 5])
print(s1)

딕셔너리로 생성 (키가 인덱스로 사용됨)

data_dict = {'a': 100, 'b': 200, 'c': 300}
s2 = pd.Series(data_dict)
print(s2)

NumPy 배열로 생성

import numpy as np
s3 = pd.Series(np.array([10, 20, 30, 40]))
print(s3)

2.2 DataFrame 생성 방법

DataFrame은 리스트, 딕셔너리, NumPy 배열, CSV 파일 등을 사용하여 생성할 수 있습니다.

리스트로 생성

data_list = [
    [1, 'Alice', 'Seoul'],
    [2, 'Bob', 'Busan'],
    [3, 'Charlie', 'Incheon']
]
df1 = pd.DataFrame(data_list, columns=['ID', '이름', '도시'])
print(df1)

딕셔너리로 생성

data_dict = {
    'ID': [1, 2, 3],
    '이름': ['Alice', 'Bob', 'Charlie'],
    '도시': ['Seoul', 'Busan', 'Incheon']
}
df2 = pd.DataFrame(data_dict)
print(df2)

DataFrame의 주요 속성

DataFrame을 이해하고 다루기 위해서는 몇 가지 중요한 속성을 알고 있어야 합니다. 여기에서는 shape, dtypes, columns, index 등의 속성을 소개하겠습니다.

1. shape (행과 열의 크기)

DataFrame의 행과 열의 개수를 확인할 수 있습니다.

print(df2.shape)  # (3, 3)

출력 결과는 (행 개수, 열 개수) 형태로 나타납니다.

2. dtypes (열의 데이터 타입)

각 열의 데이터 타입을 확인할 수 있습니다.

print(df2.dtypes)

출력 결과:

ID       int64
이름     object
도시     object
dtype: object

int64는 정수형, object는 문자열을 나타냅니다.

3. columns (열 이름 확인)

DataFrame의 열(column) 이름을 확인할 수 있습니다.

print(df2.columns)

출력 결과:

Index(['ID', '이름', '도시'], dtype='object')

4. index (행 인덱스 확인)

DataFrame의 행(row) 인덱스를 확인할 수 있습니다.

print(df2.index)

출력 결과:

RangeIndex(start=0, stop=3, step=1)

5. info() (데이터 요약 정보)

데이터프레임의 전체적인 정보를 확인할 수 있습니다.

print(df2.info())

출력 결과 예시:

<class 'pandas.core.frame.DataFrame'>
RangeIndex: 3 entries, 0 to 2
Data columns (total 3 columns):
 #   Column  Non-Null Count  Dtype  
---  ------  --------------  -----  
 0   ID      3 non-null      int64  
 1   이름     3 non-null      object 
 2   도시     3 non-null      object 
dtypes: int64(1), object(2)
memory usage: 200.0+ bytes

결론

이번 글에서는 Pandas의 기본적인 데이터 구조인 SeriesDataFrame의 차이를 설명하고, 각각의 생성 방법을 예제와 함께 살펴보았습니다. 또한, DataFrame의 주요 속성들을 소개하여 데이터의 구조를 이해하는 데 도움을 주었습니다.

Pandas는 강력한 데이터 분석 기능을 제공하는 라이브러리이며, 이를 활용하면 다양한 데이터 분석 작업을 효율적으로 수행할 수 있습니다. 앞으로도 Pandas의 다양한 기능을 다루면서 데이터 분석에 익숙해지는 것이 중요합니다.