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


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

目录
相关文章
|
5月前
|
Java 数据挖掘 数据处理
(Pandas)Python做数据处理必选框架之一!(一):介绍Pandas中的两个数据结构;刨析Series:如何访问数据;数据去重、取众数、总和、标准差、方差、平均值等;判断缺失值、获取索引...
Pandas 是一个开源的数据分析和数据处理库,它是基于 Python 编程语言的。 Pandas 提供了易于使用的数据结构和数据分析工具,特别适用于处理结构化数据,如表格型数据(类似于Excel表格)。 Pandas 是数据科学和分析领域中常用的工具之一,它使得用户能够轻松地从各种数据源中导入数据,并对数据进行高效的操作和分析。 Pandas 主要引入了两种新的数据结构:Series 和 DataFrame。
615 0
|
8月前
|
自然语言处理 数据挖掘 数据处理
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
本文将介绍 10 个在数据处理中至关重要的 Pandas 技术模式。这些模式能够显著减少调试时间,提升代码的可维护性,并构建更加清晰的数据处理流水线。
288 3
告别低效代码:用对这10个Pandas方法让数据分析效率翻倍
|
10月前
|
数据采集 安全 数据挖掘
Pandas数据合并:10种高效连接技巧与常见问题
在数据分析中,数据合并是常见且关键的步骤。本文针对合并来自多个来源的数据集时可能遇到的问题,如列丢失、重复记录等,提供系统解决方案。基于对超1000个复杂数据集的分析经验,总结了10种关键技术,涵盖Pandas库中`merge`和`join`函数的使用方法。内容包括基本合并、左连接、右连接、外连接、基于索引连接、多键合并、数据拼接、交叉连接、后缀管理和合并验证等场景。通过实际案例与技术原理解析,帮助用户高效准确地完成数据整合任务,提升数据分析效率。
953 13
Pandas数据合并:10种高效连接技巧与常见问题
|
8月前
|
数据采集 数据可视化 数据挖掘
用 Excel+Power Query 做电商数据分析:从 “每天加班整理数据” 到 “一键生成报表” 的配置教程
在电商运营中,数据是增长的关键驱动力。然而,传统的手工数据处理方式效率低下,耗费大量时间且易出错。本文介绍如何利用 Excel 中的 Power Query 工具,自动化完成电商数据的采集、清洗与分析,大幅提升数据处理效率。通过某美妆电商的实战案例,详细拆解从多平台数据整合到可视化报表生成的全流程,帮助电商从业者摆脱繁琐操作,聚焦业务增长,实现数据驱动的高效运营。
|
7月前
|
SQL 数据挖掘 BI
数据分析的尽头,是跳出数据看数据!
当前许多企业在数据分析上投入大量资源,却常陷入“数据越看越细,业务越看越虚”的困境。报表繁杂、指标众多,但决策难、行动少,分析流于形式。真正有价值的数据分析,不在于图表多漂亮,而在于能否带来洞察、推动决策、指导行动。本文探讨如何跳出数据、回归业务场景,实现数据驱动的有效落地。
|
SQL 人工智能 数据可视化
数据团队必读:智能数据分析文档(DataV Note)五种高效工作模式
数据项目复杂,涉及代码、数据、运行环境等多部分。随着AI发展,数据科学团队面临挑战。协作式数据文档(如阿里云DataV Note)成为提升效率的关键工具。它支持跨角色协同、异构数据处理、多语言分析及高效沟通,帮助创建知识库,实现可重现的数据科学过程,并通过一键分享报告促进数据驱动决策。未来,大模型AI将进一步增强其功能,如智能绘图、总结探索、NLP2SQL/Python和AutoReport,为数据分析带来更多可能。
761 142
|
数据采集 数据可视化 数据处理
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
346 31
|
消息中间件 数据挖掘 数据处理
Pandas高级数据处理:数据流式计算
在大数据时代,Pandas作为Python强大的数据分析库,在处理结构化数据方面表现出色。然而,面对海量数据时,如何实现高效的流式计算成为关键。本文探讨了Pandas在流式计算中的常见问题与挑战,如内存限制、性能瓶颈和数据一致性,并提供了详细的解决方案,包括使用`chunksize`分批读取、向量化操作及`dask`库等方法,帮助读者更好地应对大规模数据处理需求。
300 17
|
缓存 数据可视化 BI
Pandas高级数据处理:数据仪表板制作
在数据分析中,面对庞大、多维度的数据集(如销售记录、用户行为日志),直接查看原始数据难以快速抓住重点。传统展示方式(如Excel表格)缺乏交互性和动态性,影响决策效率。为此,我们利用Python的Pandas库构建数据仪表板,具备数据聚合筛选、可视化图表生成和性能优化功能,帮助业务人员直观分析不同品类商品销量分布、省份销售额排名及日均订单量变化趋势,提升数据洞察力与决策效率。
292 12
|
数据采集 存储 数据可视化
Pandas高级数据处理:数据报告生成
Pandas 是数据分析领域不可或缺的工具,支持多种文件格式的数据读取与写入、数据清洗、筛选与过滤。本文从基础到高级,介绍如何使用 Pandas 进行数据处理,并解决常见问题和报错,如数据类型不一致、时间格式解析错误、内存不足等。最后,通过数据汇总、可视化和报告导出,生成专业的数据报告,帮助你在实际工作中更加高效地处理数据。
377 8

热门文章

最新文章