Python数据错误:ValueError:int()的无效文字,基数为10:'42152129.0'
Posted
技术标签:
【中文标题】Python数据错误:ValueError:int()的无效文字,基数为10:\'42152129.0\'【英文标题】:Python data error: ValueError: invalid literal for int() with base 10: '42152129.0'Python数据错误:ValueError:int()的无效文字,基数为10:'42152129.0' 【发布时间】:2016-11-14 22:26:01 【问题描述】:我正在使用 Python 进行一个简单的数据科学项目。但是,我收到以下错误:
ValueError:无法将字符串转换为浮点数:
我的代码如下所示:
import matplotlib.pyplot as plt
import csv
from datetime import datetime
filename = 'USAID.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
monies = []
for row in reader:
money = int(row[1])
monies.append(money)
print(monies)
如果我换行:
money = int(row[1]) to money = float(row[1])
我收到此错误:ValueError:无法将字符串转换为浮点数: 这是我的回溯:第一个错误:
Traceback (most recent call last):
File "funding.py", line 60, in <module>
money = int(row[1])
ValueError: invalid literal for int() with base 10: '42152129.0'
第二个错误:
Traceback (most recent call last):
File "funding.py", line 60, in <module>
money = float(row[1])
ValueError: could not convert string to float:
任何帮助都会很棒!谢谢!
【问题讨论】:
有什么理由不使用 pandasread_csv
方法加载这个? df = pd.read_csv(filename)
?这将为您的数据使用适当的dtypes
,此外您还可以使用astype
轻松转换:df['col'] = pd.to_numeric(df['col'], errors='coerce')
你没有告诉你期望你的代码做什么,为什么会这样。错误很明显 - '42152129.0'
不能明确地转换为 int(因为它不是 int 的有效字符串表示形式),``(空字符串)也不能明确地转换为 float。
我一直在考虑使用 Pandas 并且过去几天一直在考虑,但是,我想绘制数据,但目前还不确定如何在 Pandas 中执行此操作。我只想绘制对某些国家的经济援助数据,x 轴是日期,y 是金额。
pandas
支持绘图方法和matplotlib,例如您可以直接调用df.plot()
或df.plot().barh()
,参见docs
哦,我会检查一下!这是我真正想做的,但还没有找到一个很好的教程来展示我一起使用 matplotlib 和 Pandas。 (这实际上是我想要的,我会检查文档。)
【参考方案1】:
第一次失败是因为你将一个带有.
的字符串传递给int()
;您不能将其转换为整数,因为有小数部分。
第二次失败是由于不同 row[1]
字符串值;一个是空的。
你可以测试一下:
if row[1]:
money = float(row[1])
由于您正在处理数据科学项目,您可能需要考虑使用 pandas
project 来加载您的 CSV,而不是使用 DataFrame.read_csv()
。
【讨论】:
或try-except
包装器【参考方案2】:
row[1]
中的某些条目是空的,因此您可能需要在尝试投射之前检查这些条目。如果条目为空,则传递默认值,例如 0
。
那么您应该考虑使用decimal
进行与金钱相关的计算。
【讨论】:
@MartijnPieters OP 与金钱打交道。边际损失不可协商 虽然 pandas 支持decimal
有点问题,但在这种情况下我会坚持使用像 float
和 float64
这样的 numpy 类型
@MosesKoledoye:很公平。【参考方案3】:
我在使用 Seaborn 学习数据可视化时遇到了同样的问题。感谢EdChum的帮助,我用他的方法解决了这个问题:
df['col'] = pd.to_numeric(df['col'], errors='coerce')
【讨论】:
以上是关于Python数据错误:ValueError:int()的无效文字,基数为10:'42152129.0'的主要内容,如果未能解决你的问题,请参考以下文章
Python中ValueError: invalid literal for int() with base 10 的实用解决办法
请问这段python代码哪里出错了,错误代码:ValueError: invalid literal for int() with base 10: ','?
ValueError: int() 以 10 为基数的无效文字:''
Python 属性错误:“int”对象没有属性“reshape”