《Clojure数据分析秘笈》——2.2节使用正则表达式清洗数据

简介:

本节书摘来自华章社区《Clojure数据分析秘笈》一书中的第2章,第2.2节使用正则表达式清洗数据,作者(美)Eric Rochester,更多章节内容可以访问云栖社区“华章社区”公众号查看

2.2 使用正则表达式清洗数据
大概最基本、最普遍的数据清洗方式就是正则表达式了。尽管有时被滥用,但是很多时候正则表达式是完成一项工作最适合的工具。而且,Clojure内置编译正则表达式的语法,因此在Clojure中使用正则表达式也很方便。
本例将编写一个标准化美国电话号码的函数。

2.2.1 准备工作
本方法需要在脚本或REPL中使用clojure.string库。表达式如下:


10a4eadc9d6ef966fc2436139963591e1f61c3ac

2.2.3 实现原理
本方法中最复杂的部分是正则表达式,接下来对其详细讲解。
(?x):这是本身并不匹配任何内容的标识符。它允许展开正则表达式,并且它会忽略空格和注释。以这种方式编写正则表达式使它们具有相当好的可读性和可用性,特别是6个月后当你试图回忆它的作用时。
(d{3}):匹配三个数字。
D{0,2}:匹配0~2个非数字字符。这是为了允许在区号和前缀之间存在可选的分隔符。
(d{3}):匹配另外三个数字。
D?:这是一个可选的非数字字符。例如,允许一个破折号。
(d{4}):这是电话号码的最后4位数字。
圆括号中间的内容可以被正则表达式匹配。如果正则表达式的圆括号中没有组(groups),re-find仅返回匹配的字符串。如果有组,将返回一个向量。匹配的整个字符串是向量的第一个元素,正则表达式中组的内容存在于向量后面的元素中。本方法使用返回的组来构建输出。
2.2.4 更多信息
正则表达式很复杂,而且很多书对其做了介绍。这里有更多关于正则表达式的资源:
JavaDocs里关于Pattern类的内容可以在http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html找到。它总结了Java中使用正则表达式的语法。
关于正则表达式的Oracle Java教程可以在http://docs.oracle.com/javase/tutorial/essential/regex/找到。
RegexPlant的在线测试器,参见http://www.regexplanet.com/advanced/java/index.html。但REPL是我通常用来构建或测试正则表达式的工具。
2.2.5 参阅
Jamie Zawinski曾说过:
有一些人,当他们遇到难题的时候,会想“我知道,我将使用正则表达式”。然后他们就会有两个难题。
正则表达式是一个复杂的、愚钝的工具,而且通常需要精心设计。有时它们是合适的工具,但有时不是。2.11节将介绍一个更强大、更好用的工具。

相关文章
|
3天前
|
数据采集 数据可视化 数据挖掘
Pandas数据应用:天气数据分析
本文介绍如何使用 Pandas 进行天气数据分析。Pandas 是一个强大的 Python 数据处理库,适合处理表格型数据。文章涵盖加载天气数据、处理缺失值、转换数据类型、时间序列分析(如滚动平均和重采样)等内容,并解决常见报错如 SettingWithCopyWarning、KeyError 和 TypeError。通过这些方法,帮助用户更好地进行气候趋势预测和决策。
92 71
|
2天前
|
存储 数据采集 数据可视化
Pandas数据应用:电子商务数据分析
本文介绍如何使用 Pandas 进行电子商务数据分析,涵盖数据加载、清洗、预处理、分析与可视化。通过 `read_csv` 等函数加载数据,利用 `info()` 和 `describe()` 探索数据结构和统计信息。针对常见问题如缺失值、重复记录、异常值等,提供解决方案,如 `dropna()`、`drop_duplicates()` 和正则表达式处理。结合 Matplotlib 等库实现数据可视化,探讨内存不足和性能瓶颈的应对方法,并总结常见报错及解决策略,帮助提升电商企业的数据分析能力。
95 73
|
2月前
|
存储 机器学习/深度学习 数据可视化
数据集中存在大量的重复值,会对后续的数据分析和处理产生什么影响?
数据集中存在大量重复值可能会对后续的数据分析和处理产生多方面的负面影响
124 56
|
4天前
|
数据采集 数据可视化 索引
Pandas数据应用:股票数据分析
本文介绍了如何使用Pandas库进行股票数据分析。首先,通过pip安装并导入Pandas库。接着,从本地CSV文件读取股票数据,并解决常见的解析错误。然后,利用head()、info()等函数查看数据基本信息,进行数据清洗,处理缺失值和重复数据。再者,结合Matplotlib和Seaborn进行数据可视化,绘制收盘价折线图。最后,进行时间序列分析,设置日期索引、重采样和计算移动平均线。通过这些步骤,帮助读者掌握Pandas在股票数据分析中的应用。
31 5
|
16天前
|
数据采集 监控 数据挖掘
常用电商商品数据API接口(item get)概述,数据分析以及上货
电商商品数据API接口(item get)是电商平台上用于提供商品详细信息的接口。这些接口允许开发者或系统以编程方式获取商品的详细信息,包括但不限于商品的标题、价格、库存、图片、销量、规格参数、用户评价等。这些信息对于电商业务来说至关重要,是商品数据分析、价格监控、上货策略制定等工作的基础。
|
2月前
|
数据采集 Web App开发 iOS开发
如何使用 Python 语言的正则表达式进行网页数据的爬取?
使用 Python 进行网页数据爬取的步骤包括:1. 安装必要库(requests、re、bs4);2. 发送 HTTP 请求获取网页内容;3. 使用正则表达式提取数据;4. 数据清洗和处理;5. 循环遍历多个页面。通过这些步骤,可以高效地从网页中提取所需信息。
|
3月前
|
机器学习/深度学习 人工智能 搜索推荐
某A保险公司的 数据图表和数据分析
某A保险公司的 数据图表和数据分析
72 0
某A保险公司的 数据图表和数据分析
|
3月前
|
机器学习/深度学习 数据采集 数据可视化
如何理解数据分析及数据的预处理,分析建模,可视化
如何理解数据分析及数据的预处理,分析建模,可视化
70 0
|
2月前
|
机器学习/深度学习 算法 数据挖掘
数据分析的 10 个最佳 Python 库
数据分析的 10 个最佳 Python 库
95 4
数据分析的 10 个最佳 Python 库
|
5月前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
在数字化时代,数据分析至关重要,而Python凭借其强大的数据处理能力和丰富的库支持,已成为该领域的首选工具。Python作为基石,提供简洁语法和全面功能,适用于从数据预处理到高级分析的各种任务。Pandas库则像是神兵利器,其DataFrame结构让表格型数据的处理变得简单高效,支持数据的增删改查及复杂变换。配合Matplotlib这一数据可视化的魔法棒,能以直观图表展现数据分析结果。掌握这三大神器,你也能成为数据分析领域的高手!
95 2