python中无法将string转化为float是什么原因,该怎样解决呢?

#-*-coding:utf-8-*-importnumpyasnpimportMySQLdbasmdbimportglimportmatplotlib.pyplotas... # -*- coding: utf-8 -*-
import numpy as np
import MySQLdb as mdb
import gl
import matplotlib.pyplot as plt

from matplotlib.pyplot import plot,savefig
from pylab import *
try:
conn=mdb.connect(host=gl.hostname,user=gl.username,passwd=gl.passwd,db=gl.database)
cur=conn.cursor(mdb.cursors.DictCursor)
cur.execute("SELECT SUBSTRING(F_Time1,5,2) as subt,sum(quan_times) FROM (SELECT F_Time as F_Time1,cat_circle_num as quan_times FROM `track_cat` GROUP BY F_Time) as s2 GROUP BY SUBSTRING(F_Time1,5,2) ")
x=[] #清空
y=[]
rows = cur.fetchall()
for row in rows:
x.append(row["subt"])
y.append(row["sum(quan_times)"])
finally:
cur.close
conn.close
plt.plot(x, y)# use pylab to plot x and y
plt.xlim(00, 12)
plt.ylim(0, 20.)
plt.grid()
plt.show()

错误信息是:
>pythonw -u "5.py"
Traceback (most recent call last):
File "5.py", line 41, in <module>
plt.plot(x, y)# use pylab to plot x and y
File "F:\Python27\lib\site-packages\matplotlib\pyplot.py", line 2458, in plot
ret = ax.plot(*args, **kwargs)
File "F:\Python27\lib\site-packages\matplotlib\axes.py", line 3849, in plot
self.add_line(line)
File "F:\Python27\lib\site-packages\matplotlib\axes.py", line 1443, in add_line
self._update_line_limits(line)
File "F:\Python27\lib\site-packages\matplotlib\axes.py", line 1451, in _update_line_limits
p = line.get_path()
File "F:\Python27\lib\site-packages\matplotlib\lines.py", line 644, in get_path
self.recache()
File "F:\Python27\lib\site-packages\matplotlib\lines.py", line 392, in recache
x = np.asarray(xconv, np.float_)
File "F:\Python27\lib\site-packages\numpy\core\numeric.py", line 235, in asarray
return array(a, dtype, copy=False, order=order)
ValueError: could not convert string to float:
>Exit code: 1
展开
 我来答
simonncc
高粉答主

2018-03-30 · 关注我不会让你失望
知道大有可为答主
回答量:776
采纳率:100%
帮助的人:14万
展开全部

你从db里取出来的不是数是string吧。你改成x.append(float(row["subt"]))和y.append(float(row["sum(quan_times)"]))试试。

拓展:

1、浮点型数据类型,FLOAT 数据类型用于存储单精度浮点数或双精度浮点数。浮点数使用 IEEE(电气和电子工程师协会)格式。浮点类型的单精度值具有 4 个字节,包括一个符号位、一个 8 位 excess-127 二进制指数和一个 23 位尾数。尾数表示一个介于 1.0 和 2.0 之间的数。由于尾数的高顺序位始终为 1,因此它不是以数字形式存储的。此表示形式为 float 类型提供了一个大约在 -3.4E-38 和 3.4E+38 之间的范围。

2、可根据应用程序的需求将变量声明为 float 或 double。这两种类型之间的主要差异在于它们可表示的基数、它们需要的存储以及它们的范围。下表显示了基数与存储需求之间的关系。

mrbemani
2012-11-28
知道答主
回答量:4
采纳率:100%
帮助的人:3705
展开全部
floatNum = float('3.14')

这样
追问
我试了不可以,因为我那里的x是一个数组了,这该怎样改呢?
追答
x = [float(i) for i in x] 
y = [float(i) for i in y]
plt.plot(x,y)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zxszx4
2017-05-14 · TA获得超过512个赞
知道小有建树答主
回答量:732
采纳率:42%
帮助的人:214万
展开全部
好乱,懒得看
你把那个变量输出出来看看是个什么玩意,再确定看是不是能转换成float
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
烧烤解忧
2012-12-04 · TA获得超过100个赞
知道答主
回答量:109
采纳率:0%
帮助的人:75.9万
展开全部
把空串丢掉,非空串再转换不就得了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
kaisa1028
2012-11-29 · TA获得超过1.1万个赞
知道大有可为答主
回答量:5429
采纳率:28%
帮助的人:2580万
展开全部
你从db里取出来的不是数是string吧。你改成x.append(float(row["subt"]))和y.append(float(row["sum(quan_times)"]))试试
更多追问追答
追问
还是不可以呢~~不过谢谢了!
追答
你得看看你的row["subt"]和row["sum(quan_times)"]具体是什么,你需要把这两个变成float。
本回答被提问者和网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式