데이터 파일을 메모리에 로드하지 않고 다룰 수 있는 dask를 간단히 사용해보았습니다.
자세한 사용방법은 아래 링크를 참고하세요.
https://docs.dask.org/en/latest/
2022. 1. 17 최초작성
소스코드 파일 이름을 dask.py로 하면 다음처럼 에러가 날 수 있으니 주의하세요.
임포트하려는 모듈이름 dask와 같은 소스코드 파일 이름을 사용했기 때문에 에러가 나는 것입니다.
(newenv) webnautes@webnautesui-MacBookAir python_work % /Users/webnautes/miniconda3/envs/newenv/bin/python /Users/webnautes/Documents/python_work/dask.py
Traceback (most recent call last):
File "/Users/webnautes/Documents/python_work/dask.py", line 1, in <module>
import dask.dataframe as dd
File "/Users/webnautes/Documents/python_work/dask.py", line 1, in <module>
import dask.dataframe as dd
ModuleNotFoundError: No module named 'dask.dataframe'; 'dask' is not a package
간단한 예제입니다.
import dask.dataframe as dd import glob import os # 지정한 경로에 있는 csv 파일 이름을 리스트에 저장합니다. files = glob.glob(os.path.join('./daily_dataset', '*.csv')) # 리스트에 있는 파일을 dask에서 로드합니다. 실제로 모든 파일을 메모리에 로드하지는 않습니다. df = dd.read_csv(files, sep=',') # 데이터프레임 일부를 출력합니다. print(df.head()) # LCLid day energy_median energy_mean energy_max energy_count energy_std energy_sum energy_min # 0 MAC000027 2011-12-07 0.1470 0.159880 0.408 25 0.062123 3.997 0.103 # 1 MAC000027 2011-12-08 0.1705 0.193479 0.459 48 0.077042 9.287 0.105 # 2 MAC000027 2011-12-09 0.1440 0.156771 0.365 48 0.051995 7.525 0.101 # 3 MAC000027 2011-12-10 0.2415 0.264250 0.814 48 0.135007 12.684 0.101 # 4 MAC000027 2011-12-11 0.2785 0.288438 0.540 48 0.112697 13.845 0.126 # 데이터프레임의 shape를 이렇게는 가져올 수 없습니다. # df.shape # 두번째 차원 개수는 그냥 가져올 수 있습니다. 전체 데이터를 로드하지 않아도 알 수 있기 때문입니다. print('df.shape[1]', df.shape[1]) df.shape[1] 9 # 첫번째 차원의 개수는 전체 데이터를 로드해야 알 수 있기 때문에 compute 메소드를 사용해야 가져올 수 있습니다. # dask가 전체 파일들을 전부 메모리로 로드하지 않기 때문에 # 파일을 로드할 필요할때 마다 필요한 메소드를 호출해줄 필요가 있어 보입니다. print('df.shape[0]', df.shape[0].compute()) # df.shape[0] 3510433 # energy_count 컬럼의 평균을 구합니다. 평균을 구하려면 디스크에서 데이터를 로드해야 하기 때문에 compute 메소드를 사용합니다. print('energy_count mean', df.energy_count.mean().compute()) # energy_count mean 47.80363590474452 |
'Python > Python 예제 코드' 카테고리의 다른 글
Python immutable, mutable 객체와 함수 (0) | 2023.10.12 |
---|---|
파이썬 딕셔너리를 파일에 저장했다가 로드하는 예제 - pickle, json (0) | 2023.10.11 |
Process, Thread, Main 함수 로그를 파일에 저장하는 logging Python 예제 (0) | 2023.10.11 |
파이썬에서 실행중인 프로세스 pid와 이름 출력하기 (0) | 2023.10.10 |
Python에서 Ctrl+C 감지하기 (0) | 2023.10.08 |
시간날때마다 틈틈이 이것저것 해보며 블로그에 글을 남깁니다.
블로그의 문서는 종종 최신 버전으로 업데이트됩니다.
여유 시간이 날때 진행하는 거라 언제 진행될지는 알 수 없습니다.
영화,책, 생각등을 올리는 블로그도 운영하고 있습니다.
https://freewriting2024.tistory.com
제가 쓴 책도 한번 검토해보세요 ^^
그렇게 천천히 걸으면서도 그렇게 빨리 앞으로 나갈 수 있다는 건.
포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!