Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
正在将csv文件读取为python值错误:无法将字符串转换为浮点值_Python_Csv - Fatal编程技术网

正在将csv文件读取为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'

在此方面的任何帮助都将不胜感激。请记住,我是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'

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