카테고리 없음

Pandas의 두 가지 데이터 구조

Blue_bull 2025. 3. 7. 17:10

1. Pandas의 중요한 두 가지 데이터 구조

Pandas에서는 데이터를 효과적으로 저장하고 처리하기 위해 SeriesDataFrame이라는 두 가지 핵심적인 데이터 구조를 제공합니다.
이 두 가지는 Pandas를 사용할 때 반드시 이해해야 하는 기본적인 틀입니다.


✅ 1. Series (1차원 데이터 구조)

"Series는 1차원 배열 형태의 데이터 구조로, 인덱스(index)와 값(value)으로 이루어져 있습니다."

✔ 리스트와 비슷하지만, 각 값마다 고유한 인덱스(index)가 존재합니다.
✔ 한 개의 열(column)처럼 사용되며, 숫자, 문자열, 날짜 등의 데이터를 저장할 수 있습니다.

📌 Series 예제

import pandas as pd

data = pd.Series([10, 20, 30, 40], index=['a', 'b', 'c', 'd'])
print(data)

🔹 출력 결과

a    10
b    20
c    30
d    40
dtype: int64

인덱스를 통해 값에 쉽게 접근할 수 있습니다.

print(data['b'])  # 20

즉, Series는 하나의 열을 표현하는 1차원 데이터 구조입니다.


✅ 2. DataFrame (2차원 데이터 구조)

"DataFrame은 여러 개의 Series가 모여 2차원 테이블 형태를 이루는 데이터 구조입니다."

✔ 엑셀의 표(Table) 형태와 유사하며, 여러 개의 열(column)과 행(row)으로 구성됩니다.
행 인덱스(index)와 열(column) 이름이 존재하여 데이터 정리가 쉽습니다.

📌 DataFrame 예제

import pandas as pd

data = {'이름': ['철수', '영희', '민수'],
        '나이': [25, 30, 28],
        '도시': ['서울', '부산', '대구']}

df = pd.DataFrame(data)
print(df)

🔹 출력 결과

   이름  나이  도시
0  철수  25  서울
1  영희  30  부산
2  민수  28  대구

행과 열을 지정하여 원하는 데이터를 쉽게 조회할 수 있습니다.

print(df['이름'])  # '이름' 열 출력 (Series 형태)
print(df.loc[1])   # 두 번째 행 출력

즉, DataFrame은 여러 개의 Series가 모여 테이블을 이루는 2차원 데이터 구조입니다.


📌 Series vs DataFrame 비교

구분 Series (1차원) DataFrame (2차원)
형태 한 개의 열(column) 여러 개의 열(column)
구성 요소 값(value) + 인덱스(index) 여러 개의 Series가 모인 구조 (행 + 열)
출력 형태 리스트처럼 한 줄로 출력 테이블(엑셀)처럼 행과 열로 출력
사용 예시 한 사람의 나이 목록 여러 사람의 나이, 지역 등의 정보

📌 결론

Series는 1차원 데이터(한 개의 열) 를 표현하며, DataFrame은 여러 개의 Series로 구성된 2차원 데이터(표 형태) 를 표현합니다.
Pandas에서 데이터를 다룰 때 기본이 되는 핵심적인 데이터 구조이므로, 반드시 이해해야 합니다.
Series는 리스트와 비슷하지만 인덱스를 갖고 있으며, DataFrame은 엑셀의 표처럼 여러 개의 열을 포함합니다.

💡 Pandas에서 데이터를 처리할 때 "Series는 1차원, DataFrame은 2차원"

2. Series와 DataFrame은 어떤 데이터를 변환할 수 있을까?

Series(1차원)와 DataFrame(2차원)은 다양한 형태의 데이터를 Pandas 객체로 변환할 수 있습니다.
리스트(List), 튜플(Tuple), 딕셔너리(Dictionary), NumPy 배열, CSV/Excel 데이터 등 다양한 형식의 데이터를 받을 수 있습니다.


✅ 1. Series(1차원 데이터 구조)

Series는 1차원 데이터를 변환하며, 리스트, 튜플, 딕셔너리, NumPy 배열 등을 변환할 수 있습니다.

📌 변환 가능한 데이터

import pandas as pd
import numpy as np

# 1. 리스트(List) → Series
s1 = pd.Series([10, 20, 30])
print(s1)

# 2. 튜플(Tuple) → Series
s2 = pd.Series((100, 200, 300))
print(s2)

# 3. 딕셔너리(Dictionary) → Series (Key가 Index가 됨)
s3 = pd.Series({'a': 1, 'b': 2, 'c': 3})
print(s3)

# 4. NumPy 배열 → Series
arr = np.array([5, 10, 15])
s4 = pd.Series(arr)
print(s4)

출력 예시

0    10
1    20
2    30
dtype: int64

a     1
b     2
c     3
dtype: int64

즉, 리스트, 튜플, 딕셔너리, NumPy 배열 등 1차원 데이터는 모두 Series로 변환 가능 🚀


✅ 2. DataFrame(2차원 데이터 구조)

DataFrame은 2차원 데이터를 변환하며, 딕셔너리, 리스트(중첩), 튜플(중첩), NumPy 2D 배열, CSV/Excel 데이터 등을 변환할 수 있습니다.

📌 변환 가능한 데이터

# 1. 딕셔너리(Dictionary) → DataFrame (Key가 열 이름이 됨)
df1 = pd.DataFrame({'이름': ['철수', '영희'], '나이': [25, 30]})
print(df1)

# 2. 리스트(중첩된 리스트) → DataFrame
df2 = pd.DataFrame([[1, 'A'], [2, 'B'], [3, 'C']], columns=['번호', '등급'])
print(df2)

# 3. 튜플(중첩된 튜플) → DataFrame
df3 = pd.DataFrame(((10, 'X'), (20, 'Y'), (30, 'Z')), columns=['값', '코드'])
print(df3)

# 4. NumPy 2D 배열 → DataFrame
arr2D = np.array([[100, 200], [300, 400]])
df4 = pd.DataFrame(arr2D, columns=['A', 'B'])
print(df4)

# 5. CSV/Excel 파일 → DataFrame (파일에서 읽기)
# df5 = pd.read_csv('data.csv')  # CSV 파일 읽기
# df6 = pd.read_excel('data.xlsx')  # Excel 파일 읽기

출력 예시

   이름  나이
0  철수  25
1  영희  30

   번호 등급
0   1  A
1   2  B
2   3  C

    A    B
0  100  200
1  300  400

즉, 딕셔너리, 리스트(중첩), 튜플(중첩), NumPy 배열, CSV/Excel 데이터 등 다양한 데이터 형식을 DataFrame으로 변환 가능 🚀


📌 결론

변환 대상 Series (1차원 변환 가능) DataFrame (2차원 변환 가능)
리스트(List) ✅ 가능 ✅ 가능 (중첩 리스트)
튜플(Tuple) ✅ 가능 ✅ 가능 (중첩 튜플)
딕셔너리(Dictionary) ✅ 가능 (Key가 인덱스) ✅ 가능 (Key가 열)
NumPy 배열(NDArray) ✅ 가능 (1D 배열) ✅ 가능 (2D 배열)
CSV/Excel 데이터 ❌ 불가능 ✅ 가능 (pd.read_csv(), pd.read_excel())

💡 즉, Series와 DataFrame은 리스트, 튜플, 딕셔너리, NumPy 배열 등 다양한 데이터를 변환할 수 있으며, 형태에 따라 1차원(Series) 또는 2차원(DataFrame)으로 변환됩니다!