Python绘图报错ValueError:无法将字符串转换为浮点数求助
问题解决:绘图时字符串无法转换为浮点数的错误
问题详情
执行绘图代码时触发字符串转浮点数失败的错误,代码及报错信息如下:
原代码
x = data_sss.iloc[:,0].astype(float) y = data_sss.iloc[:,1].astype(float) z = data_sss.iloc[:,2].astype(float) x, y, z = np.loadtxt("try1.csv", unpack=True) N = int(len(SSS)**.5) z = SSS.reshape(N, N) plt.imshow(z, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)), norm=LogNorm(), aspect = 'auto') plt.colorbar() plt.show()
报错信息
ValueError Traceback (most recent call last) ~\AppData\Local\Temp\ipykernel_20520\3739732047.py in <module> ----> 1 x, y, z = np.loadtxt("try1.csv", unpack=True) 2 N = int(len(SSS)**.5) 3 z = SSS.reshape(N, N) 4 plt.imshow(z, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)), norm=LogNorm(), aspect = 'auto') 5 plt.colorbar() ValueError: could not convert string to float: '0,134,34.5'
数据集为逗号分隔格式,每行内容类似0,134,34.5(三列分别对应x、y、z值)。
解决方案
核心问题修正
错误根源是np.loadtxt默认以空格/制表符为分隔符,但你的CSV文件使用逗号分隔。需修改loadtxt参数:
# 指定逗号为分隔符 x, y, z = np.loadtxt("try1.csv", delimiter=',', unpack=True)
次要问题修正
代码中SSS变量未定义,需替换为已读取的z变量:
N = int(len(z)**.5) z = z.reshape(N, N)
完整修正后代码
# 若data_sss是已读取的DataFrame,这三行可保留或删除(后续从CSV重新读取了数据) x = data_sss.iloc[:,0].astype(float) y = data_sss.iloc[:,1].astype(float) z = data_sss.iloc[:,2].astype(float) # 修正分隔符参数 x, y, z = np.loadtxt("try1.csv", delimiter=',', unpack=True) # 修正未定义变量问题 N = int(len(z)**.5) z = z.reshape(N, N) plt.imshow(z, extent=(np.amin(x), np.amax(x), np.amin(y), np.amax(y)), norm=LogNorm(), aspect = 'auto') plt.colorbar() plt.show()
额外提示
若CSV文件包含表头行,需添加skiprows=1参数跳过表头:
x, y, z = np.loadtxt("try1.csv", delimiter=',', skiprows=1, unpack=True)
内容的提问来源于stack exchange,提问作者zam
相关产品推荐
相关产品推荐

