Pandas DataFrame을 List로 변환하는 방법?
Updated on
Pandas DataFrame을 Python 리스트로 변환하는 작업은 데이터 정제, 내보내기(export), 피처 엔지니어링, API용 데이터 준비 등에서 매우 자주 사용됩니다. tolist()가 여전히 널리 쓰이지만, Pandas는 더 명시적이고 현대적인 접근법인 to_numpy()와 to_dict()를 도입했으며, 이는 많은 경우 더 나은 가독성과 성능을 제공합니다.
이 최신 가이드에서는 다음 내용을 다룹니다:
- DataFrame을 list of lists로 변환하기
- 단일 컬럼을 리스트로 변환하기
- 중첩 리스트 또는 튜플 만들기
- JSON/API 출력에 자주 쓰이는 list of dicts와 같은 현대적인 대안들
⚡ 보너스: 데이터를 즉시 시각적으로 탐색하기
플로팅 코드를 직접 작성하지 않고 DataFrame을 시각적으로 탐색하고 싶나요?
PyGWalker는 Pandas 또는 Polars DataFrame을 Jupyter Notebook 안에서 Tableau 같은 인터랙티브 UI로 바꿔 주는 오픈소스 Python 도구입니다.
설치 후 다음처럼 실행하면 됩니다:
pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)| Run in Kaggle (opens in a new tab) | Run in Google Colab (opens in a new tab) | ⭐ GitHub (opens in a new tab) |
|---|
🧩 1. 전체 DataFrame을 리스트로 변환하기 (List of Lists)
가장 일반적인 방법은 각 행(row)을 하나의 리스트로 변환하는 것입니다.
✔ 2025년 기준 추천: df.to_numpy().tolist()
import pandas as pd
df = pd.DataFrame({'numbers': [1, 2, 3], 'letters': ['a', 'b', 'c']})
list_from_df = df.to_numpy().tolist()
print(list_from_df)출력:
[[1, 'a'], [2, 'b'], [3, 'c']]왜 df.values보다 to_numpy()를 선호해야 할까?
df.values는 오래된 방식이며, 특정 dtype에서 일관되지 않은 동작을 보일 수 있습니다.to_numpy()는 Pandas에서 권장하는, 더 현대적이고 명시적인 메서드입니다.
🧩 2. 단일 컬럼을 리스트로 변환하기
Series.tolist()를 사용하면 빠르고 깔끔합니다.
list_from_column = df["numbers"].tolist()
print(list_from_column)출력:
[1, 2, 3]🧩 3. 중첩 리스트 또는 튜플 만들기 (List of Tuples)
튜플이 필요한 경우(예: SQL insert나 일부 API 입력 포맷 등):
nested_list = [tuple(row) for row in df.to_numpy()]
print(nested_list)출력:
[(1, 'a'), (2, 'b'), (3, 'c')]to_records()를 사용하는 대안:
nested_list = [tuple(x) for x in df.to_records(index=False)]⭐ 보너스: List of Dicts로 변환하기 (JSON / API에 최적)
실제 애플리케이션에서는 JSON 스타일의 객체 구조를 요구하는 경우가 많습니다.
list_of_dicts = df.to_dict(orient="records")
print(list_of_dicts)출력:
[
{"numbers": 1, "letters": "a"},
{"numbers": 2, "letters": "b"},
{"numbers": 3, "letters": "c"}
]이 형식은 다음과 같은 상황에서 가장 널리 쓰이는 현대적인 포맷입니다:
- API 통신
- 머신러닝 피처 내보내기
- JSON 파일로 저장
- 시스템 간 구조화된 데이터 전달
📌 빠른 예시 모음 (요약)
# list of lists
df.to_numpy().tolist()
# df.values 사용 (구식)
df.values.tolist()
# 컬럼 → 리스트
df["numbers"].tolist()
# list of tuples
[tuple(x) for x in df.to_numpy()]
# list of dicts (JSON용으로 바로 사용 가능)
df.to_dict("records")✅ 마무리
Pandas DataFrame을 리스트로 변환하는 작업 자체는 간단하지만, 어떤 형식으로 변환할지는 사용 목적에 따라 달라집니다:
| 목표 | 가장 적합한 메서드 |
|---|---|
| 각 행을 리스트로 표현 | df.to_numpy().tolist() |
| 단일 컬럼을 리스트로 변환 | df[col].tolist() |
| 튜플 형식 사용(SQL/API 등) | [tuple(x) for x in df.to_numpy()] |
| JSON에 바로 쓸 수 있는 객체 형태 | df.to_dict("records") |
이러한 현대적인 기법들을 사용하면, 모델링, 시각화, 데이터 내보내기 등 어떤 목적이든 DataFrame을 더 깔끔하고 효율적으로 변환할 수 있습니다.