2016-10-12 21 views
1

何の値のいくつかは、以下のように「未定義」としてラベル付けされている場合numpyの配列にCSVファイルからデータを読み込むための最良の方法である:numpyの:未定義の値を扱う、csvファイルを読む

0.231620,0.00001,444.157 
0.225370,--undefined--,1914.637 
0.237870,0.0003,--undefined-- 

私はこれらのファイルをたくさん用意しておく必要があります。定義されていない値をゼロにする必要があると仮定するとよいでしょう。

答えて

0

ナンパーを使用する必要はありません。

import numpy as np 
x = np.genfromtxt('data.csv', dtype=np.float, delimiter=',', 
    missing_values='--undefined--', filling_values=0.0, 
    ) 
+0

私はMarcus RennoのPandasを使って決着をつけました。しかし、これはナンシー(そして1ライナーのためのボーナススタイルのポイント)に頼るだけのために少し良いです。 –

0

浮動小数点型に変換した値をキャストして、型キャストValueError例外をキャッチし、それを例外ハンドラでゼロに割り当てることをお勧めします。

これはあなたのCSVは、浮動小数点値が含まれている、あなたのようなもので終わらなければならないと仮定すると、最も神託の方法

次のようになりますことが唯一の「--undefined--」の文字列で、

また
with open('data.csv', 'r') as fd: 
    # iterate over all lines in csv 
    for line in fd: 
     # split and iterate over values in line, maintaining item index 
     for i, value in enumerate(line.split(',')): 
      try: 
       value = float(value) 
      except ValueError: 
       # consider undefined/non-float value equals to 0 
       value = 0.0 
      # store parsed value wherever you need it 
      print('value[%d] = %f' % (i, value)) 

CSVファイルを読み込むと値にnumpyのを使用して、私はそれがパンダを使用していると思わ最善の方法を置き換えるには「0.0」として扱い、あなたが(最も内側のループ)のようにそれを書くことができ

  value = float(value) if value != '--undefined--' else 0 
1

同様に

import pandas as pd 

df = pd.read_csv('foo.csv', header=None) 
df.replace("--undefined--", 0.0, inplace=True) 
df 

     0  1   2 
0 0.23162 0.00001 444.157 
1 0.22537  0 1914.637 
2 0.23787 0.0003   0 
関連する問題