서로 다른 두 개의 데이터프레임 병합 방법에 대해 질문드립니다

2022.11.06 22:43 1,237 Views

안녕하세요

서로 다른 두 개의 데이터 프레임 병합하려하는데 크기도 커서 병합이 어렵네요

tqdm 활용해서 처리속도 볼 수 있는 방법으로 병합하는 코드 작성에 대해서 도움 주시면 감사하겠습니다.


데이터프레임 설명


A와 B 데이터프레임을 고객이름 기준으로 합치고 싶습니다


다만 A데이터의 경우 시계열 데이터로 데이터가 존재하는 만큼

B데이터의 방문일자_월과 A데이터의 기준년월_월일 일치하는 조건으로

데이터를 병합하고 싶습니다


A데이터의 경우 약 4만 개 이상, B데이터도 만개 이상인 만큼

단순 merge나 조건문을 사용하면 엄청난 메모리와 시간이 소요되어 어려움을 겪고 있습니다.

for문을 활용하거나 다른 효율적인 방법으로 병합하는 것에 대해서 도움을 구합니다


아직 파이썬 초보인데 과제로 많은 양의 데이터를 처리해야 해서 모르는 것이 많습니다

코드 작성하는데 도움을 주신다면 정말 감사하겠습니다.

로그인이 필요합니다
0 / 1000
다냐니라
2022.11.07 13:44

데이터가 4만개 1만개 대략 5만개면.. 데이터가 많아보이진 않아보입니다만... 얼만큼의 시간이 걸리고 메모리가 드시나요..?
지금 데이콘에서 진행중인 [제주도 교통량] 대회에 참여하여 비슷한 상황을 겪었는데, 대회의 데이터는 4'백'만개 데이터 x 약 1만개 데이터 merge하는데 30분 이하로 걸렸거든요..?
혹 merge를 inner로 하신게 아닌 outer로 하신게 아닌가요..?

그린티
2022.11.07 15:22

앗 죄송합니다
B데이터의 경우 약 50만개의 데이터 값이 존재합니다
40분 정도의 시간이 걸려서 보다 메모리를 효율적으로 사용할 수 있는 코드가 있는지 알아보고 싶었습니다

그린티
2022.11.07 15:22

삭제된 댓글입니다

다냐니라
2022.11.07 16:05

음.. 도움이 될지는 모르겠지만, csv파일 형식을 parquet 파일로 변환시켜 저장하시구  parquet를 불러와서 merge를 진행해보시겠어요? parquet는 '메모리에 효율적인 데이터 유형을 사용하여 용량을 크게 줄이고 빠른 작업이 가능'하다고 하니 시도해보시는게 좋을 것 같아요.