판다스는 사라지지 않는다: 데이터 정제에 여전히 내가 가장 애용하는 이유

발행: (2026년 5월 18일 AM 12:00 GMT+9)
4 분 소요

출처: Towards Data Science

2020년에 데이터 과학을 배우면서 Pandas는 가장 인기 있는 도구 중 하나였습니다. 매우 큰 데이터셋을 다루는 데 있어 Pandas의 약점을 보완하려는 새로운 도구들이 등장했지만, 저는 여전히 데이터 정리, 처리, 분석 작업에 Pandas를 많이 사용합니다. 수십억 행을 다룰 때 Pandas가 어려움을 주긴 하지만, 그보다 작은 규모의 데이터라면 충분히 잘 동작합니다.

저는 Pandas가 EDA나 노트북에서만 사용되는 것이 아니라 실제 프로덕션 시스템에서도 활용되는 모습을 자주 봅니다.

이 글에서는 Pandas가 얼마나 강력한지 보여주기 위해 몇 가지 데이터 정리 및 처리 작업을 살펴보겠습니다.

먼저 SKU(재고 관리 단위)와 해당 SKU에 대한 검색 API 응답을 포함한 데이터셋을 살펴보겠습니다.

import pandas as pd

search_results = pd.read_csv("search_results.csv")

search_results.head()

검색 결과는 딕셔너리들의 리스트이며 다음과 같이 보입니다:

search_results.loc[0, "search_result"]

"[{'my_id': 'HBCV00007F5Y2B', 'distance': 1.0, 'entity': {}}, 
{'my_id': 'HBCV00007UPQBM', 'distance': 1.0, 'entity': {}}, 
{'my_id': 'HBCV00008I29IH', 'distance': 1.0, 'entity': {}}, 
{'my_id': 'HBCV00006U3ZYB', 'distance': 0.8961254358291626, 'entity': {}}, 
{'my_id': 'HBCV0000AFA4H6', 'distance': 0.8702399730682373, 'entity': {}}, 
{'my_id': 'HBCV00009CDGD4', 'distance': 0.86175537109375, 'entity': {}}, 
{'my_id': 'HBCV000046336T', 'distance': 0.8594968318939209, 'entity': {}}, 
{'my_id': 'HBCV00009QDZRT', 'distance': 0.8572311997413635, 'entity': {}}, 
{'my_id': 'HBCV00008E11P3', 'distance': 0.8553324937820435, 'entity': {}}, 
{'my_id': 'HBV00000C4IY6', 'distance': 0.8539167642593384, 'entity': {}}] 
... and 5 entities remaining"

출력에서 볼 수 있듯이 마지막 부분(… and 5 entities remaining) 때문에 올바른 딕셔너리 리스트 형식이 아니며, 전체가 하나의 문자열로 저장되어 있습니다.

이를 더 잘 활용하려면 올바른 딕셔너리 리스트 형태로 변환해야 합니다. 다음 코드는 문자열을 기준으로 나누어 마지막 부분을 제거하고 첫 번째 조각을 가져옵니다.

search_results.loc[0, "search_result"].split("...")[0].strip()

하지만 여전히 결과는 문자열입니다. Python 내장 ast 모듈을 이용해 리스트로 변환할 수 있습니다:

import ast

res = ast.literal_eval(search_results.loc[0, "search_result"].split("...")[0].strip())

res

[{'my_id': 'HBCV00007F5Y2B', 'distance': 1.0, 'entity': {}},
 {'my_id': 'HBCV00007UPQBM', 'distance': 1.0, 'entity': {}},
 {'my_id': 'HBCV00008I29IH', 'distance': 1.0, 'entity': {}},
 {'my_id': 'HBCV00006U3ZYB', 'distance': 0.8961254358291626, 'entity': {}},
 {'my_id': 'HBCV0000AFA4H6', 'distance': 0.8702399730682373, 'entity': {}},
 {'my_id': 'HBCV00009CDGD4', 'distance': 0.86175537109375, 'entity': {}},
 {'my_id': 'HBCV000046336T', 'distance': 0.8594968318939209, 'entity': {}},
 {'my_id': 'HBCV00009QDZRT', 'distance': 0.8572311997413635, 'entity': {}},
 {'my_id': 'HBCV00008E11P3', 'distance': 0.8553324937820435, 'entity': {}},
 {'my_id': 'HBV00000C4IY6', 'distance': 0.8539167642593384, 'entity': {}}]

이제 검색 결과가 올바른 딕셔너리 리스트 형태가 되었습니다. 위 작업은 한 행에 대해서만 수행한 것이므로, 전체 SKU 열(즉, 전체 데이터프

0 조회
Back to Blog

관련 글

더 보기 »