正在将csv文件读取为python值错误:无法将字符串转换为浮点值
在此方面的任何帮助都将不胜感激。请记住,我是Python的初学者。这是我遇到问题的代码部分:正在将csv文件读取为python值错误:无法将字符串转换为浮点值,python,csv,Python,Csv,在此方面的任何帮助都将不胜感激。请记住,我是Python的初学者。这是我遇到问题的代码部分: __author__ = 'peter' from datetime import datetime, timedelta import csv TICKER='CHTR' STDEV_FILE = TICKER + '_stdev.csv' TRADES_FILE = TICKER + '_trades.csv' DATETIME_CSV_FORMAT = '%Y%m%d %H:%M:%S'
__author__ = 'peter'
from datetime import datetime, timedelta
import csv
TICKER='CHTR'
STDEV_FILE = TICKER + '_stdev.csv'
TRADES_FILE = TICKER + '_trades.csv'
DATETIME_CSV_FORMAT = '%Y%m%d %H:%M:%S'
def read_data(csv_filename):
result = {}
with open(csv_filename, 'rb') as csvfile:
reader = csv.reader(csvfile, delimiter=',', quotechar='|')
header = reader.next()
#print 'HEADER',header
for row in reader:
new_data=None
if len(row)==6: # this is a QUOTES file
ticker, date, time, price, rtn, standard = row
rtn = float(rtn)
standard = float(standard)
new_data = [rtn, standard]
else: # assume this is a TRADES file otherwise
ticker, date, time, price, size = row
price = float(price)
size = int(size)
new_data = [price, size]
date_object = datetime.strptime(date +' '+time, DATETIME_CSV_FORMAT)
if not ticker in result:
result[ticker]=[]
result[ticker].append([date_object] + new_data)
return result
vol = read_data(STDEV_FILE)
trades = read_data(TRADES_FILE
)
当我运行它时,这是我收到的错误:
Traceback (most recent call last):
File "/home/peter/PycharmProjects/Vol/Vol.py", line 39, in <module>
vol = read_data(STDEV_FILE)
File "/home/peter/PycharmProjects/Vol/Vol.py", line 25, in read_data
standard = float(standard)
ValueError: could not convert string to float: #DIV/0!
最后,我想在y轴上绘制标准偏差,在x轴上绘制午夜后的秒数。任何帮助都将不胜感激。问题是您正在尝试将字符串“#DIV/0”转换为浮点。显然这是不可能的。原因是试图在excel/csv工作表中的某个位置除以零。请查看excel工作表,查看是否有任何内容被零除,然后对其进行更改 或者,您可以实现一个简单的if语句:
if standard == '#DIV/0':
print 'Error'
else:
standard = float(standard)
编辑:一些参考资料:与“if standard=='#DIV/0':”相比,它可能更容易执行以下操作:
if standard.isdigit():
standard = float(standard)
else:
# error code
isdigit街()将检查“str”中的所有字符是否为数字。您是否尝试识别导致问题的行?例如,您可以将文件拆分为两半,然后查看哪一半仍然存在问题,并不断重复,直到将其缩小到有问题的行。这不是CSV文件。此外,有些内容无法转换ert很容易浮动(或者根本不浮动),我假设它得到了一些它无法处理的数据,然后说“去它的。”。“在出现问题的行前面放置一条打印语句,以查看失败时它试图转换的内容。我复制并粘贴了csv文件。这张照片很难格式化。它是excel文件中信息的一种表示形式。CSV代表“逗号分隔值”,尽管您确实可以使用任何分隔符。。。但您的文件只是一个文本文件,格式类似于表格。请查看参考资料。#DIV/0错误可能由许多因素引起,例如引用空单元格。无论哪种方式,问题都在于excel工作表,而不是您的代码。代码正在读取“#DIV/0”,因此该值已在excel工作表中。在文本编辑器中打开CSV并查看导致错误的行。
if standard.isdigit():
standard = float(standard)
else:
# error code