2012-03-29 18 views
1

私はcsvファイルを読むためにパンダを使用しています。データは数字ですが、テキストとしてCSVファイルに保存されます。値の一部は、不良または欠落している場合は数値ではありません。これらの値をフィルタリングして残りのデータを整数に変換するにはどうすればよいですか。python pandasでcsvを読み込み、不正な値を扱う

すべての値をループし、isdigit()を使用して数字であることをテストするよりも優れた方法があると思います。

pandasまたはnumpyには、読者の不正な値を認識する方法がありますか?そうでない場合、それを行う最も簡単な方法は何ですか?私はこの作業をするためにdタイプを特定する必要がありますか?

答えて

3

pandas.read_csvは、パラメータna_valuesを持っています。

+0

素晴らしいです。これは私が探していたようだ。 – Dave31415

+0

文字列が列に依存する場合、na_valuesを使用する方法はありますか?たとえば、私は負の値が悪い列をいくつか持っていますが、他の列は正常です。 – Shawn

+1

@Shawnはありません。理想的には、各列に対して異なる処理を実行することはできません。負の値の処理は、データの前処理/クリーニング中に行う必要があります – JKC

1

NumPyは、特にこの目的のために関数genfromtxt()を提供します。リンクされたドキュメントの最初の文:

指定されたとおりに処理された欠損値を持つテキストファイルからデータを読み込みます。

+0

よろしくお願いいたします。私はパンダがより高いレベルのアドオンであると考えられていたと思った。私はこの機能を期待していました。だからそれを使用して、それをデータフレームに変換しますか? – Dave31415

+0

@ Dave31415:データがどのように見えるかはわかりませんが、これが最初に試してみる方法です。 –

+0

'pandas.read_csv'で必要なことができない場合は、GitHubで問題を作成してください:http://github.com/pydata/pandas/issues –

3

pandas.read_csvを使用して、欠損として扱われる値のカスタムリストを渡すことができます。あるいは、関数をconverters引数に渡すこともできます。あなたはこれらの不正な値を定義することができます

na_values : list-like, default None 
    List of additional strings to recognize as NA/NaN 

関連する問題