Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(一)

简介: Pandas数据分析:处理文本数据(str/object)各类操作+代码一文详解(一)

前言


Pandas数据分析系列专栏已经更新了很久了,基本覆盖到使用pandas处理日常业务以及常规的数据分析方方面面的问题。从基础的数据结构逐步入门到处理各类数据以及专业的pandas常用函数讲解都花费了大量时间和心思创作,如果大家有需要从事数据分析或者大数据开发的朋友推荐订阅专栏,将在第一时间学习到Pandas数据分析最实用常用的知识。此篇博客篇幅较长,涉及到处理文本数据(str/object)等各类操作,值得细读实践一番,我会将Pandas的精华部分挑出细讲实践。博主会长期维护博文,有错误或者疑惑可以在评论区指出,感谢大家的支持。


一、文本数据类型


Pandas用来代表文本数据类型有两种:


object:一般为NumPy的数组

string:最常规的文本数据


我们最常用的还是使用string来存储文本文件,但是使用dataframe和series进行数据处理转换的时候object数据类型又用的多。在Pandas1.0版本之前只有object类型,这会导致字符数据和非字符数据全部都以object方式存储,导致处理混乱。而后续版本优化加入了String更好的区分了处理文本数据的耦合问题。目前的object类型依旧是文本数据和数组类型的string数据,但是Pandas为了后续的兼容性依旧将object类型设为默认的文本数据存储类型。


二、文本转换


例如我们新建一个Series:


pd.Series(['a','b','c'])



2c1691cb95f442608d5a361c432646a7.png


默认创建为object类型,当然可以指定为string类型:


pd.Series(["a", "b", "c"], dtype="string")


6fce99b62c474ea391b27cabfd920db9.png


亦或是:


pd.Series(["a", "b", "c"], dtype=pd.StringDtype())


f03361c66d624179870304ed5a2e2289.png


若开始没有指定则可以使用astype方法强制转换:


1. s = pd.Series(["a", "b", "c"])
2. s.astype("string")



9337bd1d3c3446978810b787b011129f.png

三、Object与String的差别


对于StringDtype,返回数值输出的字符串操作方法将始终返回可为空的整数数据类型,而不是int或float数据类型,具体取决于NA值的存在。返回布尔输出的方法将返回可为空的布尔数据类型。


我们用案例展示一遍就明白了:


s = pd.Series(["a", None, "b"], dtype="string")
s


84bdec96ff8843128cd17dbed6eb952d.png

s.str.count("a")

cd653093feb540609d4d93aaf3cc92b9.png

s.dropna().str.count("a")

image.png


以上都是string数据类型处理后的结果,我们与之对比一下object就会发现:


1. s2 = pd.Series(["a", None, "b"], dtype="object")
2. s2


f8edf5d848da4344a0f821c16f90d520.png

s2.str.count("a")

59d93e3a7e654a4ea547cb97d89bf80d.png


可以发现object与string不同的是聚合后显示的数据类型,前者是float后者则是int。


s2.dropna().str.count("a")

aa69b5e2ad244e62a6aff4f4f506c028.png


而当去掉NA时候则为int,这和string一样。当存在NA值时,输出数据类型为float64。


s.str.isdigit()


bb62240129d44606b826f03a6b372a0d.png

s.str.match("a")

3820f2bf231e4529bda3a1e38e0a3075.png


有些字符串方法,如Series.str.decode()在StringArray上不可用,因为StringArray只保存字符串,而不是字节。在比较操作中,数组。StringArray和由StringArray支持的序列将返回一个具有BooleanDtype的对象,而不是bool dtype对象。StringArray中缺少的值将在比较操作中传递,而不是像numpy.nan那样总是比较不相等的值。


四、String处理方法


序列和索引都配备了一组字符串处理方法,可以轻松地对数组的每个元素进行操作。最重要的是这些方法自动排除丢失的/NA值。这些方法通过str属性访问,通常名称与等效(标量)内置字符串方法匹配:


1.大小写转换


这里我们创建测试用例:


s=pd.Series(['A','b','C',np.nan,'ABC','abc','AbC'],dtype='string')


小写转换lower()


s.str.lower()

fcd8de17783647d6b2ea4023dc2a32e5.png

大写转换upper()


s.str.upper()


5cf64c70980142b7b788238ce36bb254.png

2.元素长度


输出每个元素的长度len()就可以做到:


s.str.len()

6fa782bc3ff84869ae271b1d8cd8164d.png


3.字符串空格去除


这种方法有三种控制形式,这里我们创建一个覆盖测试用例全面的数据集:


s=pd.Index([' A','A ',' A ','A'],dtype='string')


b479dd84eff14240b998c3d1b71336a4.png

全部去除strip()


s.str.strip()

c68e6c1fc7c24a7fbca33e56a8a158fd.png


只去除左边lstrip()


s.str.lstrip()

9f6dbdb37cd546a399c99b573e27e9fd.png

只去除右边rstrip()


s.str.rstrip()


image.png

索引上的字符串方法对于处理或转换DataFrame列特别有用。例如,可能有带有前导或尾随空格的列:


df = pd.DataFrame(
    np.random.randn(3, 2), columns=[" Column A ", " Column B "], index=range(3)
)

708f6643dc1749dc8d4cdec36eebda46.png

我们将列索引提取之后使用str类方法就可以处理转换:


df.columns.str.strip()

1dd45aa2ba82470b89c82f113e384265.png

也可以自由进行大小写转换:


df.columns.str.lower()


f7bd02cf0d4e4774a081e7cdc80dd97b.png


组合一起来用的话,还可以搭配其他函数实现复杂的转换效果:


df.columns = df.columns.str.strip().str.lower().str.replace(" ", "_")

c576db2c46e84586af208d411d64bfb7.png


开篇文章不讲过多,下篇文章我们再去了解一些基础的方法。

目录
相关文章
|
8月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
707 0
|
11月前
|
自然语言处理 数据挖掘 数据处理
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
本文将介绍 10 个在数据处理中至关重要的 Pandas 技术模式。这些模式能够显著减少调试时间,提升代码的可维护性,并构建更加清晰的数据处理流水线。
350 3
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
|
数据采集 安全 数据挖掘
Pandas数据合并:10种高效连接技巧与常见问题
在数据分析中,数据合并是常见且关键的步骤。本文针对合并来自多个来源的数据集时可能遇到的问题,如列丢失、重复记录等,提供系统解决方案。基于对超1000个复杂数据集的分析经验,总结了10种关键技术,涵盖Pandas库中`merge`和`join`函数的使用方法。内容包括基本合并、左连接、右连接、外连接、基于索引连接、多键合并、数据拼接、交叉连接、后缀管理和合并验证等场景。通过实际案例与技术原理解析,帮助用户高效准确地完成数据整合任务,提升数据分析效率。
1096 13
Pandas数据合并:10种高效连接技巧与常见问题
|
存储 人工智能 自然语言处理
Pandas数据应用:自然语言处理
本文介绍Pandas在自然语言处理(NLP)中的应用,涵盖数据准备、文本预处理、分词、去除停用词等常见任务,并通过代码示例详细解释。同时,针对常见的报错如`MemoryError`、`ValueError`和`KeyError`提供了解决方案。适合初学者逐步掌握Pandas与NLP结合的技巧。
565 20
|
存储 数据挖掘 计算机视觉
Pandas数据应用:图像处理
Pandas 是一个强大的 Python 数据分析库,主要用于处理结构化数据。尽管它不是专门为图像处理设计的,但可以利用其功能辅助图像处理任务。本文介绍如何使用 Pandas 进行图像处理,包括图像读取、显示、基本操作及常见问题解决方法。通过代码案例解释如何将图像转换为 DataFrame 格式,并探讨数据类型不匹配、内存溢出和颜色通道混淆等问题的解决方案。总结中指出,虽然 Pandas 可作为辅助工具,但在实际项目中建议结合专门的图像处理库如 OpenCV 等使用。
452 18
|
监控 物联网 数据处理
Pandas高级数据处理:数据流式计算
本文介绍了如何使用 Pandas 进行流式数据处理。流式计算能够实时处理不断流入的数据,适用于金融交易、物联网监控等场景。Pandas 虽然主要用于批处理,但通过分块读取文件、增量更新 DataFrame 和使用生成器等方式,也能实现简单的流式计算。文章还详细讨论了内存溢出、数据类型不一致、数据丢失或重复及性能瓶颈等常见问题的解决方案,并建议在处理大规模数据时使用专门的流式计算框架。
779 100
Pandas高级数据处理:数据流式计算
|
机器学习/深度学习 存储 算法
Pandas数据应用:客户流失预测
本文介绍如何使用Pandas进行客户流失预测,涵盖数据加载、预处理、特征工程和模型训练。通过解决常见问题(如文件路径错误、编码问题、列名不一致等),确保数据分析顺利进行。特征工程中创建新特征并转换数据类型,为模型训练做准备。最后,划分训练集与测试集,选择合适的机器学习算法构建模型,并讨论数据不平衡等问题的解决方案。掌握这些技巧有助于有效应对实际工作中的复杂情况。
376 95
|
机器学习/深度学习 数据采集 JSON
Pandas数据应用:机器学习预处理
本文介绍如何使用Pandas进行机器学习数据预处理,涵盖数据加载、缺失值处理、类型转换、标准化与归一化及分类变量编码等内容。常见问题包括文件路径错误、编码不正确、数据类型不符、缺失值处理不当等。通过代码案例详细解释每一步骤,并提供解决方案,确保数据质量,提升模型性能。
609 88
|
数据采集 存储 供应链
Pandas数据应用:库存管理
本文介绍Pandas在库存管理中的应用,涵盖数据读取、清洗、查询及常见报错的解决方法。通过具体代码示例,讲解如何处理多样数据来源、格式不一致、缺失值和重复数据等问题,并解决KeyError、ValueError等常见错误,帮助提高库存管理效率和准确性。
442 72
|
数据采集 数据可视化 数据处理
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
386 31

热门文章

最新文章