情報学部大学生のダラダラ日記

β日記

機械学習や日記っぽいものを書きます

Pythonでcsvを分割して読み込む(改訂版)

スポンサーリンク

はじめに

半年ほど前に似たような記事を書いたのですが、それは自分が使用したコードを貼り付けただけで全く参考にならなさそうだったので簡略化したものをもう一度書くことにしました。

前回の↓

Python3で大容量のcsvファイルを分割して読み込む - 情報学部大学生のダラダラ日記

 

使用するcsvとコード

スクリーンショットで失礼します。以下のcsvを使います。

f:id:Parco1021:20191228182704p:plain

import pandas as pd

reader = pd.read_csv('tagA.csv'chunksize=5)

for r in reader:
    print(r)

chunksizeなどの説明は以前の記事に書いたのでそちらをご覧になってください。簡単に言うとchunksizeで指定した数で分割して読み込みます。なのでこのコードだと5個ずつデータを分割します。そして今回データ数は10個なので10/5で2回に分けて読み込みます。

 

結果

f:id:Parco1021:20191228181452p:plain

ご覧の通り5個ずつ2回に分けて読み込んでいることがわかります。

もう少しいじってみる

分割して読み込んだのはいいとして、これを少しいじってみます。

コード
import pandas as pd

reader = pd.read_csv('tagA.csv'chunksize=5)

for r in reader:
    row = []
    for index,rows in r.iterrows():
        print(rows[1])
        row.append(rows[1])
    print("#分割の区切り")
    print(row)

iterrows()とすることで列ごと見ることができます。具体的にはこのコードにおけるrowsはrow[0]にid、row[1]にはtagが入っています。これをさらに別々に出力させることもでき、今回はリストにも入れてみました。

出力

f:id:Parco1021:20191228185655p:plain

今回はfor文の中でリストを初期化しているのでこのような出力となっていますが、外でやった場合、全データのtagのリストとなります。また、iterrows()をiteritems()とすることで行で見ることができるので用途によって使い分けが必要です。
また、今回出力させていませんが、indexにはインデックス(0,1,...9)が入っています。

さいごに

使用機材のメモリにのらない時に多く使われる印象のあるchunksizeというオプションですが、考えようによっては他にも良い使い方がありそうだな~と思いました。

 

おわり。

もしよければ↓ぽちっと↓お願いします。

ブログランキング・にほんブログ村へにほんブログ村

 

PVアクセスランキング にほんブログ村

 

スポンサーリンク