Pandas의 청크 크기
Python의 pandas
라이브러리를 사용하면 DataFrames로 작업할 수 있습니다. 데이터는 DataFrame에서 행과 열로 구성됩니다.
여러 소스의 데이터를 DataFrame으로 읽을 수 있습니다.
실제 상황에서는 수천 개의 행과 열이 포함된 데이터 세트를 처리할 수 있습니다. 이 데이터 세트는 소스에 따라 DataFrame으로 읽을 수 있습니다.
Pandas의 청크 크기
경우에 따라 큰 데이터 세트를 읽는 동안 chunksize
매개변수를 사용하여 데이터 세트를 데이터 청크로 나눕니다. chunksize
매개변수를 사용하여 이러한 청크의 크기를 지정합니다.
이것은 계산 메모리를 절약하고 코드의 효율성을 향상시킵니다.
먼저 read_csv()
함수에서 chunksize
매개변수를 사용하지 않고 CSV 파일을 읽어봅시다. 이 예에서는 영화 리뷰가 포함된 샘플 데이터 세트를 읽습니다.
import pandas as pd
df = pd.read_csv("ratings.csv")
print(df.shape)
print(df.info)
출력:
(25000095, 4)
<bound method DataFrame.info of userId movieId rating timestamp
0 1 296 5.0 1147880044
1 1 306 3.5 1147868817
2 1 307 5.0 1147868828
3 1 665 5.0 1147878820
4 1 899 3.5 1147868510
... ... ... ... ...
25000090 162541 50872 4.5 1240953372
25000091 162541 55768 2.5 1240951998
25000092 162541 56176 2.0 1240950697
25000093 162541 58559 4.0 1240953434
25000094 162541 63876 5.0 1240952515
[25000095 rows x 4 columns]>
위의 예에서는 주어진 데이터 세트를 읽고 세부 정보를 표시합니다. shape
속성은 행과 열, 각각 25000095와 4를 반환합니다.
또한 info
속성을 사용하여 데이터 세트의 행과 열에 대한 일부 정보를 표시합니다.
이 데이터 세트에는 2500005개의 행이 포함되어 있으며 이러한 큰 데이터 세트를 처리하려면 많은 컴퓨터 메모리가 필요합니다. 이러한 경우 chunksize
매개변수를 사용할 수 있습니다.
이를 위해 먼저 Python에서 반복자가 무엇인지 이해하겠습니다.
반복 가능한 시퀀스는 for
루프를 사용하여 반복될 수 있습니다. for
루프는 iter()
메소드를 이러한 객체에 내부적으로 적용하여 반복자를 생성합니다.
next()
함수를 사용하여 시퀀스의 요소에 액세스할 수 있습니다.
chunksize
매개변수를 사용하면 반복자를 얻습니다. 값을 얻기 위해 이 개체를 반복할 수 있습니다.
import pandas as pd
df = pd.read_csv("ratings.csv", chunksize=10000000)
for i in df:
print(i.shape)
출력:
(10000000, 4)
(10000000, 4)
(5000095, 4)
위의 예에서 일부 값으로 chunksize
매개변수를 지정하고 데이터 집합을 주어진 행이 있는 데이터 청크로 읽습니다. 데이터 세트의 경우 chunksize
연산자를 10000000으로 지정했을 때 3개의 반복자가 있었습니다.
반환된 개체는 DataFrame이 아니라 pandas.io.parsers.TextFileReader
개체입니다.
개체를 반복하고 값에 액세스할 수 있습니다. 열 수는 각 반복자에 대해 동일합니다. 즉, chunksize
매개변수는 반복자를 생성하는 동안 행만 고려합니다.
이 매개변수는 pandas.read_json
, pandas.read_stata
, pandas.read_sql_table
, pandas.read_sas
등과 같은 다른 소스에서 데이터를 읽을 수 있는 다른 함수와 함께 사용할 수 있습니다. 이 매개변수를 사용하기 전에 공식 문서를 확인하여 가용성을 확인하는 것이 좋습니다.
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn