Open in Colab

Для этого урока используется данные о качестве воздуха $NO_2$, данные предоставляются организацией openaq и загружается с помощью модуля py-openaq.

Набор данных air_quality_no2_long.csv содержит значения $NO_2$ для измерительных станций FR04014, BETR801 и London Westminster соответственно в Париже, Антверпене и Лондоне.

Для этого урока также используются данные о качестве воздуха для твердых частиц размером менее 2,5 микрометров, данные предоставляются организацией openaq и загружается с помощью модуля py-openaq.

см. Частицы РМ2.5: что это, откуда и почему об этом все говорят

Набор данных air_quality_pm25_long.csv содержит значения $PM_{2.5}$ для измерительных станций FR04014, BETR801 и London Westminster соответственно в Париже, Антверпене и Лондоне.

Как объединить данные из нескольких таблиц?

Я хочу объединить измерения $NO_2$ и $PM_{2.5}$ с похожей структурой в одну таблицу:

Функция concat() выполняет операцию конкатенации нескольких таблиц вдоль одной оси (по строкам или столбцам).

По умолчанию конкатенация происходит вдоль оси 0, поэтому результирующая таблица объединяет строки входных таблиц. Давайте проверим форму исходных и составных таблиц, чтобы проверить операцию:

Следовательно, результирующая таблица имеет 3178 = 1110 + 2068 строк.

Аргумент axis встречается в ряде методов, которые могут применяться вдоль оси. DataFrame имеет две соответствующие оси: первая, проходящая вертикально вниз по строкам (ось 0), и вторая, проходящая горизонтально по столбцам (ось 1). Большинство операций, таких как конкатенация или сводная статистика, по умолчанию выполняются по строкам (ось 0), но также могут применяться к столбцам.

Сортировка таблицы по дате и времени иллюстрирует также комбинацию обеих таблиц, причем столбец parameter определяет источник таблицы (либо no2 из таблицы air_quality_no2, либо pm25 из таблицы air_quality_pm25):

В этом примере столбец parameter, позволяет идентифицировать каждую из исходных таблиц. Это не всегда так, функция concat предоставляет удобное решение с аргументом keys, добавляя дополнительный (иерархический) индекс строки. Например:

Существование нескольких индексов строк/столбцов одновременно не упоминалось ранее. Иерархическая индексация или MultiIndex - это продвинутая и мощная функция pandas для анализа многомерных данных.

На данный момент помните, что функцию reset_index можно использовать для преобразования любого уровня индекса в столбец, например,

air_quality.reset_index(level=0)

Не стесняйтесь погрузиться в мир мультииндексирования в разделе руководства пользователя по расширенной индексации.

Дополнительные параметры конкатенации таблиц (с точки зрения строк и столбцов) и того, как concat можно использовать для определения логики (объединения или пересечения) индексов на других осях, представлены в разделе о конкатенации объектов.

Объединяйте таблицы, используя общий идентификатор

Координаты станции измерения качества воздуха хранятся в файле данных air_quality_stations.csv.

Станции, используемые в этом примере (FR04014, BETR801 и London Westminster) - это всего лишь три записи в таблице метаданных. Мы хотим добавить координаты этих станций в таблицу измерений, каждая из которых находится в соответствующих строках таблицы air_quality.

Добавим координаты станции, предоставленные в таблице метаданных станций, в соответствующие строки таблицы измерений:

Используя функцию merge(), для каждой строки таблицы air_quality добавляются соответствующие координаты из таблицы air_quality_stations_coord. Обе таблицы имеют общий столбец location, который используется в качестве ключа для объединения информации. Выбрав объединение left, в результирующей таблице air_quality окажутся только местоположения, доступные в (левой) таблице, например FR04014, BETR801 и London Westminster. В функции merge поддерживает несколько опции, подобных операциям из базы данных.

Добавим описание и имя параметра, предоставленные таблицей метаданных, в таблицу измерений:

Метаданные параметров о качестве воздуха хранятся в файле air_quality_parameters.csv.

По сравнению с предыдущим примером нет общего имени столбца. Однако столбец parameter в таблице air_quality и столбец id в air_quality_parameters содержат переменную в общем формате. Аргументы left_on и right_on используются, чтобы сделать связь между двумя таблицами.

pandas поддерживают внутренние, внешние и правые соединения. Более подробная информация о join/merge таблиц представлена в разделе руководства пользователя по объединению таблиц в стиле базы данных. Или взгляните на страницу сравнения с SQL.

См. Руководство пользователя для полного описания различных средств для объединения таблиц данных.