时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。此处选择巴黎、伦敦欧洲城市空气质量监测 N O 2 NO_2 NO2?数据作为样例。
拿到表格数据后,很多情况下是不能直接就用,还需要对数据进行加工处理。比如知道 N O 2 NO_2 NO2?监测值后,想知道比如伦敦的浓度是多少?假如单位是 m g / m 3 mg/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]
以上代码只是一个简单示例,示例代码中的表达式可以根据实际问题进行修改。
觉得有用 收藏 收藏 收藏
点个赞 点个赞 点个赞
End
GPT专栏文章:
GPT实战系列-ChatGLM3本地部署CUDA11+1080Ti+显卡24G实战方案
GPT实战系列-LangChain + ChatGLM3构建天气查询助手
GPT实战系列-大模型为我所用之借用ChatGLM3构建查询助手
GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(二)
GPT实战系列-P-Tuning本地化训练ChatGLM2等LLM模型,到底做了什么?(一)
GPT实战系列-ChatGLM2部署Ubuntu+Cuda11+显存24G实战方案