ValueError:无法将字符串转换为浮点数:在 python 上绘制图形

Posted

技术标签:

【中文标题】ValueError:无法将字符串转换为浮点数:在 python 上绘制图形【英文标题】:ValueError: could not convert string to float: plotting a graph on python 【发布时间】:2017-11-30 11:24:21 【问题描述】:

我导入了一个 csv 文件,该文件都包含带指数的小数,例如 (5.5006250364943992**02)。我不断收到ValueError: could not convert string to float。这就是我所做的:

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()

【问题讨论】:

向我们展示您的csv 文件中的内容?至少一个样本? 【参考方案1】:

您编写的语法是文件中使用的语法吗?我不认为 Python 可以解释“5.5**02”。

如果“**”表示“10^”,那么您需要手动进行替换。

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

【讨论】:

很高兴注意到..似乎这会导致问题+1! 我试过你说的,还是不行。所以相反,我将所有值更改为这种形式的值 '5.5006250364943992*10**(02)' 和 5.5006250364943992*10^(02) 而不是我在问题中写的但仍然说它不能将字符串转换为浮点数. 问题在于 Python 没有 intepret 字符串(5.5*10**3 是 Python 中的有效表达式,但不是数字字符串的有效格式)。你能写出输出或解释为什么我的解决方案不起作用吗?我在我的电脑上尝试过它并且它有效,但你也需要对 y 值进行相同的替换。您想要的格式是"E-notation",如果您不想更改 CVS 文件,可以在代码中轻松更改。 成功了!谢谢。你是对的,问题在于 e 符号。

以上是关于ValueError:无法将字符串转换为浮点数:在 python 上绘制图形的主要内容,如果未能解决你的问题,请参考以下文章

ValueError:无法将字符串转换为浮点数:'Bad'

ValueError:无法将字符串转换为浮点数:'2100 - 2850'

ValueError:无法将字符串转换为浮点数:'n'

ValueError:无法将字符串转换为浮点数:'Mme'

ValueError:无法将字符串转换为浮点数:'62,6'

ValueError:无法将字符串转换为浮点数:''20,99''