当前位置: 首页 > news >正文

深入理解Pandas:数据处理的核心技能与应用(四)

在数据分析和科学计算领域,Python中的Pandas库是开发者不可或缺的重要工具。本文将详细介绍如何利用Pandas进行数据修改、虚拟变量转换、数值分箱、数据分组、长宽格式转换、数据合并与拼接、缺失值处理以及数据查重等操作。这些内容涵盖了数据分析中几乎所有关键的处理步骤,掌握这些技能将使你在处理数据时得心应手。

一、修改变量值

在数据处理过程中,修改特定单元格的值是非常常见的需求。Pandas为我们提供了多种方法来定位和修改单元格值。

1.直接定位单元格并修改

我们可以使用Pandas提供的几种方法来定位特定的单元格地址并进行修改:

df.体重[1] = 78
df['体重'][1] = 68
df.loc[1, '体重'] = 78

除了直接定位,也可以通过条件筛选来修改特定值:

df.开设[df.开设.isin(['不清楚'])] = '可以'

2.使用replace()进行值替换

replace()方法提供了强大的功能,可以通过指定要替换的原值和新值来进行修改:

df.replace(to_replace, value, inplace=False)

示例用法:

df.开设.replace('可以', '不清楚', inplace=True)
df.性别.replace(['女', '男'], [0, 1], inplace=True)
df.性别.replace({0: '女', 1: '男'}, inplace=True)

3.正则表达式替换与条件替换

通过正则表达式匹配,可以灵活替换符合条件的值:

df.开设.replace(regex='不.+', value='可以', inplace=True)

使用iloc或loc进行指定位置替换:

df.支出.iloc[0:3] = 20
df.支出.loc[0:2] = 30

基于条件筛选:

df.体重[df.体重 > 70] = 70
df[df.体重 == 70].体重 = 80

通过query()进行筛选后再修改:

df.query('性别 == "女" and 体重 > 60').体重 = 50
df.loc[df.query('性别 == "女" and 体重 > 60').体重.index, '体重'] = 50

二、虚拟变量转换

在建模和机器学习中,分类变量通常需要转换为二进制的虚拟变量(Dummy Variables)。Pandas提供了简单易用的get_dummies()方法来实现这一转换。

1.虚拟变量转换的基本使用

例如,对于包含“性别”分类变量的数据集,可以将其转换为虚拟变量:

pd.get_dummies(df['性别'], prefix='性别')

get_dummies()方法的常见参数:

  • prefix: 哑变量名称前缀。
  • dummy_na: 是否为NaN值单独创建哑变量。
  • columns: 指定要转换的列,若不指定则转换所有符合条件的列。
  • drop_first: 是否返回N-1个哑变量,避免多重共线性。

实际应用示例:

pd.get_dummies(df, columns=['类型'], prefix='_')

三、数值变量分箱

分箱是将连续变量划分为离散区间的过程,这有助于进行统计分析和建模。Pandas中的cut()和qcut()方法可用于数值变量分箱。

1.基于固定区间的分箱

使用cut()方法,可以将数据按指定的区间进行分箱:

df['cut'] = pd.cut(df.身高, bins=[150, 160, 170, 180, 190], right=False)

2.基于均值范围的分箱

通过qcut()方法,可以按数据的分位数进行分箱:

df['cut1'] = pd.qcut(df.身高, q=5)

四、数据分组与汇总

数据分组是数据分析中非常重要的操作,Pandas中的groupby()方法可以根据一个或多个特征对数据进行分组。

1.基本分组操作

根据列进行分组:

dfg = df.groupby('开设')

查看分组结果和统计信息:

dfg.groups
dfg.describe()

2.多列分组与汇总

按多列分组并计算均值:

dfg2 = df.groupby(['性别', '开设']).mean()

通过agg()方法,可以对分组数据进行聚合操作:

dfg.agg(['mean', 'median'])

五、长宽格式转换

数据格式转换是数据分析中经常需要的操作,Pandas中的stack()和unstack()方法可以方便地在长宽格式之间转换。

1.使用stack()与unstack()转换数据

将列索引转换为行索引:

stacked_data = df.stack()

将行索引转换为列索引:

unstacked_data = df.unstack()

2.转置数据

使用transpose()或df.T进行转置:

df_transposed = df.T

六、数据合并与拼接

Pandas提供了merge()和concat()方法,用于将多个DataFrame进行合并和拼接。

1.merge()实现类似SQL的连接操作

通过共享键将两个DataFrame合并:

pd.merge(df1, df2, on='ID', how='inner')

支持的连接方式包括inner、left、right和outer。

2.concat()实现数据拼接

沿指定轴拼接数据:

pd.concat([df1, df2], axis=0)

七、缺失值处理

在数据处理中,缺失值的处理至关重要。Pandas提供了多种方法来检测、填充和删除缺失值。

1.检测缺失值

使用isnull()和notnull()方法:

df.isnull().any()

2.填充缺失值

使用fillna()方法可以填充缺失值:

df.fillna(0)
df.fillna(method='ffill')  #向前填充
df.interpolate() #插值方法

3.删除缺失值

使用dropna()方法可以删除包含缺失值的行或列:

df.dropna()

八、数据查重与去重

在数据处理中,去除重复数据非常重要。Pandas提供了duplicated()和drop_duplicates()方法来实现这一操作。

1.查找重复数据

使用duplicated()方法查找重复行:

df.duplicated()

2.删除重复数据

使用drop_duplicates()删除重复行:

df.drop_duplicates()

九、总结

Pandas库为数据处理提供了极其丰富的功能,从数据的修改、转换,到分组、格式转换,再到缺失值处理和查重,涵盖了数据分析中的各个方面。通过掌握这些操作,开发者可以更加高效地进行数据清洗和分析,为后续建模和数据可视化打下坚实基础。
往期回顾:
深入理解Python数据分析利器——Pandas库详解(一)
深入解析Python的Pandas库:数据分析的利器(二)
深入解析Pandas的Series与DataFrame索引和切片操作(三)


http://www.mrgr.cn/news/10929.html

相关文章:

  • 【红队技巧】.Net免杀 绕过主流杀软
  • SpringBoot文档之Logging的阅读笔记
  • Swift中的可选类型:揭开Optional的神秘面纱
  • 如何使用ssm实现品牌手机销售信息系统
  • 利用机器学习推动 vSOC 检测
  • 【ShuQiHere】从零开始实现逻辑回归:深入理解反向传播与梯度下降
  • Vue55 动画与过度
  • 【openwrt-21.02】openwrt-21.02 T750 按键GPIO自动进入刷机模式功能实现
  • 热点 | 爆款游戏的诞生与游戏出海的持续增长
  • Redis应用
  • 等保测评与企业风险管理:构建坚实的信息安全防线
  • threejs 创建CSS3DSprite精灵标签, 可以更新位置及内容(封装)
  • 编程之路:在Bug的迷宫中寻找出口
  • 【限时秒杀】基于SpringBoot+Vue的智慧旅游攻略系统+LW示例参考
  • 二分查找算法:朴素二分+左右边界二分力扣实战应用
  • 邻接表的具体实例
  • bat 文件, 简化git 操作
  • QT通过信号传递参数至槽函数(不通层级通信)
  • 如何使用ssm实现基于ssm的“游侠”旅游信息管理系统
  • MySql【数据查询语言DQL】