import csv
with open("data/braki.stat") as csvfile: # csvfile - переменная, через которую будем работать с файлом
stat = csv.reader(csvfile) # функция reader читает содержимое файла braki.stat, разбивая строку на отдельные элементы
# теперь в переменной stat содержится файл, с которым будем работать в цикле, запрашивая по одной строке:
for row in stat:
print(row) # у нас небольшой файл в качестве примера, поэтому можем вывести его на экран,
# но так обычно не следует делать при миллионах записей ;)
['Годы', 'Единиц', 'На 1000 человек населения'] ['1950', '1222971', '12,0'] ['1960', '1499581', '12,5'] ['1970', '1319227', '10,1'] ['1980', '1464579', '10,6'] ['1990', '1319928', '8,9'] ['1995', '1075219', '7,3'] ['2000', '897327', '6,2'] ['2001', '1001589', '6,9'] ['2002', '1019762', '7,1'] ['2003', '1091778', '7,5'] ['2004', '979667', '6,8'] ['2005', '1066366', '7,4'] ['2006', '1113562', '7,8'] ['2007', '1262500', '8,8'] ['2008', '1179007', '8,3'] ['2009', '1199446', '8,4'] ['2010', '1215066', '8,5'] ['2011', '1316011', '9,2'] ['2012', '1213598', '8,5'] ['2013', '1225501', '8,5'] ['2014', '1225985', '8,4'] ['2015', '1161068', '7,9'] ['2016', '985836', '6,7'] ['2017', '1049735', '7,1'] ['2018', '893039', '6,1']
import csv
with open("data/braki.stat") as csvfile:
stat = csv.reader(csvfile) # delimiter=','
for row in stat:
# пропустим первую строку, которая содержит названия полей:
if row[0] == 'Годы':
continue
else:
print(row)
['1950', '1222971', '12,0'] ['1960', '1499581', '12,5'] ['1970', '1319227', '10,1'] ['1980', '1464579', '10,6'] ['1990', '1319928', '8,9'] ['1995', '1075219', '7,3'] ['2000', '897327', '6,2'] ['2001', '1001589', '6,9'] ['2002', '1019762', '7,1'] ['2003', '1091778', '7,5'] ['2004', '979667', '6,8'] ['2005', '1066366', '7,4'] ['2006', '1113562', '7,8'] ['2007', '1262500', '8,8'] ['2008', '1179007', '8,3'] ['2009', '1199446', '8,4'] ['2010', '1215066', '8,5'] ['2011', '1316011', '9,2'] ['2012', '1213598', '8,5'] ['2013', '1225501', '8,5'] ['2014', '1225985', '8,4'] ['2015', '1161068', '7,9'] ['2016', '985836', '6,7'] ['2017', '1049735', '7,1'] ['2018', '893039', '6,1']
Есть способ лучше:
import csv
with open("data/braki.stat") as csvfile:
stat = csv.reader(csvfile)
# пропустим первую строку, которая содержит названия полей:
next(csvfile)
for row in stat:
print(row)
['1950', '1222971', '12,0'] ['1960', '1499581', '12,5'] ['1970', '1319227', '10,1'] ['1980', '1464579', '10,6'] ['1990', '1319928', '8,9'] ['1995', '1075219', '7,3'] ['2000', '897327', '6,2'] ['2001', '1001589', '6,9'] ['2002', '1019762', '7,1'] ['2003', '1091778', '7,5'] ['2004', '979667', '6,8'] ['2005', '1066366', '7,4'] ['2006', '1113562', '7,8'] ['2007', '1262500', '8,8'] ['2008', '1179007', '8,3'] ['2009', '1199446', '8,4'] ['2010', '1215066', '8,5'] ['2011', '1316011', '9,2'] ['2012', '1213598', '8,5'] ['2013', '1225501', '8,5'] ['2014', '1225985', '8,4'] ['2015', '1161068', '7,9'] ['2016', '985836', '6,7'] ['2017', '1049735', '7,1'] ['2018', '893039', '6,1']
Для сохранения привязки года к показателям воспользуемся словарем (dict):
import csv
years = dict() # создаем пустой словарь
with open("data/braki.stat") as csvfile:
stat = csv.reader(csvfile)
next(csvfile)
for row in stat:
years[int(row[0])] = int(row[1])
print(years)
{1950: 1222971, 1960: 1499581, 1970: 1319227, 1980: 1464579, 1990: 1319928, 1995: 1075219, 2000: 897327, 2001: 1001589, 2002: 1019762, 2003: 1091778, 2004: 979667, 2005: 1066366, 2006: 1113562, 2007: 1262500, 2008: 1179007, 2009: 1199446, 2010: 1215066, 2011: 1316011, 2012: 1213598, 2013: 1225501, 2014: 1225985, 2015: 1161068, 2016: 985836, 2017: 1049735, 2018: 893039}
import matplotlib.pyplot as plt
x_coord = list(years.keys()) # получаем список ключей словаря years
y_coord = list(years.values()) # получаем список значений словаря years
# Построить график.
plt.plot(x_coord, y_coord)
# Показать график.
plt.show()
Следующий шаг - определить максимум и минимум значений словаря years.
Здесь требуется рассмотреть тему сортировки словарей.
# обычный sorted сортирует по ключам:
print(sorted(years))
[1950, 1960, 1970, 1980, 1990, 1995, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018]
# метод get возвращает значение по ключу
years.get(1950)
1222971
# сортировка (по возрастанию) значений словаря и печать их ключей:
print(sorted(years, key=years.get))
[2018, 2000, 2004, 2016, 2001, 2002, 2017, 2005, 1995, 2003, 2006, 2015, 2008, 2009, 2012, 2010, 1950, 2013, 2014, 2007, 2011, 1970, 1990, 1980, 1960]
# сортировка (по убыванию) значений словаря и печать их ключей:
print(sorted(years, key=years.get, reverse=True))
[1960, 1980, 1990, 1970, 2011, 2007, 2014, 2013, 1950, 2010, 2012, 2009, 2008, 2015, 2006, 2003, 1995, 2005, 2017, 2002, 2001, 2016, 2004, 2000, 2018]