In [1]: import pandas as pd
- Air quality data
在本教程中,空气质量数据关于 \(NO_2\) 由以下人员使用、提供 OpenAQ 并使用 py-openaq 包裹。这个
To raw dataair_quality_no2.csv
数据集提供 \(NO_2\) 测量站的值 FR04014 , BETR801 和 伦敦威斯敏斯特 分别在巴黎、安特卫普和伦敦。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 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
若要创建新列,请使用
[]
在赋值的左侧用新列名括起来。
备注
完成了这些值的计算 element-wise 。这意味着给定列中的所有值一次都乘以值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 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
计算也是以元素为单位的,因此
/
已应用 对于每行中的值 。
还有其他数学运算符 (+
, -
, *
, /
,…) or logical operators (`` <, ``>
, ==
,…)工作元素方面。后者已经被用于 subset data tutorial 若要使用条件表达式筛选表中的行,请执行以下操作。
如果需要更高级的逻辑,可以通过以下方式使用任意的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 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()
函数可用于行标签和列标签。提供一个字典,其中包含键、当前名称和新名称的值,以更新相应的名称。
映射不应仅限于固定名称,还可以是映射函数。例如,也可以使用函数将列名转换为小写字母:
In [10]: air_quality_renamed = air_quality_renamed.rename(columns=str.lower)
In [11]: air_quality_renamed.head()
Out[11]:
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
上的用户指南部分提供了有关列或行标签重命名的详细信息 renaming labels 。
REMEMBER
通过将输出分配给DataFrame,并在
[]
。操作是元素级的,不需要对行进行循环。
使用
rename
具有用于重命名行标签或列名的词典或函数。
该用户指南包含关于以下内容的单独部分 column addition and deletion 。