私はこれが直感的ではないと思っていました。それ以外の場合は質問を投稿しませんでした。しかし、もう一度、パンダは物事を微風にします。しかし、この情報として質問を維持することは、大量のデータを扱う他の人に役に立つかもしれません:
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ウルサンプリングのすべての行をスキップしています私はあなたがスキップされた行を自分で生成する必要があると思うでしょう – Jeff
@ジェフどのようにcsvの行の総数を知らずにこれを取得したいのですが、 – Luke
すべてのdtypesを格納し、最後に減らすのではなく、各chunk反復の後にmax dtypesを選択することも検討する必要があります。たとえば、2MMの行と500のチャンクサイズを持つcsvでは、フレームに400,000行が表示されます。 – jastr