latitude = [float(i) for i in latitude]
Проблема с этой строкой. latitude
начинается со строки, например "100.5"
. Когда вы делаете [float(i) for i in latitude]
, Python перебирает каждый символ в этой строке и пытается преобразовать его в число с плавающей точкой, эффективно выполняя:
latitude = [float("1"), float("0"), float("0"), float("."), float("5")]
Но float(".")
терпит неудачу, потому что вы не можете преобразовать десятичную точку в число с плавающей точкой.
Я предполагаю, что вы действительно хотели, чтобы latitude
начинался как список строк, который стал бы списком с плавающей точкой после выполнения этой строки. Если это так, то вам нужно изменить свой код для чтения csv. В настоящее время он присваивает строковые значения latitude
, longitude
и windspeed
, при этом каждая итерация полностью перезаписывает все значения, которые были прочитаны в предыдущей итерации. Если вы хотите накапливать все значения без перезаписи, то вам нужно создать переменные в виде списков и добавить их.
latitude = []
longitude = []
windspeed = []
#open the file and extract the data
with open("irma.csv", 'rt') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
latitude.append(row["Lat"])
longitude.append(row["Lon"])
windspeed.append(row["Wind"])
Этого должно быть достаточно само по себе, но вы также можете удалить определения из списка с плавающей запятой и просто выполнить преобразование непосредственно в этом цикле. (И пока мы это делаем, давайте приумножим имена переменных, что обычно при работе со списочными данными)
latitudes = []
longitudes = []
windspeeds = []
#open the file and extract the data
with open("irma.csv", 'rt') as csvfile:
reader = csv.DictReader(csvfile)
for row in reader:
latitudes.append(float(row["Lat"]))
longitudes.append(float(row["Lon"]))
windspeeds.append(float(row["Wind"]))