{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "### Необходимо определить, в какой год были максимальные и минимальные значения показателей" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['Годы', 'Единиц', 'На 1000 человек населения']\n", "['1950', '1222971', '12,0']\n", "['1960', '1499581', '12,5']\n", "['1970', '1319227', '10,1']\n", "['1980', '1464579', '10,6']\n", "['1990', '1319928', '8,9']\n", "['1995', '1075219', '7,3']\n", "['2000', '897327', '6,2']\n", "['2001', '1001589', '6,9']\n", "['2002', '1019762', '7,1']\n", "['2003', '1091778', '7,5']\n", "['2004', '979667', '6,8']\n", "['2005', '1066366', '7,4']\n", "['2006', '1113562', '7,8']\n", "['2007', '1262500', '8,8']\n", "['2008', '1179007', '8,3']\n", "['2009', '1199446', '8,4']\n", "['2010', '1215066', '8,5']\n", "['2011', '1316011', '9,2']\n", "['2012', '1213598', '8,5']\n", "['2013', '1225501', '8,5']\n", "['2014', '1225985', '8,4']\n", "['2015', '1161068', '7,9']\n", "['2016', '985836', '6,7']\n", "['2017', '1049735', '7,1']\n", "['2018', '893039', '6,1']\n" ] } ], "source": [ "import csv\n", "\n", "with open(\"data/braki.stat\") as csvfile: # csvfile - переменная, через которую будем работать с файлом\n", " stat = csv.reader(csvfile) # функция reader читает содержимое файла braki.stat, разбивая строку на отдельные элементы \n", " # теперь в переменной stat содержится файл, с которым будем работать в цикле, запрашивая по одной строке:\n", " for row in stat: \n", " print(row) # у нас небольшой файл в качестве примера, поэтому можем вывести его на экран,\n", " # но так обычно не следует делать при миллионах записей ;)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['1950', '1222971', '12,0']\n", "['1960', '1499581', '12,5']\n", "['1970', '1319227', '10,1']\n", "['1980', '1464579', '10,6']\n", "['1990', '1319928', '8,9']\n", "['1995', '1075219', '7,3']\n", "['2000', '897327', '6,2']\n", "['2001', '1001589', '6,9']\n", "['2002', '1019762', '7,1']\n", "['2003', '1091778', '7,5']\n", "['2004', '979667', '6,8']\n", "['2005', '1066366', '7,4']\n", "['2006', '1113562', '7,8']\n", "['2007', '1262500', '8,8']\n", "['2008', '1179007', '8,3']\n", "['2009', '1199446', '8,4']\n", "['2010', '1215066', '8,5']\n", "['2011', '1316011', '9,2']\n", "['2012', '1213598', '8,5']\n", "['2013', '1225501', '8,5']\n", "['2014', '1225985', '8,4']\n", "['2015', '1161068', '7,9']\n", "['2016', '985836', '6,7']\n", "['2017', '1049735', '7,1']\n", "['2018', '893039', '6,1']\n" ] } ], "source": [ "import csv\n", "\n", "with open(\"data/braki.stat\") as csvfile: \n", " stat = csv.reader(csvfile) # delimiter=','\n", " for row in stat: \n", " # пропустим первую строку, которая содержит названия полей:\n", " if row[0] == 'Годы':\n", " continue\n", " else:\n", " print(row) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Есть способ лучше:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "scrolled": true }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "['1950', '1222971', '12,0']\n", "['1960', '1499581', '12,5']\n", "['1970', '1319227', '10,1']\n", "['1980', '1464579', '10,6']\n", "['1990', '1319928', '8,9']\n", "['1995', '1075219', '7,3']\n", "['2000', '897327', '6,2']\n", "['2001', '1001589', '6,9']\n", "['2002', '1019762', '7,1']\n", "['2003', '1091778', '7,5']\n", "['2004', '979667', '6,8']\n", "['2005', '1066366', '7,4']\n", "['2006', '1113562', '7,8']\n", "['2007', '1262500', '8,8']\n", "['2008', '1179007', '8,3']\n", "['2009', '1199446', '8,4']\n", "['2010', '1215066', '8,5']\n", "['2011', '1316011', '9,2']\n", "['2012', '1213598', '8,5']\n", "['2013', '1225501', '8,5']\n", "['2014', '1225985', '8,4']\n", "['2015', '1161068', '7,9']\n", "['2016', '985836', '6,7']\n", "['2017', '1049735', '7,1']\n", "['2018', '893039', '6,1']\n" ] } ], "source": [ "import csv\n", "\n", "with open(\"data/braki.stat\") as csvfile: \n", " stat = csv.reader(csvfile)\n", " # пропустим первую строку, которая содержит названия полей:\n", " next(csvfile)\n", " for row in stat: \n", " print(row) " ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Для сохранения привязки года к показателям воспользуемся словарем (dict):" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "{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}\n" ] } ], "source": [ "import csv\n", "\n", "years = dict() # создаем пустой словарь\n", "\n", "with open(\"data/braki.stat\") as csvfile: \n", " stat = csv.reader(csvfile)\n", " next(csvfile)\n", " for row in stat: \n", " years[int(row[0])] = int(row[1])\n", "\n", "print(years)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "### Сложно ориентироваться в значениях, поэтому построим график:" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" } ], "source": [ "import matplotlib.pyplot as plt\n", "\n", "x_coord = list(years.keys()) # получаем список ключей словаря years\n", "y_coord = list(years.values()) # получаем список значений словаря years\n", " \n", "# Построить график.\n", "plt.plot(x_coord, y_coord)\n", "\n", "# Показать график.\n", "plt.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Следующий шаг - определить максимум и минимум значений словаря years.\n", "\n", "Здесь требуется рассмотреть тему сортировки словарей." ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[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]\n" ] } ], "source": [ "# обычный sorted сортирует по ключам:\n", "print(sorted(years)) " ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "1222971" ] }, "execution_count": 9, "metadata": {}, "output_type": "execute_result" } ], "source": [ "# метод get возвращает значение по ключу\n", "years.get(1950)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[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]\n" ] } ], "source": [ "# сортировка (по возрастанию) значений словаря и печать их ключей:\n", "print(sorted(years, key=years.get))" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "[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]\n" ] } ], "source": [ "# сортировка (по убыванию) значений словаря и печать их ключей:\n", "print(sorted(years, key=years.get, reverse=True))" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.3" } }, "nbformat": 4, "nbformat_minor": 4 }