In [1]: import pandas as pd
- Данные о качестве воздуха
Для этого руководства, данные о качестве воздуха о \(NO_2\) используется, предоставлен OpenAQ и используя py-openaq пакет. The
К исходным даннымair_quality_no2.csvнабор данных предоставляет \(NO_2\) значения для измерительных станций FR04014, BETR801 и London Westminster соответственно в Париже, Антверпене и Лондоне.In [2]: air_quality = pd.read_csv("data/air_quality_no2.csv", index_col=0, parse_dates=True) In [3]: air_quality.head() Out[3]: station_antwerp station_paris station_london datetime 2019-05-07 02:00:00 NaN NaN 23.0 2019-05-07 03:00:00 50.5 25.0 19.0 2019-05-07 04:00:00 45.0 27.7 19.0 2019-05-07 05:00:00 NaN 50.4 16.0 2019-05-07 06:00:00 NaN 61.9 NaN
Как создавать новые столбцы на основе существующих столбцов#
Я хочу выразить \(NO_2\) концентрация станции в Лондоне в мг/м\(^3\).
(Если предположить температуру 25 градусов Цельсия и давление 1013 гПа, коэффициент преобразования составляет 1.882)
In [4]: air_quality["london_mg_per_cubic"] = air_quality["station_london"] * 1.882 In [5]: air_quality.head() Out[5]: station_antwerp ... london_mg_per_cubic datetime ... 2019-05-07 02:00:00 NaN ... 43.286 2019-05-07 03:00:00 50.5 ... 35.758 2019-05-07 04:00:00 45.0 ... 35.758 2019-05-07 05:00:00 NaN ... 30.112 2019-05-07 06:00:00 NaN ... NaN [5 rows x 4 columns]
Чтобы создать новый столбец, используйте
[]скобки с новым именем столбца в левой части присваивания.
Примечание
Вычисление значений выполняется поэлементно. Это означает, что все значения в заданном столбце умножаются на значение 1.882 одновременно. Вам не нужно использовать цикл для перебора каждой строки!
Я хочу проверить соотношение значений в Париже и Антверпене и сохранить результат в новом столбце.
In [6]: air_quality["ratio_paris_antwerp"] = ( ...: air_quality["station_paris"] / air_quality["station_antwerp"] ...: ) ...: In [7]: air_quality.head() Out[7]: station_antwerp ... ratio_paris_antwerp datetime ... 2019-05-07 02:00:00 NaN ... NaN 2019-05-07 03:00:00 50.5 ... 0.495050 2019-05-07 04:00:00 45.0 ... 0.615556 2019-05-07 05:00:00 NaN ... NaN 2019-05-07 06:00:00 NaN ... NaN [5 rows x 5 columns]
Вычисление снова поэлементное, поэтому
/применяется для значений в каждой строке.
Также другие математические операторы (+, -, *, /,…) или
логические операторы (<, >, ==,…) работают поэлементно. Последнее уже
использовалось в учебник по выборке данных для фильтрации
строк таблицы с использованием условного выражения.
Если вам нужна более сложная логика, вы можете использовать произвольный код Python через apply().
Я хочу переименовать столбцы данных в соответствующие идентификаторы станций, используемые OpenAQ.
In [8]: air_quality_renamed = air_quality.rename( ...: columns={ ...: "station_antwerp": "BETR801", ...: "station_paris": "FR04014", ...: "station_london": "London Westminster", ...: } ...: ) ...:
In [9]: air_quality_renamed.head() Out[9]: BETR801 FR04014 ... london_mg_per_cubic ratio_paris_antwerp datetime ... 2019-05-07 02:00:00 NaN NaN ... 43.286 NaN 2019-05-07 03:00:00 50.5 25.0 ... 35.758 0.495050 2019-05-07 04:00:00 45.0 27.7 ... 35.758 0.615556 2019-05-07 05:00:00 NaN 50.4 ... 30.112 NaN 2019-05-07 06:00:00 NaN 61.9 ... NaN NaN [5 rows x 5 columns]
The
rename()функция может использоваться как для меток строк, так и для меток столбцов. Предоставьте словарь с ключами - текущими именами и значениями - новыми именами для обновления соответствующих имен.
Сопоставление не должно ограничиваться только фиксированными именами, но также может быть функцией сопоставления. Например, преобразование имён столбцов в строчные буквы можно выполнить с помощью функции:
In [10]: air_quality_renamed = air_quality_renamed.rename(columns=str.lower)
In [11]: air_quality_renamed.head()
Out[11]:
betr801 fr04014 ... london_mg_per_cubic ratio_paris_antwerp
datetime ...
2019-05-07 02:00:00 NaN NaN ... 43.286 NaN
2019-05-07 03:00:00 50.5 25.0 ... 35.758 0.495050
2019-05-07 04:00:00 45.0 27.7 ... 35.758 0.615556
2019-05-07 05:00:00 NaN 50.4 ... 30.112 NaN
2019-05-07 06:00:00 NaN 61.9 ... NaN NaN
[5 rows x 5 columns]
Подробная информация о переименовании меток столбцов или строк представлена в разделе руководства пользователя переименование меток.
ПОМНИТЕ
Создайте новый столбец, присвоив вывод DataFrame с новым именем столбца между
[].Операции выполняются поэлементно, нет необходимости перебирать строки в цикле.
Используйте
renameс помощью словаря или функции для переименования меток строк или имен столбцов.
Руководство пользователя содержит отдельный раздел о добавление и удаление столбцов.