一行Python代码实现数据清洗的18种方法
目录
1. 去除字符串两边空格
2. 转换数据类型
3. 大小写转换
4. 移除列表中的重复元素
5. 快速统计元素出现次数
6. 字符串分割成列表
7. 列表合并
8. 数据填充
9. 提取日期时间
10. 字符串替换
11. 快速排序
12. 提取数字
13. 空值处理(假设是列表)
14. 字典键值对互换
15. 平均值计算
16. 字符串分组
17. 数据标准化
18. 数据过滤(基于条件)
进阶实践与技巧
1. 复杂字符串处理:正则表达式
2. Pandas库的魔法
3. 错误处理和日志记录
4. 批量操作与函数封装
实战建议:
数据清洗可能是你们遇到的第一个大挑战,但别担心,Python的魔力在于能用简洁的代码解决复杂问题。今天,我们就来学习如何用一行代码完成数据清洗的十八个小绝招。准备好,让我们一起化繁为简,成为数据清洗的高手!在数据科学和数据分析中,数据清洗是关键的一步,它确保了数据的质量和准确性。虽然一行代码实现18种数据清洗方法可能过于简化,但我们可以展示如何使用Pandas库在Python中通过一行代码来实现一些常见的数据清洗任务。以下示例将使用Pandas库,这是一个广泛使用于数据分析的Python库。
1. 去除字符串两边空格
data = " Hello World! "
cleaned_data = data.strip() # 神奇的一行,左右空格拜拜
-
解读:
strip()
方法去掉字符串首尾的空白字符,简单高效。
2. 转换数据类型
num_str = "123"
num_int = int(num_str) # 字符串转整数,就是这么直接
-
注意:转换时要确保数据格式正确,否则会报错。
3. 大小写转换
text = "Python is Awesome"
lower_text = text.lower() # 全部变小写,便于统一处理
upper_text = text.upper() # 或者全部大写,随你心情
4. 移除列表中的重复元素
my_list = [1, 2, 2, 3, 4, 4]
unique_list = list(set(my_list)) # 集合特性,去重无压力
-
小贴士:这招虽好,但改变了原列表顺序哦。
5. 快速统计元素出现次数
from collections import Counter
data = ['apple', 'banana', 'apple', 'orange']
counts = dict(Counter(data)) # 想要知道谁最受欢迎?
-
解读:
Counter
是统计神器,轻松获取频率。
6. 字符串分割成列表
sentence = "Hello world"
words = sentence.split(" ") # 分割符默认为空格,一句话变单词列表
7. 列表合并
list1 = [1, 2, 3]
list2 = [4, 5, 6]
merged_list = list1 + list2 # 合并列表,就这么简单
8. 数据填充
my_list = [1, 2]
filled_list = my_list * 3 # 重复三次,快速填充列表
9. 提取日期时间
from datetime import datetime
date_str = "2023-04-01"
date_obj = datetime.strptime(date_str, "%Y-%m-%d") # 日期字符串变对象
-
关键点:
%Y-%m-%d
是日期格式,按需调整。
10. 字符串替换
old_string = "Python is fun."
new_string = old_string.replace("fun", "awesome") # 改头换面,一言既出
11. 快速排序
numbers = [5, 2, 9, 1, 5]
sorted_numbers = sorted(numbers) # 自然排序,升序默认
-
进阶:
reverse=True
可降序排列。
12. 提取数字
mixed_str = "The year is 2023"
nums = ''.join(filter(str.isdigit, mixed_str)) # 只留下数字,其余走开
-
解密:
filter
函数配合isdigit
,只保留数字字符。
13. 空值处理(假设是列表)
data_list = [None, 1, 2, None, 3]
filtered_list = [x for x in data_list if x is not None] # 拒绝空值,干净利落
-
语法糖:列表推导式,简洁优雅。
14. 字典键值对互换
my_dict = {"key1": "value1", "key2": "value2"}
swapped_dict = {v: k for k, v in my_dict.items()} # 翻转乾坤,键变值,值变键
15. 平均值计算
numbers = [10, 20, 30, 40]
average = sum(numbers) / len(numbers) # 平均数,一步到位
16. 字符串分组
s = "abcdef"
grouped = [s[i:i+2] for i in range(0, len(s), 2)] # 每两个一组,分割有道
-
应用:适用于任何需要分组的场景。
17. 数据标准化
import numpy as np
data = np.array([1, 2, 3])
normalized_data = (data - data.mean()) / data.std() # 数学之美,标准分布
-
背景:数据分析必备,让数据符合标准正态分布。
18. 数据过滤(基于条件)
data = [1, 2, 3, 4, 5]
even_numbers = [x for x in data if x % 2 == 0] # 只留偶数,排除异己
-
技巧:列表推导结合条件判断,高效筛选。
进阶实践与技巧
既然你已经掌握了基础的十八种方法,接下来让我们深入一些,探讨如何将这些技巧结合起来,解决更复杂的数据清洗问题,并分享一些实战中的小技巧。
1. 复杂字符串处理:正则表达式
正则表达式是数据清洗中不可或缺的工具,虽然严格来说可能超过一行,但它能高效地处理模式匹配和替换。
import re
text = "Email: example@email.com Phone: 123-456-7890"
emails = re.findall(r'\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Z|a-z]{2,}\b', text)
phones = re.findall(r'\b\d{3}-\d{3}-\d{4}\b', text)
这段代码分别提取了文本中的电子邮件和电话号码,展示了正则表达式的强大。
2. Pandas库的魔法
对于数据分析和清洗,Pandas是不二之选。虽然Pandas的命令通常不止一行,但其高效性和简洁性值得学习。
import pandas as pd
df = pd.read_csv('data.csv')
# 删除含有缺失值的行
df_clean = df.dropna()
# 替换特定值
df['column_name'] = df['column_name'].replace('old_value', 'new_value')
-
注意:Pandas虽然强大,但对于初学者可能需要更多时间来熟悉。
3. 错误处理和日志记录
在处理大量数据时,错误几乎是不可避免的。学会用try-except结构捕获异常,并使用logging记录日志,可以大大提升调试效率。
import logging
logging.basicConfig(level=logging.INFO)
try:result = some_function_that_might_fail()logging.info(f"成功执行!结果:{result}")
except Exception as e:logging.error(f"执行失败:{e}")
这样,即使出现问题,也能迅速定位。
4. 批量操作与函数封装
将常用的数据清洗步骤封装成函数,可以大大提高代码的复用性和可读性。
def clean_phone(phone):"""移除电话号码中的非数字字符"""return ''.join(c for c in phone if c.isdigit())phone_numbers = ['123-456-7890', '(555) 555-5555']
cleaned_numbers = [clean_phone(phone) for phone in phone_numbers]
通过定义clean_phone
函数,我们可以轻松地清理一批电话号码。
实战建议:
-
分步进行:不要试图一次性完成所有清洗任务,分步骤处理,逐步优化。
-
测试数据:在实际数据上测试你的清洗逻辑前,先用小样本或模拟数据验证代码的正确性。
-
文档和注释:即使是简单的数据清洗脚本,良好的注释也能为未来的自己或其他开发者提供巨大帮助。
相关文章:
一行Python代码实现数据清洗的18种方法
目录 1. 去除字符串两边空格 2. 转换数据类型 3. 大小写转换 4. 移除列表中的重复元素 5. 快速统计元素出现次数 6. 字符串分割成列表 7. 列表合并 8. 数据填充 9. 提取日期时间 10. 字符串替换 11. 快速排序 12. 提取数字 13. 空值处理(假设是列表&am…...
Java API练习 (1) (2024.7.20)
Date类 package APIExercise20240720; import java.util.Date; // 导包,Date是util下的 public class Date20240720 {public static void main(String[] args) {Date nowTime new Date(); // 得到当前系统时间System.out.println(nowTime);Date startTime new Da…...
JavaScript之WebAPIs-BOM
目录 BOM操作浏览器一、Window对象1.1 BOM(浏览器对象模型)1.2 定时器-延时函数1.3 js执行机制1.4 location对象1.5 navigator对象1.6 history对象 二、本地存储三、补充数组中的map方法数组中的join方法数组中的forEach方法(重点)数组中的filter方法(重…...
Math Reference Notes: 数学思想和方法
文章目录 1. 数学思想1.1 数形结合思想1.2 转化思想1.3 分类讨论思想1.4 整体思想 2. 数学方法2.1 配方法2.2 因式分解法2.3 待定系数法2.4 换元法2.5 构造法2.6 等积法2.7 反证法2.8 判别式法 1. 数学思想 1.1 数形结合思想 定义:将数与形(代数与几何…...
Spring Cloud GateWay(4.1.4)
介绍 该项目提供了一个建立在 Spring 生态系统之上的 API 网关,包括:Spring 6、Spring Boot 3 和 Project Reactor。Spring Cloud Gateway 旨在提供一种简单而有效的方法来路由到 API,并为其提供跨领域关注点,例如:安…...
基于PHP+MYSQL开发制作的趣味测试网站源码
基于PHPMYSQL开发制作的趣味测试网站源码。可在后台提前设置好缘分, 自己手动在数据库里修改数据,数据库里有就会优先查询数据库的信息, 没设置的话第一次查询缘分都是非常好的 95-99,第二次查就比较差 , 所以如果要…...
【微信小程序】wx.navigateTo传参时不能使用const定义的数据类型
2024年7月21日更新 今日调试时发现似乎是因为使用vant-weapp时按照官方提示关闭了style:"v2"导致的此情况,打开之后无法复现该内容,特此提示。 以下是原内容 如题,笔者测试了好久才找到这个bug,想传递的数据是this.d…...
【Android studio环境搭建】Android studio连接夜神模拟器
Android studio连接夜神模拟器 一、 步骤 1.下载好Android Studio和夜神模拟器, 2.打开夜神模拟器,找到其安装目录下的 nox_adb.exe文件 3.右键进入cmd命令打开,管理员权限执行下面命令 PS D:\Program Files\Nox\bin> .\nox_adb.exe connect 127.…...
Qt:26.Qt项目:贪吃蛇游戏
一、项目功能演示: 开始界面可以点击进入游戏。 点击进入游戏之后,切换到选项界面,该界面可以选择游戏难度,回退,以及查询最近一次游戏得分。 游戏具体界面如下。贴图啥的可以自己换,本人审美不咋行&#x…...
通过HTML/CSS 实现各类进度条的功能。
需求:我们在开发中会遇到使用各式各样的进度条,因为当前插件里面进度条各式各样的,为了方便我们定制化的开发和方便修改样式,我们这里使用HTML和CSS样式来进行开发进度条功能。 通过本文学习我们会明白如何使用 HTML/CSS 创建各种…...
Opencv学习项目3——人脸识别
之前我们获取了一张图像的人脸信息,现在我们来使用特征点分析来匹配两张lyf照片的相似度 获取两张图片的人脸信息 import cv2 import face_recognition# 加载图像文件 img1 face_recognition.load_image_file(lyf1.png) img2 face_recognition.load_image_file(l…...
【js自学打卡11】生成器函数(generator函数)的使用总结+代码举例
力扣的js入门免费题刷完了,开始自己找题练练,顺便捡捡知识点 力扣2649 1.思路 一眼递归,但事实证明也可以直接flat手撕。 arr.flat(Infinity) //直接扁平化到最底层涉及到了一些关于生成器和异步编程相关的知识点,学一下。 2.…...
深入了解jdbc-02-CRUD
文章目录 操作和访问数据库Statement操作数据表的弊端sql注入问题PreparedStatement类ResultSet类与ResultSetMetaData类资源的释放批量插入 操作和访问数据库 数据库的调用的不同方式: Statement:用于执行静态 SQL 语句并返回它所生成结果的对象。PreparedStatem…...
《基于 Kafka + Quartz 实现时限质控方案》
📢 大家好,我是 【战神刘玉栋】,有10多年的研发经验,致力于前后端技术栈的知识沉淀和传播。 💗 🌻 CSDN入驻不久,希望大家多多支持,后续会继续提升文章质量,绝不滥竽充数…...
浏览器的卡顿与react的解决思路
以下内容是阅读过程中结合自己的思考而诞生的产物,不一定准确,但相反的,可能个人对实际情况有很大的误解。 仅做参考,欢迎指正。 前面提到浏览器显示的其实是渲染流程最后渲染出来的一张图片,而一个行为引起的副作用需…...
XXE:XML外部实体引入
XXE漏洞 如果服务器没有对客户端的xml数据进行限制,且版本较低的情况下,就可能会产生xxe漏洞 漏洞利用流程 1.客户端发送xml文件,其中dtd存在恶意的外部实体引用 2.服务器进行解析 3.服务器返回实体引用内容 危害:任意文件读…...
3D培训大师创新培训体验,加速空调关键组件的高效精准安装
如今,空调系统的复杂性和精密性与日俱增,对专业技术人员的要求也日益提高。尤其是决定空调是否能平稳运行的空调关键组件的装配培训,不再局限于传统的理论讲解和实体模型演示,而是更注重数字化、沉浸式学习。 案例背景 某空调公…...
PyTorch 深度学习实践-循环神经网络(高级篇)
视频指路 参考博客笔记 参考笔记二 文章目录 上课笔记总代码练习 上课笔记 个人能力有限,重看几遍吧,第一遍基本看不懂 名字的每个字母都是一个特征x1,x2,x3…,一个名字是一个序列 rnn用GRU 用ASCII表作为词典,长度为128&#x…...
这才是老板喜欢的电子信息类简历
点击可直接使用...
MySQL学习之事务,锁机制
事务 什么是事务? 事务就是逻辑上的一组操作,要么全做,要么全不做 事务经典例子:转账,转账需要两个操作,从一个人账户上减钱,在另一个账户上加钱,比如说小红给小明转账100元&…...
开源知识付费小程序源码 内容付费系统php源码 含完整图文部署教程
在当今数字化时代,知识付费作为一种新型的经济模式,正逐渐受到越来越多内容创作者、专家及商家的青睐。开源知识付费小程序源码和内容付费系统PHP源码作为实现这一模式的重要工具,为构建高效、安全、可扩展的知识付费平台提供了强大的技术支持…...
时序数据库如何选型?详细指标总结!
工业物联网场景,如何判断什么才是好的时序数据库? 工业物联网将机器设备、控制系统与信息系统、业务过程连接起来,利用海量数据进行分析决策,是智能制造的基础设施,并影响整个工业价值链。工业物联网机器设备感知形成了…...
【前端】JavaScript入门及实战51-55
文章目录 51 函数52 函数的参数53 返回值54 练习55 return 51 函数 <!DOCTYPE html> <html> <head> <title></title> <meta charset "utf-8"> <script type"text/javascript">/* 函数:1. 函数也是…...
【引领未来智造新纪元:量化机器人的革命性应用】
在日新月异的科技浪潮中,量化机器人正以其超凡的智慧与精准的操作,悄然改变着各行各业的生产面貌,成为推动产业升级、提升竞争力的关键力量。今天,让我们一同探索量化机器人在不同领域的广泛应用价值,见证它如何以科技…...
山东航空小程序查询
山东航空小程序 1) 请求地址 https://scxcx.sda.cn/mohe/proxy?url/trp/ticket/search 2) 调用方式:HTTP post 3) 接口描述: 接口描述详情 4) 请求参数: {"dep": "TAO","arr": "HRB","flightDate&qu…...
MySQL添加索引时会锁表吗?
目录 简介Online DDL概念Online DDL用法总结 简介 在MySQL5.5以及之前的版本,通常更改数据表结构操作(DDL)会阻塞对表数据的增删改操作(DML)。 MySQL5.6提供Online DDL之后可支持DDL与DML操作同时执行,降低…...
算法日记day 16(二叉树的广度优先遍历|反转、对称二叉树)
一、二叉树的层序遍历 题目: 给你二叉树的根节点 root ,返回其节点值的 层序遍历 。 (即逐层地,从左到右访问所有节点)。 示例 1: 输入:root [3,9,20,null,null,15,7] 输出:[[3]…...
PolarisMesh源码系列--Polaris-Go注册发现流程
导语 北极星是腾讯开源的一款服务治理平台,用来解决分布式和微服务架构中的服务管理、流量管理、配置管理、故障容错和可观测性问题。在分布式和微服务架构的治理领域,目前国内比较流行的还包括 Spring Cloud,Apache Dubbo 等。在 Kubernete…...
vue3 vxe-grid修改currentPage,查询数据的时候,从第一页开始查询
1、当我们设置好VxeGrid.Options进行数据查询的时候,下面是可能的设置: const gridOptions reactive<BasicTableProps>({id: UserTable,showHeaderOverflow: false,showOverflow: true,keepSource: true,columns: userColumns,size: small,pagerConfig: {cur…...
电商数据集成之电商商品信息采集系统架构设计||电商API接口
一、引言 本架构设计文档旨在阐述基于 Selenium 的电商商品信息采集系统的整体架构,包括系统视图、逻辑视图、物理视图、开发视图和进程视图,并提供一个简单的采集电商商品信息的 demo。该系统通过模拟浏览器行为,实现对电商商品信息的自…...
十大看b站直播的推荐理由/网站主页
在 office2007 中安装一个SaveAsPDFandXPS.exe插件程序就可以直接保存成PDF文件了...
wordpress启动广告/互联网全网营销
我从interweb上截取了这段代码,它最初不起作用。我改了线:rcParams[animation.convert_path] r/usr/bin/convert指向我的convert二进制文件,它就启动了。诚然,这是在Linux上实现的,但我不认为它应该有所不同。正如Mar…...
摄影公司网站/怎么开网店新手入门
scrapy_redis在继承scrapy去重组件的基础上覆盖了某些方法,原scrapy去重是基于单机情况下的内部去重,但是分布式是多机条件下的多爬虫协同去重,因此需要让不同及其上的同一个爬虫能够在同一个地方进行去重,这就是Redis的集合。 先…...
帮人做ppt的网站/凡科建站代理登录
你是否曾经有过要计算一个非常大的数据(几百GB)的需求?或在里面搜索,或其它操作——一些无法并行的操作。数据专家们,我是在对你们说。你可能有一个4核或更多核的CPU,但我们合适的工具,例如 grep, bzip2, wc, awk, sed…...
怎么做网站运营/网站建设方案外包
DockerfileDockerfile的概述Dockerfile构建过程语法要求Dockerfile指令构建自己的centosCMD和ENTRYPOINT的区别Dockerfile制作tomcat镜像发布项目部署简单的Node.js应用发布镜像到DockerHub和阿里云服务Dockerfile的概述 dockerfile是用来构建docker镜像的文件,写有…...
优秀网站建设公司/seo方案
最近看到很多网友问什么品牌的蓝牙耳机适合学生党用?现在的蓝牙耳机品牌越来越多,适合学生党用的蓝牙耳机品牌也不少。下面,我来给大家推荐几款适合学生党的国产高性价比蓝牙耳机,可以当个参考。 一、南卡小音舱蓝牙耳机 参考价…...