나는 이것이 직관적이라고 생각하지 않았습니다. 그렇지 않으면 질문을 게시하지 않았을 것입니다. 그러나 다시 한번, 팬더는 일들을 산들 바람처럼 만듭니다. 그러나이 정보로 질문을 유지하는 대량의 데이터 작업을 다른 사람에게 유용 할 수 있습니다 :
In [1]: chunker = pd.read_csv('DATASET.csv', chunksize=500, header=0)
# Store the dtypes of each chunk into a list and convert it to a dataframe:
In [2]: dtypes = pd.DataFrame([chunk.dtypes for chunk in chunker])
In [3]: dtypes.values[:5]
Out[3]:
array([[int64, int64, int64, object, int64, int64, int64, int64],
[int64, int64, int64, int64, int64, int64, int64, int64],
[int64, int64, int64, int64, int64, int64, int64, int64],
[int64, int64, int64, int64, int64, int64, int64, int64],
[int64, int64, int64, int64, int64, int64, int64, int64]], dtype=object)
# Very cool that I can take the max of these data types and it will preserve the hierarchy:
In [4]: dtypes.max().values
Out[4]: array([int64, int64, int64, object, int64, int64, int64, int64], dtype=object)
# I can now store the above into a dictionary:
types = dtypes.max().to_dict()
# And pass it into pd.read_csv fo the second run:
chunker = pd.read_csv('tree_prop_dset.csv', dtype=types, chunksize=500)
당신은 또한 skiprows를 사용할 수는 건너 뛸 행의 목록을 =, 그리고 그렇게 1-9 UR 샘플링의 모든 행을 건너 뛸 수있다 단 10 번째 행마다 매우 빠를 것입니다 (그리고 prob는 원하는 답을 얻습니다), 나는 여러분 자신이 건너 뛴 행을 직접 생성해야한다고 생각합니다. – Jeff
@Jeff 어떻게 CSV에있는 행의 총 개수를 알지 못하면서 얻을 수 있습니까? – Luke
모든 것을 읽는 것이 필요합니다. 모든 dtypes를 저장하고 끝에 줄이지 않고 각 청크 반복 이후에 최대 dtypes를 선택하는 것도 고려해야합니다. 예를 들어, 2MM 행과 청크 크기가 500 인 CSV는 프레임에 400,000 개의 행을 생성합니다! – jastr