Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- m/m/s
- 불규칙적 샘플링
- timellm
- 딥러닝
- 분산 학습
- queueing theory
- ERD
- irregularly sampled time series
- NTMs
- pre-trained llm
- nccl 설치
- GaN
- 리뷰
- moirai
- 대기행렬
- Time Series
- length of stay
- nccl 업그레이드
- pytorch
- ed boarding
- 의료정보
- Transformer
- first pg on this rank that detected no heartbeat of its watchdog.
- nccl 업데이트
- operation management
- 토픽모델링
- gru-d
- multi gpu
- 패혈증 관련 급성 호흡곤란 증후군
- timesfm
Archives
- Today
- Total
데알못정을
파이썬 pivot table 생성 시 Memory error 해결하는 방법 본문
728x90
정말 미치겠고 미치겠다.
데이터프레임의 크기도 줄여보고
구글링해서 하라는거 다 해봤는데 안되서 정말 쩔쩔 맸다.
데이터셋의 크기가 2백만개가 넘어
매우 컸기 때문에 데이터프레임의 값을
열로 변형하는 pivot trasform은 부하가 많이 컸다.
그러던 중 데이터프레임을 여러개로 분할하여
따로따로 pivot을 시도해보면 어떨까라는 생각에
나는 노가다를 하기 시작했다.
근데 이렇게 해도 메모리 에러가 발생했다.
진짜 죽고싶었다.
그러던 중 read_csv에 chunksize라는 인자가 있다는 것을 알게되었다.
데이터프레임에서 원하는 컬럼만 불러올 수 있듯이,
데이터셋의 샘플을 특정 몇개로 쪼개서(chunk) 불러와 모아두는 하나의 생성자(generator)를 만들 수 있다.
코드는 다음과 같다.
import pandas as pd
pharma_col = ['subject_id','charttime','amount','label'] # 불러올 열
lab_signal_col = ['subject_id','charttime','valuenum','label'] # 불러올 열
chunk_size = 10000 # 쪼갤 데이터 갯수
# 데이터 불러오기
signal_lab = pd.read_csv('total_signal_lab.csv', chunksize=chunk_size, usecols = lab_signal_col)
pharma = pd.read_csv('total_pharma.csv', chunksize=chunk_size, usecols = pharma_col)
이렇게 하고 평소대로 signal_lab을 불러오게 되면
다음과 같이 데이터 프레임이 노출되는 것이 아니라
TextFileReader라는 생성자가 나온다.
이를 가지고 다음과 같은 간단한 코드로 내가 원하는 피봇 변형을 수행한후
pd.concat으로 합쳐주면!!!
sglab_chunks = []
for chunk in signal_lab:
# 변형 작업 수행
transformed_chunk = chunk.pivot_table(index = ['charttime','subject_id'],columns = 'label')
sglab_chunks.append(transformed_chunk)
pharma_chunks = []
for chunk in pharma:
# 변형 작업 수행
transformed_chunk = chunk.pivot_table(index = ['charttime','subject_id'],columns = 'label')
pharma_chunks.append(transformed_chunk)
new_pharma = pd.concat(pharma_chunks)
new_signal_lab = pd.concat(sglab_chunks)
아주 멋있게 변형이 되었다!
무튼 문제 해결!!
728x90
'Coding' 카테고리의 다른 글
NCCL 버전 업그레이드 하다가 발생한 문제 (2) | 2024.08.15 |
---|---|
Pivot table 형식 해제하여 데이터프레임으로 만들기 (0) | 2023.08.23 |
내가 자꾸 까먹어서 올리는 주피터 노트북 가상 환경 만드는 법 (0) | 2023.07.02 |
[오류해결]No module named ipykernel (0) | 2022.11.09 |
신경망 특정 layer 결과 값 출력하기 (0) | 2022.10.03 |
Comments