Теперь попробуем провести настоящую работу с табличными данными. Задача будет такая: "В файле "temperature.csv" дана информация о дневной и ночной температуре за несколько дней. Данные представлены двумя столбцами". Давайте сразу посмотрим на данные. Они лежат в той же папке. В первом столбце у нас дневная температура, во втором столбце — ночная. Как мы понимаем, что это столбцы? Они разделены, но в данном случае не запятой, а точкой с запятой. Мы предполагаем ситуацию, что могут быть еще какие-то пробелы добавлены. Главное, что первый столбец с дневной температурой отделен от второго столбца с ночной температурой точкой с запятой. Нам требуется найти среднюю дневную и среднюю ночную температуру. Сколько в среднем было градусов? Конечно, такую задачу можно было бы решить в Google-таблицах или Excel, но мы с вами учимся работать в Python. Давайте осваивать его инструменты, и тогда вы сможете решать уже более сложные задачи, которые просто так в Excel не решить. Начинать нужно, конечно, с простого. Как мы будем решать такую задачу? Начнем с чтения данных, обработки данных, а потом уже займемся тем, что требуется посчитать. Начинаем с чтения данных. Мы на данные уже посмотрели. Мы представляем как они выглядят. Если б мы этого не сделали, вы могли бы воспользоваться результатами, которые выдал бы нам вот какой код. Мы бы все данные сохранили бы в строку-переменную "csv_data", как мы делали до этого. Построчно прибавляли бы значения. Возможно, здесь нам тоже потребуется указать кодировку, чтобы все корректно сработало. Давайте попробуем без кодировки, там же числа, с числами проблем быть не должно. Давайте так попробуем запустить. И без "print" сразу посмотрим как выглядит переменная внутри. Да, здесь проблем с кодировкой не было, потому что у нас только числа. Видим, значения отделенные точкой с запятой, в нашем случае, и переноса строк. В таком виде, мы не сможем обработать таблицу. Это строка. Сможем, но это дополнительные усилия. Лучше в момент чтения уже начинать обработку, в момент чтения файла. Поэтому давайте чуть-чуть будем менять код. Сохранять будем не в строку, а в список. Назовем его список температур "t_list". Сохранять будем в пустой список температур. Открываем также. А для всех строчек в файле будем не прибавлять к строке нашу строку, а будем к списку добавлять через "append()" переменную "line". Посмотрим на список как он выглядит. Print(список). Смотрим. Так, мы получили список из строк, где каждая строка соответствует определенному дню, определенным суткам. Дневная температура и ночная температура за какую-то дату. У нас есть список строк — это уже лучше чем было, чем просто одна строка, но все еще мало. Давайте разобьем каждую строчку на список температур этого дня: дневную температуру и ночную. Разбивать будем, мы знаем о точки с запятой, потому что у нас значения разделены точкой с запятой. Назовем тот же код, немножко его преобразовываем. Назовем температуру список температур за данные сутки "day_list". Скажем, как его получить? Мы строчку каждую будем разбивать по точке с запятой. Уже такой список сможем добавить к температуре за текущий день, к "t_list". Мы будем добавлять список температур за текущие сутки. Смотрим, что получится. Так, еще потихоньку приближаемся. У нас сейчас есть список из двух строк. Точнее список списков, где маленький список состоит из двух строк с температурой. Каждый маленький список отвечает за определенные сутки, а все вместе — это список всех температур. Что нам нужно сделать? Нам нужно превратить строки в числа. Давайте это сделаем. Мы можем делать разными способами, рассмотрим один из них. На этапе, когда мы получили, разбили список дня за определенный день, и до того как мы этот список за этот день записали к общему списку дней, мы можем создать дополнительный список — вспомогательный "day_list_int", где все строки преобразованы в числа. Мы возьмем и сделаем "int(day_list)". Добавлять мы, конечно, тоже будем "day_list_int". Хорошо. Посмотрим, что из этого получится. Конечно, из этого ничего не получится, потому что мы же не можем применить функцию "int()" к списку из скольких-то дней. Тут нужно чуть похитрее сработать. Давайте сделаем так. Мы будем делать "int()" от чего? Сначала от первой температуры, которая на нулевом месте от температуры днем, а потом еще и от температуры ночью. Мы хотим это записать в один общий список, то есть мы присваиваем переменной "day_list_int" — переменной, в которой мы хотим, чтобы хранились списки, а именно списки чисел. Первый элемент списка — это "int" от дневной температуры, а вторая — это от ночной температуры. Ночная стоит на первой позиции. Если дневная на нулевой, то ночная на первой, потому что мы считаем с нуля. Итого, раньше мы сразу прибавляли "day_list", разбитый по точке с запятой, к общему списку температур. Теперь ввели промежуточную переменную, в которую записываем числа вместо строк, стоящие на каждой позиции в списке "day_list" на нулевой и на первой. Посмотрим. Да, вот теперь то, что нужно. Теперь мы видим список, который состоит из списков на температуру для каждого дня. Давайте, чтобы мы могли на это посмотреть в более похожим на табличку виде, сделаем вот таким вот образом. Нет, мы ж не закончили, мы ж только в серединке. Так, вот. Этот список похож на то что нам нужно, но, согласитесь, вот эта конструкция какая-то немножко искусственная. Здесь запутаться очень просто. Давайте, чтобы был у вас еще другой способ, повторим, как работает "map()". Смотрите, вот эти вот две строчки можно заменить на одну, используя функцию "map()". Мы будем применять, давайте так запишем, мы будем применять функцию "int()" к каждому элементу списка "day_list". Так у нас работает "map()". Из того, что вернет "map()" нам нужно сделать список. И теперь, в этот список мы можем добавить к списку "t_list". Скажем "t_list", только нужно, чтобы он начинался в нужном месте, "t_list.append()" то, что вернет нам "map()", преобразованная в список. Теперь строчка стала длиннее, но, возможно, это чуть более емкая запись. С другой стороны, если они работают одинаково, выбирайте какая вам больше нравится. Давайте запустим, убедимся, что это тоже работает. Да, и опять же сделаем, чтобы выводилось с новой строчки каждый раз. Давайте еще разок повторим, что мы сделали. Мы создали пустой список. В этом списке мы хотим хранить температуры по дням и по дневной и ночной температуре за день. Мы открыли наш файл, дали ему псевдоним "infile". Теперь для каждой строки в файле, то есть для каждого дня, для каждых суток, для каждой даты мы разбили по точке с запятой. Получили новый список, где есть дневная температура отдельно, ночная температура отдельно. Теперь каждую из этих температур мы превратили из строки в число и записали все в список температур "t_list". Давайте вызовем функцию. Точнее, функцию "print". Вызовем это все вместе и увидим, что теперь у нас данные готовы к дальнейшей обработке. Точнее, уже к дальнейшему анализу. Обработку мы сделали, осталось их проанализировать.