В вашем коде есть некоторые ошибки, я не могу знать, какие из них вызывают ваше поведение, но после того, как вы исправите их все, вы сможете прогрессировать:
- Сначала посмотрите, как вы читаете столбцы,Обратите внимание, что вы перебираете столбец в считывателе , но никогда не используете столбец (вы создаете два новых csv.readers в каждой итерации в цикле for).Посмотрите на возможное решение впоследствии в этом ответе.
- В связи с этим вы читаете csv_file вне области действия оператора with, чтобы файл был уже закрыт.Если вы будете использовать цикл for и столбец , вам все равно не придется исправлять эту проблему.
- Вы строите графики на каждой итерации (таким образом, вы создадите 83 графика, а ядумаю, вы этого не хотите).
Таким образом, возможное решение будет:
import matplotlib.pyplot as plt
import csv
with open(cache_path + distance_csv) as csv_file:
reader = csv.reader(csv_file)
city_distance, crime_rate = [], []
for column in reader:
city_distance.append(float(column[1]))
crime_rate.append(float(column[2]))
plt.scatter(city_distance, crime_rate)
plt.show()
В будущем я рекомендую вам попробовать проверить, что len(city_distance)==len(crime_rate)
,Я имею в виду, проверяйте свои данные не в csv, а в коде, после чтения значений и непосредственно перед ошибкой - чтобы получить наиболее полезную информацию для продолжения.