import pandas as pd
url = "https://raw.githubusercontent.com/dm-fedorov/pandas_basic/master/%D0%B1%D1%8B%D1%81%D1%82%D1%80%D0%BE%D0%B5%20%D0%B2%D0%B2%D0%B5%D0%B4%D0%B5%D0%BD%D0%B8%D0%B5%20%D0%B2%20pandas/data/air_quality_no2.csv"
air_quality = pd.read_csv(url,
index_col=0,
parse_dates=True)
air_quality.head()
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
.
air_quality["london_mg_per_cubic"] = air_quality["station_london"] * 1.882
air_quality.head()
station_antwerp | station_paris | station_london | london_mg_per_cubic | |
---|---|---|---|---|
datetime | ||||
2019-05-07 02:00:00 | NaN | NaN | 23.0 | 43.286 |
2019-05-07 03:00:00 | 50.5 | 25.0 | 19.0 | 35.758 |
2019-05-07 04:00:00 | 45.0 | 27.7 | 19.0 | 35.758 |
2019-05-07 05:00:00 | NaN | 50.4 | 16.0 | 30.112 |
2019-05-07 06:00:00 | NaN | 61.9 | NaN | NaN |
Чтобы создать новый столбец, используйте скобки []
с новым именем столбца в левой части присваивания.
Расчет значений осуществляется по элементам. Это означает, что все значения в данном столбце умножаются на 1.882
за один раз. Вам не нужно использовать цикл для итерации по каждой строке!
Я хочу проверить соотношение значений в Париже и Антверпене и сохранить результат в новом столбце:
air_quality["ratio_paris_antwerp"] = \
air_quality["station_paris"] / air_quality["station_antwerp"]
air_quality.head()
station_antwerp | station_paris | station_london | london_mg_per_cubic | ratio_paris_antwerp | |
---|---|---|---|---|---|
datetime | |||||
2019-05-07 02:00:00 | NaN | NaN | 23.0 | 43.286 | NaN |
2019-05-07 03:00:00 | 50.5 | 25.0 | 19.0 | 35.758 | 0.495050 |
2019-05-07 04:00:00 | 45.0 | 27.7 | 19.0 | 35.758 | 0.615556 |
2019-05-07 05:00:00 | NaN | 50.4 | 16.0 | 30.112 | NaN |
2019-05-07 06:00:00 | NaN | 61.9 | NaN | NaN | NaN |
Расчет снова поэлементный, поэтому /
применяется в каждой строки.
Также другие математические операторы (+
, -
, *
, /
) или логические операторы (<
, >
, =
, …) работают по элементам.
Я хочу переименовать столбцы данных в соответствующие идентификаторы станций, используемые сообществом openAQ.
air_quality_renamed = air_quality.rename(
columns={"station_antwerp": "BETR801",
"station_paris": "FR04014",
"station_london": "London Westminster"})
air_quality_renamed.head()
BETR801 | FR04014 | London Westminster | london_mg_per_cubic | ratio_paris_antwerp | |
---|---|---|---|---|---|
datetime | |||||
2019-05-07 02:00:00 | NaN | NaN | 23.0 | 43.286 | NaN |
2019-05-07 03:00:00 | 50.5 | 25.0 | 19.0 | 35.758 | 0.495050 |
2019-05-07 04:00:00 | 45.0 | 27.7 | 19.0 | 35.758 | 0.615556 |
2019-05-07 05:00:00 | NaN | 50.4 | 16.0 | 30.112 | NaN |
2019-05-07 06:00:00 | NaN | 61.9 | NaN | NaN | NaN |
Функция rename()
может быть использована как для меток строк и названий столбцов.
Отображение не должно ограничиваться только фиксированными именами, но может быть функцией отображения.
Например, преобразование имен столбцов в строчные буквы также можно выполнить с помощью функции:
air_quality_renamed = air_quality_renamed.rename(columns=str.lower)
air_quality_renamed.head()
betr801 | fr04014 | london westminster | london_mg_per_cubic | ratio_paris_antwerp | |
---|---|---|---|---|---|
datetime | |||||
2019-05-07 02:00:00 | NaN | NaN | 23.0 | 43.286 | NaN |
2019-05-07 03:00:00 | 50.5 | 25.0 | 19.0 | 35.758 | 0.495050 |
2019-05-07 04:00:00 | 45.0 | 27.7 | 19.0 | 35.758 | 0.615556 |
2019-05-07 05:00:00 | NaN | 50.4 | 16.0 | 30.112 | NaN |
2019-05-07 06:00:00 | NaN | 61.9 | NaN | NaN | NaN |
Подробная информация о переименовании меток столбцов или строк приведена в разделе руководства пользователя по переименованию меток.
Руководство пользователя содержит отдельный раздел о добавлении и удалении столбцов.
Подписка на онлайн-обучение