Книга «Изучаем Python»


Глава 16 • Загрузка данных ПРИМЕЧАНИЕ



Pdf көрінісі
бет203/266
Дата03.03.2023
өлшемі7,86 Mb.
#170986
түріКнига
1   ...   199   200   201   202   203   204   205   206   ...   266
Байланысты:
Изучаем Python. Программирование игр, визуализация данных, веб-приложения ( PDFDrive )

338
Глава 16 • Загрузка данных
ПРИМЕЧАНИЕ
Форматирование заголовков не всегда последовательно; иногда встречаются лишние пробелы
единицы измерения находятся в неожиданных местах . В необработанных файлах данных это быва-
ет достаточно часто, но не создает проблем .
Печать заголовков и их позиций
Чтобы читателю было проще понять структуру данных в файле, выведем каждый 
заголовок и его позицию в списке:
highs_lows.py
...
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)
 
for index, column_header in enumerate(header_row):
print(index, column_header)
Мы применяем к списку функцию 
enumerate()

для получения индекса каждого 
элемента и его значения. (Обратите внимание: строка 
print(header_row)
удалена 
ради этой более подробной версии.)
Результат с индексами всех заголовков выглядит так:
0 AKDT 
1 Max TemperatureF 
2 Mean TemperatureF 
3 Min TemperatureF
...
20 CloudCover 
21 Events 
22 WindDirDegrees 
Из этих данных видно, что даты и максимальные температуры за эти дни находятся 
в столбцах 0 и 1. Чтобы проанализировать температурные данные, мы обработа-
ем каждую запись данных в файле 
sitka_weather_07-2014 .csv
и извлечем элементы 
с индексами 0 и 1.
Извлечение и чтение данных
Итак, нужные столбцы данных известны; попробуем прочитать часть этих данных. 
Начнем с чтения максимальной температуры за каждый день:
highs_lows.py
import csv
# Чтение максимальных температур из файла.
filename = 'sitka_weather_07-2014.csv'
with open(filename) as f:
reader = csv.reader(f)
header_row = next(reader)


Формат CSV
339
 
highs = []
 
for row in reader:
 
highs.append(row[1])
print(highs)
Программа создает пустой список с именем 
highs

и перебирает остальные стро-
ки в файле 

. Объект 
reader
продолжает с того места, на котором он остановился 
в ходе чтения файла CSV, и автоматически возвращает каждую строку после 
текущей позиции. Так как заголовок уже прочитан, цикл продолжается со второй 
строки, в которой начинаются фактические данные. При каждом проходе цикла 
значение с индексом 1 (второй столбец) присоединяется к списку 
highs

.
В результате будет получен список 
highs
со следующим содержимым:
['64', '71', '64', '59', '69', '62', '61', '55', '57', '61', '57', '59', '57',
'61', '64', '61', '59', '63', '60', '57', '69', '63', '62', '59', '57', '57',
'61', '59', '61', '61', '66']
Мы извлекли максимальную температуру для каждого дня и аккуратно сохранили 
полученные данные в строковом формате в списке.
Затем преобразуем строки в числа при помощи функции 
int()
, чтобы данные 
можно было передать 
matplotlib
:
highs_lows.py
...
highs = []
for row in reader:
 
high = int(row[1])
highs.append(high)
print(highs)
Строки преобразуются в целые числа в точке 

перед добавлением температур 
в список. Результат представляет собой список максимальных температур в чис-
ловом формате:
[64, 71, 64, 59, 69, 62, 61, 55, 57, 61, 57, 59, 57, 61, 64, 61, 59, 63, 60, 57,
69, 63, 62, 59, 57, 57, 61, 59, 61, 61, 66] 
Следующим шагом станет построение визуализации этих данных.
Нанесение данных на диаграмму
Для наглядного представления температурных данных мы сначала создадим про-
стую диаграмму дневных максимумов температуры с использованием 
matplotlib
:
highs_lows.py
import csv
from matplotlib import pyplot as plt


340

Достарыңызбен бөлісу:
1   ...   199   200   201   202   203   204   205   206   ...   266




©engime.org 2024
әкімшілігінің қараңыз

    Басты бет