千家信息网

Pandas数据分析实用小技巧有哪些

发表于:2025-01-18 作者:千家信息网编辑
千家信息网最后更新 2025年01月18日,这篇文章给大家分享的是有关Pandas数据分析实用小技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。小技巧1:如何使用map对某些列做特征工程?先生成数据:d =
千家信息网最后更新 2025年01月18日Pandas数据分析实用小技巧有哪些

这篇文章给大家分享的是有关Pandas数据分析实用小技巧有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。

小技巧1:如何使用map对某些列做特征工程?

先生成数据:

d = {"gender":["male", "female", "male","female"],"color":["red", "green", "blue","green"],"age":[25, 30, 15, 32]}df = pd.DataFrame(d)df

gender列上,使用 map 方法,快速完成如下映射:

d = {"male": 0, "female": 1}df["gender2"] = df["gender"].map(d)

Pandas 数据分析 5 个实用小技巧

小技巧2:使用 replace 和正则清洗数据

Pandas 的强项在于数据分析,自然就少不了数据清洗。

一个快速清洗数据的小技巧,在某列上使用 replace 方法和正则,快速完成值的清洗。

源数据:

d = {"customer": ["A", "B", "C", "D"],"sales":[1100, "950.5RMB", "$400", " $1250.75"]}df = pd.DataFrame(d)df

打印结果:

customer sales0 A 11001 B 950.5RMB2 C $4003 D $1250.75

看到 sales 列的值,有整型,浮点型+RMB后变为字符串型,还有美元+整型,美元+浮点型。

我们的目标:清洗掉 RMB$符号,转化这一列为浮点型。

一行代码搞定:(点击代码区域,向右滑动,查看完整代码)

df["sales"] = df["sales"].replace("[$,RMB]","", regex = True) \.astype("float")

使用正则替换,将要替换的字符放到列表中 [$,RMB],替换为空字符,即""

最后使用 astype转为 float

打印结果:

customer sales0 A 1100.001 B 950.502 C 400.003 D 1250.75

如果不放心,再检查下值的类型:

df["sales"].apply(type)

打印结果:

0 1 2 3 

【python学习交流群】

小技巧3:使用 melt 如何对数据透视分析?

构造一个 DataFrame:

d = {\"district_code": [12345, 56789, 101112, 131415],"apple": [5.2, 2.4, 4.2, 3.6],"banana": [3.5, 1.9, 4.0, 2.3],"orange": [8.0, 7.5, 6.4, 3.9]}df = pd.DataFrame(d)df

打印结果:

district_code apple banana orange0123455.23.58.01567892.41.97.521011124.24.06.431314153.62.33.9

5.2 表示 12345 区域的 apple 价格,并且 apple, banana, orange,这三列都是一种水果,那么如何把这三列合并为一列?

使用 pd.melt

具体参数取值,根据此例去推敲:

df = df.melt(\id_vars = "district_code",var_name = "fruit_name",value_name = "price")df

打印结果:

district_code fruit_name price012345 apple 5.2156789 apple 2.42101112 apple 4.23131415 apple 3.6412345 banana 3.5556789 banana 1.96101112 banana 4.07131415 banana 2.3812345 orange 8.0956789 orange 7.510101112 orange 6.411131415 orange 3.9

以上就是长 DataFrame,对应的原 DataFrame 是宽 DF.

小技巧4:已知 year 和 dayofyear,怎么转 datetime?

原 DataFrame

d = {\"year": [2019, 2019, 2020],"day_of_year": [350, 365, 1]}df = pd.DataFrame(d)df

打印结果:

 year day_of_year0201935012019365220201

转 datetime 的 小技巧

步骤 1: 创建整数

df["int_number"] =df["year"]*1000 + df["day_of_year"]

打印 df 结果:

year day_of_year int_number0201935020193501201936520193652202012020001

步骤 2: to_datetime

df["date"]=pd.to_datetime(df["int_number"],format = "%Y%j")

注意 "%Y%j" 中转化格式 j

打印结果:

 year day_of_year int_number date0201935020193502019-12-161201936520193652019-12-3122020120200012020-01-01

小技巧5:如何将分类中出现次数较少的值归为 others?

这也是我们在数据清洗、特征构造中面临的一个任务。

如下一个 DataFrame:

d = {"name":['Jone','Alica','Emily','Robert','Tomas','Zhang','Liu','Wang','Jack','Wsx','Guo'],"categories": ["A", "C", "A", "D", "A","B", "B", "C", "A", "E", "F"]}df = pd.DataFrame(d)df

结果:

 name categories0 Jone A1 Alica C2 Emily A3 Robert D4 Tomas A5 Zhang B6 Liu B7 Wang C8 Jack A9 Wsx E10 Guo F

D、E、F 仅在分类中出现一次,A 出现次数较多。

步骤 1:统计频次,并归一

frequencies = df["categories"].value_counts(normalize = True)frequencies

结果:

A 0.363636B 0.181818C 0.181818F 0.090909E 0.090909D 0.090909Name: categories, dtype: float64

步骤 2:设定阈值,过滤出频次较少的值

threshold = 0.1small_categories = frequencies[frequencies < threshold].indexsmall_categories

结果:

Index(['F', 'E', 'D'], dtype='object')

步骤 3:替换值

df["categories"] = df["categories"] \.replace(small_categories, "Others")

替换后的 DataFrame:

 name categories0 Jone A1 Alica C2 Emily A3 Robert Others4 Tomas A5 Zhang B6 Liu B7 Wang C8 Jack A9 Wsx Others10 Guo Others

感谢各位的阅读!关于"Pandas数据分析实用小技巧有哪些"这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,让大家可以学到更多知识,如果觉得文章不错,可以把它分享出去让更多的人看到吧!

结果 数据 技巧 清洗 步骤 分析 实用 数据分析 代码 正则 浮点 内容 区域 字符 方法 更多 次数 特征 篇文章 频次 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 美国信息化与网络安全 软件开发工程师的核心价值 服务器处理异常 加快网络安全产业发展整体布局 华夏通信网络安全 云服务器自己电脑连接不上 联通 dns服务器地址 数据库应用基本函数 办公厅网络安全管理制度 软件开发过程中的分析阶段不包括 网络安全运营党建引领 华为hcia网络安全基础课 x79服务器主板支持固态硬盘吗 大学生网络安全宣传日活动方案 数据挖掘怎么处理数据库 如何寻找软件开发项目 网络安全人工智能发展前景 株洲软件开发暑假班 网络安全领域的职业有 信息网络安全部门电话 安徽党建软件开发 服务器记录上网时间 世界技能大赛网络安全山东省 本报讯开展网络安全宣传教育 电子商务系统网络安全 怎样开启服务器定位 数据库服务老崩溃怎么回事 深圳市多米网络技术有限公司 骑士2怎么选择服务器 把网络安全放到最后的企业
0