1

私は 100 個の CSV ファイルを持っており、そのすべてに異なる期間の同様の情報が含まれています。各期間から特定の情報を抽出するだけでよく、すべてのデータをメモリに保存する必要はありません。

現在、私は次のようなものを使用しています:

import pandas as pd
import numpy as np
import glob

average_distance = []
for files in glob.glob("*2013-Jan*"): # Here I'm only looking at one file
    data = pd.read_csv(files)

    average_distance.append(np.mean(data['DISTANCE']))
    rows = data[np.logical_or(data['CANCELLED'] == 1, data['DEP_DEL15'] == 1)]

    del data

私の質問は次のとおりです。これを行うためにジェネレーターを使用する方法はありますか?もしそうなら、これによりプロセスが高速化され、100 個の CSV ファイルを簡単に処理できるようになりますか?

これは正しい軌道に乗っていると思います:

def extract_info():
average_distance = []
for files in glob.glob("*20*"):
    data = pd.read_csv(files)

    average_distance.append(np.mean(data['DISTANCE']))
    rows = data[np.logical_or(data['CANCELLED'] == 1, data['DEP_DEL15'] == 1)]

    yield rows

cancelled_or_delayed = [month for month in extract_info()]

ありがとう!

4

1 に答える 1

0

Pandas の read_csv メソッドは高度に最適化されています。ドキュメントで説明されているように、読み取る列やチャンクサイズなどの引数を指定できます。したがって、呼び出しは次のようになります。

data = pd.read_csv(files, usecols=['Column_X', 'Column_Y'], chunksize=10000)
于 2013-11-08T15:16:30.587 に答える