Pandas의 두 가지 데이터 구조
1. Pandas의 중요한 두 가지 데이터 구조
Pandas에서는 데이터를 효과적으로 저장하고 처리하기 위해 Series와 DataFrame이라는 두 가지 핵심적인 데이터 구조를 제공합니다.
이 두 가지는 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
)으로 변환됩니다!