web-dev-qa-db-ja.com

pandas)でread_csvを使用しているときに精度が失われました

以下の形式のファイルをテキストファイルに入れて、pandasデータフレームに読み込もうとしています。

895|2015-4-23|19|10000|LA|0.4677978806|0.4773469340|0.4089938425|0.8224291972|0.8652525793|0.6829942860|0.5139162227|

ご覧のとおり、入力ファイルの浮動小数点の後に1整数があります。

df = pd.read_csv('mockup.txt',header=None,delimiter='|')

データフレームに読み込もうとすると、最後の4つの整数が取得されません

df[5].head()

0    0.467798
1    0.258165
2    0.860384
3    0.803388
4    0.249820
Name: 5, dtype: float64

入力ファイルに存在する完全な精度を取得するにはどうすればよいですか?文字列としてキャストできないように、実行する必要のある行列操作がいくつかあります。

私はdtypeについて何かをしなければならないことを理解しましたが、それをどこで使うべきかわかりません。

12

表示の問題のみです。 docs を参照してください。

#temporaly set display precision
with pd.option_context('display.precision', 10):
    print df

     0          1   2      3   4             5            6             7   \
0  895  2015-4-23  19  10000  LA  0.4677978806  0.477346934  0.4089938425   

             8             9            10            11  12  
0  0.8224291972  0.8652525793  0.682994286  0.5139162227 NaN    

編集:(ありがとう マークディキンソン ):

パンダは、速度を上げるために完全な精度を犠牲にする専用の10進数から2進数へのコンバーターを使用します。合格float_precision='round_trip' to read_csvは、これを修正します。詳細については、 ドキュメント を参照してください。

19
jezrael