利用Python进行数据清洗与预处理:Pandas的高级用法【第147篇—Pandas的高级用法】

👽发现宝藏

前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。

利用Python进行数据清洗与预处理:Pandas的高级用法

在数据科学和机器学习领域,数据清洗和预处理是至关重要的步骤。Pandas库作为Python中最受欢迎的数据处理工具之一,提供了强大的功能来处理各种数据格式。本文将介绍Pandas的一些高级用法,帮助你更有效地进行数据清洗和预处理。

1. 数据清洗

数据清洗是指处理缺失值、异常值和重复值等问题,使数据集变得更加干净和可靠。下面是一些Pandas的高级技术,可以用来进行数据清洗:

处理缺失值

import pandas as pd# 创建示例数据
data = {'A': [1, 2, None, 4],'B': [5, None, 7, 8]}
df = pd.DataFrame(data)# 填充缺失值
df.fillna(method='ffill', inplace=True)  # 使用前向填充
print(df)

处理异常值

# 删除异常值
threshold = 3
df = df[(df < threshold).all(axis=1)]
print(df)

处理重复值

# 删除重复值
df.drop_duplicates(inplace=True)
print(df)

2. 数据预处理

数据预处理是为了使数据更适合模型训练,包括特征缩放、特征编码等。下面是一些Pandas的高级技术,可用于数据预处理:

特征缩放

from sklearn.preprocessing import StandardScalerscaler = StandardScaler()
scaled_features = scaler.fit_transform(df[['A', 'B']])
df[['A', 'B']] = scaled_features
print(df)

特征编码

# 使用get_dummies进行独热编码
df = pd.get_dummies(df, columns=['Categorical_Column'])
print(df)

时间序列处理

# 转换日期格式
df['Date'] = pd.to_datetime(df['Date'])
# 提取年份
df['Year'] = df['Date'].dt.year
print(df)

通过这些高级用法,你可以更轻松地进行数据清洗和预处理,为后续的数据分析和建模工作打下良好的基础。记得根据实际情况选择合适的方法,以保证数据质量和模型效果。

3. 多列操作与函数应用

Pandas提供了强大的方法来对多列进行操作,并能够轻松地应用自定义函数。下面是一些相关技术:

多列操作

# 添加新列
df['New_Column'] = df['A'] + df['B']# 对多列进行统计计算
df['Sum'] = df[['A', 'B']].sum(axis=1)
print(df)

函数应用

# 定义自定义函数
def custom_function(x):return x * 2# 应用函数到某一列
df['New_Column'] = df['A'].apply(custom_function)
print(df)

4. 数据合并与拼接

在处理多个数据集时,经常需要将它们合并或拼接起来。Pandas提供了便捷的方法来实现这一点:

数据合并

# 创建两个示例数据集
df1 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'A': ['A0', 'A1', 'A2', 'A3']})
df2 = pd.DataFrame({'key': ['K0', 'K1', 'K2', 'K3'],'B': ['B0', 'B1', 'B2', 'B3']})# 合并数据集
merged_df = pd.merge(df1, df2, on='key')
print(merged_df)

数据拼接

# 创建两个示例数据集
df1 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],'B': ['B0', 'B1', 'B2', 'B3']})
df2 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],'B': ['B4', 'B5', 'B6', 'B7']})# 拼接数据集
concatenated_df = pd.concat([df1, df2])
print(concatenated_df)

通过这些技术,你可以轻松地进行数据合并和拼接,实现更复杂的数据处理任务。

5. 数据分组与聚合

在数据分析中,常常需要对数据进行分组并进行聚合操作。Pandas提供了灵活的功能来实现这些操作:

数据分组

# 创建示例数据集
data = {'Category': ['A', 'B', 'A', 'B', 'A'],'Value': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)# 按照Category列进行分组
grouped = df.groupby('Category')# 对分组后的数据进行聚合操作
print(grouped.sum())  # 对每个分组求和
print(grouped.mean())  # 对每个分组求平均值

自定义聚合函数

# 定义自定义聚合函数
def custom_agg(x):return max(x) - min(x)# 应用自定义聚合函数
print(grouped['Value'].agg(custom_agg))  # 对每个分组应用自定义聚合函数

6. 数据透视表与交叉表

Pandas还提供了数据透视表和交叉表功能,可以方便地对数据进行汇总和分析:

数据透视表

# 创建示例数据集
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],'B': ['one', 'one', 'two', 'two', 'one', 'one'],'C': ['small', 'large', 'large', 'small', 'small', 'large'],'D': [1, 2, 2, 3, 3, 4]}
df = pd.DataFrame(data)# 创建数据透视表
pivot_table = pd.pivot_table(df, values='D', index=['A', 'B'], columns=['C'], aggfunc=np.sum)
print(pivot_table)

交叉表

# 创建示例数据集
data = {'A': ['foo', 'foo', 'foo', 'bar', 'bar', 'bar'],'B': ['one', 'one', 'two', 'two', 'one', 'one'],'C': ['small', 'large', 'large', 'small', 'small', 'large']}
df = pd.DataFrame(data)# 创建交叉表
cross_table = pd.crosstab(df['A'], df['B'])
print(cross_table)

通过这些功能,你可以轻松地对数据进行分组、聚合和分析,从而更深入地理解数据的特征和规律。

7. 缺失值处理的高级技巧

处理数据中的缺失值是数据清洗过程中的关键步骤之一。Pandas提供了一些高级技巧来处理缺失值:

插值填充

# 创建示例数据集
data = {'A': [1, 2, np.nan, 4],'B': [5, np.nan, 7, 8]}
df = pd.DataFrame(data)# 使用插值填充缺失值
df.interpolate(inplace=True)
print(df)

使用模型填充

from sklearn.impute import KNNImputer# 创建示例数据集
data = {'A': [1, 2, np.nan, 4],'B': [5, np.nan, 7, 8]}
df = pd.DataFrame(data)# 使用KNN模型填充缺失值
imputer = KNNImputer(n_neighbors=2)
df_filled = pd.DataFrame(imputer.fit_transform(df), columns=df.columns)
print(df_filled)

8. 文本数据处理

Pandas还提供了处理文本数据的功能,可以进行字符串操作、正则表达式匹配等:

字符串操作

# 创建示例数据集
data = {'Text': ['foo', 'bar', 'baz']}
df = pd.DataFrame(data)# 字符串方法操作
df['Text_Length'] = df['Text'].str.len()  # 计算字符串长度
df['Text_Upper'] = df['Text'].str.upper()  # 将字符串转换为大写
print(df)

正则表达式匹配

# 创建示例数据集
data = {'Text': ['foo123', 'bar456', 'baz789']}
df = pd.DataFrame(data)# 正则表达式匹配
df['Digits'] = df['Text'].str.extract('(\d+)', expand=False)  # 提取数字
print(df)

通过这些技巧,你可以更加灵活地处理文本数据,挖掘其中的信息。

9. 数据可视化

除了数据处理外,Pandas还提供了数据可视化的功能,可以帮助你更直观地理解数据:

绘制折线图

# 创建示例数据集
data = {'Date': pd.date_range(start='2022-01-01', periods=10),'Value': np.random.randn(10)}
df = pd.DataFrame(data)# 绘制折线图
df.plot(x='Date', y='Value', title='Time Series Data', xlabel='Date', ylabel='Value')
plt.show()

绘制柱状图

# 创建示例数据集
data = {'Category': ['A', 'B', 'C', 'D'],'Value': [10, 20, 30, 40]}
df = pd.DataFrame(data)# 绘制柱状图
df.plot(kind='bar', x='Category', y='Value', title='Bar Chart', xlabel='Category', ylabel='Value')
plt.show()

绘制箱线图

# 创建示例数据集
data = {'Group': ['A', 'A', 'B', 'B'],'Value': np.random.randn(100)}
df = pd.DataFrame(data)# 绘制箱线图
df.boxplot(by='Group', column='Value')
plt.title('Boxplot by Group')
plt.show()

通过数据可视化,你可以更加直观地观察数据的分布和趋势,为进一步的分析和决策提供依据。

10. 并行处理

对于大规模数据集,Pandas提供了并行处理的功能,可以加速数据处理过程:

# 创建示例数据集
data = {'A': np.random.randn(1000),'B': np.random.randn(1000),'C': np.random.randn(1000)}
df = pd.DataFrame(data)# 并行处理
result = df.apply(lambda x: x**2, axis=1, raw=True)
print(result)

通过设置raw=True参数,可以启用并行处理,提高数据处理的效率。

11. 时间序列处理

Pandas提供了丰富的功能来处理时间序列数据,包括日期索引、时间重采样等:

创建日期索引

# 创建示例时间序列数据
dates = pd.date_range(start='2022-01-01', periods=5, freq='D')
data = {'Values': [1, 2, 3, 4, 5]}
df = pd.DataFrame(data, index=dates)
print(df)

时间重采样

# 按周重采样
weekly_resampled = df.resample('W').mean()
print(weekly_resampled)

移动窗口统计

# 计算滚动平均值
rolling_mean = df['Values'].rolling(window=2).mean()
print(rolling_mean)

时间序列处理能够帮助你更好地分析和预测时间相关的数据,对于金融、气象等领域的数据分析尤为重要。

12. 数据读写

Pandas还提供了丰富的功能来读取和写入各种数据格式:

读取CSV文件

# 读取CSV文件
df = pd.read_csv('data.csv')
print(df)

写入CSV文件

# 写入CSV文件
df.to_csv('output.csv', index=False)

Pandas支持读写多种数据格式,包括CSV、Excel、SQL数据库等,使得数据的导入和导出变得更加便捷。

总结

总的来说,本文介绍了Pandas库的一系列高级用法,涵盖了数据清洗与预处理、多列操作与函数应用、数据合并与拼接、数据分组与聚合、数据透视表与交叉表、缺失值处理的高级技巧、文本数据处理、数据可视化、并行处理、时间序列处理以及数据读写等方面。通过这些高级技巧和功能,读者可以更加灵活地处理和分析各种类型的数据,从而为数据科学和机器学习项目提供更加可靠的数据基础和支持。无论是初学者还是有经验的数据科学家,都可以从本文中获得启发和帮助,进一步提高数据处理和分析的效率。因此,掌握Pandas库的高级用法对于数据领域的从业者来说是非常重要的,希望本文对读者有所启发,激发大家对数据处理和分析的兴趣,欢迎继续深入学习和实践!

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/761802.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

AI绘画自动生成器:让艺术创作触手可及

随着人工智能技术的飞速发展&#xff0c;越来越多的应用领域逐渐与AI技术融合。在艺术领域&#xff0c;AI绘画自动生成器成为了一款备受关注的产品。它利用深度学习算法&#xff0c;让用户通过输入关键词或描述性文本&#xff0c;就能在几秒钟内生成一幅独特的艺术作品。在这篇…

选择器加练习

一、常用的选择器 1.元素选择器 语法 : 标签名{} 作用 : 选中对应标签中的内容 例:p{} , div{} , span{} , ol{} , ul{} ...... 2.类选择器(class选择器) 语法 : .class属性值{} 作用 : 选中对应class属性值的元素 注意:class里面的属性值不能以数字开头,如果以符号开头,…

Java中最简单的添加日志链路的方式之一

Java项目中添加日志链路功能的设计与实现 文章目录 Java项目中添加日志链路功能的设计与实现前言一、日志链路的概念与作用二、添加日志链路的设计思路三、如何支持多线程下的日志打印也附加上日志链路id1. 示例1&#xff1a;实现Runnable接口&#xff0c;无返回值2. 示例2&…

适配器模式与桥接模式-灵活应对变化的两种设计策略大比拼

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 &#x1f680; 转载自&#xff1a;设计模式深度解析&#xff1a;适配器模式与桥接模式-灵活应对变…

Spark Rebalance hint的倾斜的处理(OptimizeSkewInRebalancePartitions)

背景 本文基于Spark 3.5.0 目前公司在做小文件合并的时候用到了 Spark Rebalance 这个算子&#xff0c;这个算子的主要作用是在AQE阶段的最后写文件的阶段进行小文件的合并&#xff0c;使得最后落盘的文件不会太大也不会太小&#xff0c;从而达到小文件合并的作用&#xff0c;…

sentinel熔断规则详解

1、慢调用降级熔断 1.1、参数详解 最大RT&#xff1a;调用接口的最大时间。 比例阈值&#xff1a;超过了最大RT调用时间的请求的比例。 熔断时长&#xff1a;触发熔断后&#xff0c;熔断的时间 最小请求数据&#xff1a;每秒最少的请求数量&#xff0c;只有大于等于这个数…

SQLiteC/C++接口详细介绍sqlite3_stmt类(九)

返回&#xff1a;SQLite—系列文章目录 上一篇&#xff1a;SQLiteC/C接口详细介绍sqlite3_stmt类&#xff08;六&#xff09; 下一篇&#xff1a; 无 33、sqlite3_column_table_name 函数 sqlite3_column_table_name 用于返回结果集中指定列所属的表的名称。如果查询中列使…

前端案例:产品模块

文章目录 产品模块效果结构布局分析父级盒子布局图片和段落评价和详情 产品模块效果 结构布局分析 1、大的父级盒子包含全部的内容 2、内容装入 图片&#xff08;img标签&#xff09;&#xff1b;分别三个子盒子装入两段评价以及商品信息。 父级盒子布局 div {width: 300px…

网络通信——IP地址、端口号、协议(TCP、UDP)

通信架构 网络通信三要素 IP地址 IPv4地址 IPv6地址 IP域名 IP常识 端口号 概念 协议 开放式网络互联标准&#xff1a;OSI、TCP/IP 传输层的2个通信协议——UDP、TCP TCP协议&#xff1a;三次握手建立建立可靠连接 进行三次握手的原因&#xff1a;为了确保客户端和服务端…

实时数仓之实时数仓架构(Doris)

目前比较流行的实时数仓架构有两类,其中一类是以Flink+Doris为核心的实时数仓架构方案;另一类是以湖仓一体架构为核心的实时数仓架构方案。本文针对Flink+Doris架构进行介绍,这套架构的特点是组件涉及相对较少,架构简单,实时性更高,且易于Lambda架构实现,Doris本身可以支…

R语言Meta分析核心技术:回归诊断与模型验证

R语言作为一种强大的统计分析和绘图语言&#xff0c;在科研领域发挥着日益重要的作用。其中&#xff0c;Meta分析作为一种整合多个独立研究结果的统计方法&#xff0c;在R语言中得到了广泛的应用。通过R语言进行Meta分析&#xff0c;研究者能够更为准确、全面地评估某一研究问题…

安卓studio连接手机之后,一两秒之后就自动断开了。问题解决。

太坑了&#xff0c;安卓studio链接手机之后。几秒之后就断开了。我以为是adb的问题&#xff0c;就重新安装了一下adb。并且在环境变量中配置了Path的路径。然而并没有什么用啊。 后来查看是wps的服务和ADB有冲突。直接把WPS卸载掉之后就没有出现链接手机闪现的的问题。

基于python+vue研究生志愿填报辅助系统flask-django-php-nodejs

二十一世纪我们的社会进入了信息时代&#xff0c;信息管理系统的建立&#xff0c;大大提高了人们信息化水平。传统的管理方式对时间、地点的限制太多&#xff0c;而在线管理系统刚好能满足这些需求&#xff0c;在线管理系统突破了传统管理方式的局限性。于是本文针对这一需求设…

阿里云国际该如何设置DDoS高防防护策略?

DDoS高防提供针对网络四层DDoS攻击的防护策略设置功能&#xff0c;例如虚假源和空连接检测、源限速、目的限速&#xff0c;适用于优化调整非网站业务的DDoS防护策略。在DDoS高防实例下添加端口转发规则&#xff0c;接入非网站业务后&#xff0c;您可以单独设置某个端口的DDoS防…

Hive SQL必刷练习题:留存率问题(*****)

留存率&#xff1a; 首次登录算作当天新增&#xff0c;第二天也登录了算作一日留存。可以理解为&#xff0c;在10月1号登陆了。在10月2号也登陆了&#xff0c;那这个人就可以算是在1号留存 今日留存率 &#xff08;今日登录且明天也登录的用户数&#xff09; / 今日登录的总…

蓝桥杯STM32 G431 hal库开发速成——输入捕获

蓝桥杯的输入捕获较为简单&#xff0c;基本不涉及溢出的问题。所以这里就不介绍溢出了。文末有源码。 一、Cubemx配置 二、代码编写 1.在捕获回调函数中 void HAL_TIM_IC_CaptureCallback(TIM_HandleTypeDef *htim) {if(htim->InstanceTIM3){switch(count){case 1:{jishu1…

如何让uni-app开发的H5页面顶部原生标题和小程序的顶部标题不一致?

如何让标题1和标题2不一样&#xff1f; 修改根目录下的App.vue&#xff08;核心代码如下&#xff09; <script>export default {onLaunch() {// 监听各种跳转----------------------------------------[navigateTo, redirectTo, reLaunch, switchTab, navigateBack, ].…

【JSON2WEB】10 基于 Amis 做个登录页面login.html

【JSON2WEB】01 WEB管理信息系统架构设计 【JSON2WEB】02 JSON2WEB初步UI设计 【JSON2WEB】03 go的模板包html/template的使用 【JSON2WEB】04 amis低代码前端框架介绍 【JSON2WEB】05 前端开发三件套 HTML CSS JavaScript 速成 【JSON2WEB】06 JSON2WEB前端框架搭建 【J…

《云计算:数字时代的引擎》

在数字化时代&#xff0c;云计算技术以其强大的计算能力和灵活的应用方式&#xff0c;成为推动各行各业发展的引擎。本文将围绕云计算的技术进展、技术原理、行业应用案例、面临的挑战与机遇以及未来趋势进行详细探讨。 云计算的技术进展 云计算的技术进展涵盖了多个方面&…

python(django)之产品后台管理功能实现

1、添加新项目 在命令行输入以下代码 python manage.py startapp prroduct 2、添加路径和代码结构 在新项目目录下admin.py中加入以代码 from .models import Product class ProductAdmin(admin.ModelAdmin):list_display [product_name, product_desc,producter,created_…