Ramanu
Pandas read_csv, to_csv 본문
python에 존재하는 모듈인 Pandas에서 데이터 분석을 위해 csv를 불러올 때 사용하는 함수이다.
A. read_csv
1. 일반적인 작은 데이터를 불러 사용할 때 사용
import pandas as pd
filename = './test.csv'
data = pd.read_csv(filename)
> Output
2-1. 대용량 데이터를 일부 처리할 때 사용
import pandas as pd
filename = './test.csv'
data = pd.read_csv(filename, skiprows=[i for i in range(1, 500)], nrows=100)
skiprows : 1부터 10000까지 데이터를 건너뛴다.
nrow : 20000개의 데이터를 불러온다.
> Output
# 문제점 : skiprows를 사용할 때, 위의 코드처럼 사용하게 된다면 메모리에 600개의 데이터가 올라가기 때문에 대용량의 데이터는 처리하기 어려울 듯하다. ( Ram이 크지 않는 이상..)
2-2. 대용량 데이터를 쪼개서 처리할 때 사용
import pandas as pd
filename = './test.csv'
chunk_s = 100
for chunk_data in enumerate(pd.read_csv(filename, chunksize=chunk_s)):
print(chunk_data)
chunksize : 데이터를 chunk_s만큼 불러와서 사용한다.
> Output
중략...
데이터가 8G(columns 대략 30개)인 csv를 메모리에 올리려면 한번에 30GB의 메모리가 필요한 것 같다... ㅠㅠ
물론 데이터의 형식에 따라 다르겠지만 어쨋든 대용량의 데이터를 처리하기 위해서는 쪼개거나 큰 메모리를 가지고 있어야 하는 것 같다.
B. to_csv
1. pandas의 DataFrame을 csv로 저장하고 싶을 때 사용
import pandas as pd
test = pd.DataFrame(columns=["A", "B"])
for idx in range(1000):
a_word = "A" + str(idx)
b_word = "B" + str(idx)
test.loc[idx] = [a_word, b_word]
test.to_csv("./test.csv", index=False)
#test.to_csv("./test.csv", mode='w')
#test.to_csv("./test.csv", mode='a', index=False, header=False)
mode : csv로 저장하기 위해 사용되는 모드, default = w / 일반적으로 w : write, a : append 가 있다.
index : 데이터를 저장할 때, index 값 저장 여부, default = True
header : 데이터를 저장할 때, column 값 저장 여부, default = True
# append로 저장할 때는 header가 없는게 낫다. (데이터 값으로 header값이 들어가기 때문에..)
'데이터' 카테고리의 다른 글
Python Multiprocessing (0) | 2020.11.30 |
---|---|
Pandas 주요 기능 (0) | 2020.11.30 |
python dictionary key값 중심으로 정렬 후 dictionary로 반환 (0) | 2020.11.10 |
python multiprocessing Manager pickle dump, load error (0) | 2020.11.10 |
Pandas isin (0) | 2020.11.02 |