2016-05-31 1 views
0

私はyelpデータセットを扱っています。もちろん、何百万ものエントリがありますので、必要なものをダウンロードしたり、手動で削除しなければならない方法があれば疑問でした。たとえば、yelpは自動車修理から美容院までのすべてのレビューを持っていますが、私はレストランについてのレビューだけが必要です。だから私は全体を読んで、私が必要としない行をドロップする必要がありますか?pandasデータフレームにread_csvを使用してデータをダウンロードする前に、データをプレフィルタする方法はありますか?

+0

どこからダウンロードしていますか? –

+0

yelpデータセットからjsonファイルとしてダウンロードした後、コンバータを使用してCSVファイルに変更しました – mmera

+0

どこから取得したかのリンクを共有できますか?フィルタリングする方法があると思います。 –

答えて

0

あなたは.csvファイルを見ている、あなたが読んで、前処理chunksではなく、のように、完全なデータセットを読み込むしたと仮定すると:

df = pd.DataFrame() 
chunksize = 100000 
for chunk in pd.read_csv(filename, chunksize=chunksize): 
    process(chunk) 
    df = pd.concat([df, chunk]) 

あなたは元のデータセットに入るかを制御する能力を持っている場合は、もちろん、もっとうまくいくでしょう。

+0

これは私のために行く方法だと思います。私はチャンク内のデータを処理し、連結し続けることができますので、それは永遠にかかりません。 – mmera

+0

はい、計算時間がサイズに比例して速くなると、かなり速くなります。 – Stefan

0

通常、すべてを読み込み、データセットをフィルタリングします。

しかし、実際にプリフィルタをかけたいと思っていて、システムのようなUNIXシステムを使用しているのであれば、grepを使用して事前フィルタリングを行うことができます。

これらの間の妥協点は、PythonとPandasを使用してプレフィルターを作成し、データをダウンロードし、プレフィルター処理して(別のcsvに事前フィルターされたデータを書き込む)、プレフィルターされたデータで再生することです。

データセット全体をロードする必要がある回数に依存します。一度読んで破棄する必要がある場合は、事前フィルタリングする必要はありませんが、コードを操作しながらテストしたい場合それは多くの時間、prefilteringはあなたにいくつかの秒を節約することがあります。しかしもう一度、別の可能性があります:ipythonノートブックを使用すると、あなたはデータセットを読み込み、フィルタリングし、現在ロードされているこのデータセットで現在何時でも作業しているコードのブロックを実行できます。事前にフィルタリングされたデータセットをロードするよりも高速です。

本当の答えはここにありません。あなたの使い方や個人的な好みによって変わります。

+0

実際にipythonノートブックを使ってみると、期待していたよりもはるかに高速でした!ありがとう! – mmera

関連する問題