Pandas实现转换产生新列的项目实践
作者:Alex_StarSky
本文主要介绍了Pandas实现转换产生新列,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。此处选择巴黎、伦敦欧洲城市空气质量监测NO2数据作为样例。
列的转换:乘以常数
拿到表格数据后,很多情况下是不能直接就用,还需要对数据进行加工处理。比如知道NO2监测值后,想知道比如伦敦的浓度是多少?假如单位是m g / m 3 mg/m3。这里假设温度25摄氏度,大气压1013hPa,根据化学公式可以知道,转换因子为 1.882。也就是该列每个元素都乘以因子。
In [1]: air_quality["london_mg_per_cubic"] = air_quality["station_london"] * 1.882 In [2]: air_quality.head() Out[2]: 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]
这里,创建新的列,可以用’ [] ', 括号内使用新的列属性名称,作为赋值的左边,右边为转换操作。
比如这里的乘法计算,常数是乘以操作列的每一个元素。
两列的计算
比如需要求Paris 和 Antwerp的监测值的比率,结果保存到新列中。
In [3]: air_quality["ratio_paris_antwerp"] = ( ...: air_quality["station_paris"] / air_quality["station_antwerp"] ...: ) ...: In [4]: air_quality.head() Out[4]: 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]
事实上,计算仍然是以元素为单位的,除法符号应用到每个元素的值。同样,也可以进行加减乘除等运算操作 (+
, -
, *
, /
,…) 和逻辑运算操作 (<
, >
, ==
,…) 。逻辑运算,其实在数据表的条件筛选,生成数据子集的操作中大量使用。
更复杂的操作,可以使用apply()函数。
还有很常见的情形,原来的列命名不喜欢,想换个更合适的名字,就可以用rename()函数。
这里就把“station_antwerp” 转换为“BETR801”
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]
不仅仅是指定名称,也可以进行map函数操作。例如,把列名都更换为小写字母。
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]
以上代码只是一个简单示例,示例代码中的表达式可以根据实际问题进行修改。
到此这篇关于Pandas实现转换产生新列的项目实践的文章就介绍到这了,更多相关Pandas 转换产生新列内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!