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


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



Pdf көрінісі
бет181/238
Дата07.01.2022
өлшемі7,86 Mb.
#18670
түріКнига
1   ...   177   178   179   180   181   182   183   184   ...   238
Байланысты:
2 5343781172763690906

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    Глава 16  •  Загрузка данных

# Чтение максимальных температур из файла.

...

# Нанесение данных на диаграмму.



fig = plt.figure(dpi=128, figsize=(10, 6))

plt.plot(highs, c='red')



# Форматирование диаграммы.

plt.title("Daily high temperatures, July 2014", fontsize=24)



plt.xlabel('', fontsize=16)

plt.ylabel("Temperature (F)", fontsize=16)

plt.tick_params(axis='both', which='major', labelsize=16)

plt.show()

Мы передаем при вызове 

plot()

 список 


highs

  и аргумент 

c='red'

 для отобра-

жения точек красным цветом. (Максимумы будут выводиться красным цветом, 

а минимумы синим.) Затем указываются другие аспекты форматирования (напри-

мер, размер шрифта и метки) , уже знакомые вам по главе 15. Так как даты еще 

не добавлены, метки для оси x не задаются, но вызов 

plt.xlabel()

 изменяет раз-

мер шрифта, чтобы метки по умолчанию лучше читались . На рис. 16.1 показана 

полученная диаграмма: это простой график температурных максимумов за июль 

2014 г. в Ситке (штат Аляска).



Достарыңызбен бөлісу:
1   ...   177   178   179   180   181   182   183   184   ...   238




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

    Басты бет