2017-06-27 4 views
3

すべての小数点を含むcsvファイルをインポートしました(例:5.5006250364943992 ** 02)。私はValueError: could not convert string to floatを得続けます。これは私がやったことです:ValueError:文字列を浮動小数点に変換できませんでした:Pythonでグラフをプロットする

import matplotlib.pyplot as plt 
import csv 
x = [] 
y = [] 
with open('DNSdata.csv', 'r') as csvfile: 
    plots = csv.reader(csvfile, delimiter=',') 
    for row in plots: 
     x.append(float(row[0])) 
     y.append(float(row[1])) 
plt.plot(x, y, label='DNSdata') 
plt.xlabel('x') 
plt.ylabel('y') 
plt.title('DNSdata') 
plt.show() 
+0

あなたの 'csv'ファイルには何が表示されますか?サンプルは少なくとも? – void

答えて

4

ファイルに使用されている構文は書いてありますか?私はPythonが "5.5 ** 02"をintepretできるとは思わない。

「**」は「10 ^」を意味する場合は、手動で交換する必要があります。

tmp = row[0].replace("**","e") 
x.append(tmp) 
+0

それに気付いたことは、そのような問題が+ 1の問題を引き起こしたと思います! – void

+0

私はあなたが言ったことを試みたが、うまくいかなかった。代わりに私は私の質問に書いたものの代わりにこのフォーム '5.5006250364943992 * 10 **(02)'と5.5006250364943992 * 10 ^(02)の値にすべての値を変更しましたが、文字列を浮動小数点。 – gabriella

+0

問題は、Pythonは_intepret_文字列(5.5 * 10 ** 3はPythonでは有効な式ですが、数値文字列には有効な書式ではありません)です。 出力を書き込んだり、私の解決策がうまくいかなかった理由を説明できますか?私は自分のコンピュータでそれを試してみましたが、それはうまくいったのですが、yの値を同じように置き換える必要があります。 あなたが望むフォーマットは["E-notation"](https://en.wikipedia.org/wiki/Scientific_notation#E-notation)です。CVSファイルを変更したくない場合は、簡単に変更できますコードで – fjafjan

関連する問題