csv ValueError:无法将类型为object的字符串转换为float

iih3973s  于 2023-09-27  发布在  其他
关注(0)|答案(2)|浏览(101)

伦敦_reservoir_levels.csv从here导入并上传到Jupyter笔记本。我可以为lower_lee_group列绘制图,但不能为lower_thames_group绘制图。我从df4.dtypes中看到,前者是一个float,后者是一个object。
我尝试将lower_thames转换为float类型,但得到相同的错误。表中有5个NA值,其中一些在两个相关列中的每一列中。第一个图显示正确。第二个给出:
“没有要绘制的数字数据”
下一行给出lower_thames_group的类型为object:

import pandas as pd
df4 = pd.DataFrame(pd.read_csv("london_reservoir_levels.csv"))
df4

df4.isnull().values.sum()
df4.plot(x = "year", y = "lower_lee_group")
df4.plot(x = "month", y = "lower_thames_group")
df4.dtypes
df4['lower_thames_group'] = df4['lower_thames_group'].astype(float)

我希望最后一行可以解决这个问题,但我得到了:
ValueError:无法将字符串转换为浮点型:'---'

ycl3bljg

ycl3bljg1#

你的csv文件中有异常值。请手动搜索文件中的“-”字符串并删除

wlp8pajw

wlp8pajw2#

您可以通过手动查找来删除“-”字符串,它会保存错误。
你可以把代码优化为

import pandas as pd
import matplotlib.pyplot as plt

df4 = pd.read_csv("london_reservoir_levels.csv")
num_missing_values = df4.isnull().sum().sum()
df4.plot(x="year", y="lower_lee_group", kind="line", title="Lower Lee Group")
plt.xlabel("Year")
plt.ylabel("Lower Lee Group Level")
plt.show()

df4.plot(x="month", y="lower_thames_group", kind="line", title="Lower Thames Group")
plt.xlabel("Month")
plt.ylabel("Lower Thames Group Level")
plt.show()
df4['lower_thames_group'] = df4['lower_thames_group'].astype(float)

print(df4.dtypes)

print(f"Total missing values: {num_missing_values}")

相关问题