当前位置: 代码网 > it编程>前端脚本>Python > Pandas实现转换产生新列的项目实践

Pandas实现转换产生新列的项目实践

2024年12月28日 Python 我要评论
时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。此处选择巴黎、伦敦欧洲城市空气质量监测no2数据作为样例。列的转换:乘以常数拿到表格数据后,很多情况下是不能直接就用

时间序列数据在数据分析建模中很常见,例如天气预报,空气状态监测,股票交易等金融场景。此处选择巴黎、伦敦欧洲城市空气质量监测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 转换产生新列内容请搜索代码网以前的文章或继续浏览下面的相关文章希望大家以后多多支持代码网!

(0)

相关文章:

版权声明:本文内容由互联网用户贡献,该文观点仅代表作者本人。本站仅提供信息存储服务,不拥有所有权,不承担相关法律责任。 如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 2386932994@qq.com 举报,一经查实将立刻删除。

发表评论

验证码:
Copyright © 2017-2025  代码网 保留所有权利. 粤ICP备2024248653号
站长QQ:2386932994 | 联系邮箱:2386932994@qq.com