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


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

目录
相关文章
|
27天前
|
数据采集 SQL 数据可视化
使用Pandas进行高效数据分析
【6月更文挑战第1天】Pandas是Python数据分析的核心库,基于NumPy,提供高效的数据结构如Series和DataFrame。它支持数据加载(CSV、Excel、SQL等)、清洗、预处理、探索、可视化及时间序列分析。通过实例展示了如何加载CSV文件,填充缺失值,进行数据统计和按部门平均薪资的可视化。Pandas与Matplotlib等库集成,简化了数据分析流程,对数据科学家和分析师极其重要。
|
1月前
|
存储 JSON 数据处理
从JSON数据到Pandas DataFrame:如何解析出所需字段
从JSON数据到Pandas DataFrame:如何解析出所需字段
77 1
|
6天前
|
数据采集 机器学习/深度学习 数据可视化
利用Python和Pandas库构建高效的数据分析流程
在数据驱动的时代,数据分析已成为企业决策的关键环节。本文介绍如何利用Python编程语言及其强大的数据分析库Pandas,构建一套高效且可扩展的数据分析流程。与常规的数据分析流程不同,本文不仅涵盖数据加载、清洗、转换等基础步骤,还强调数据可视化、模型探索与评估等高级分析技巧,并通过实际案例展示如何在Python中实现这些步骤,为数据分析师提供一套完整的数据分析解决方案。
|
16天前
|
数据采集 数据可视化 数据挖掘
数据分析大神养成记:Python+Pandas+Matplotlib助你飞跃!
【6月更文挑战第12天】在数字时代,Python因其强大的数据处理能力和易用性成为数据分析首选工具。结合Pandas(用于高效数据处理)和Matplotlib(用于数据可视化),能助你成为数据分析专家。Python处理数据预处理、分析和可视化,Pandas的DataFrame简化表格数据操作,Matplotlib则提供丰富图表展示数据。掌握这三个库,数据分析之路将更加畅通无阻。
|
1月前
|
数据采集 监控 数据可视化
Pandas平滑法时序数据
【5月更文挑战第17天】本文介绍了使用Python的Pandas库实现指数平滑法进行时间序列预测分析。指数平滑法是一种加权移动平均预测方法,通过历史数据的加权平均值预测未来趋势。文章首先阐述了指数平滑法的基本原理,包括简单指数平滑的计算公式。接着,展示了如何用Pandas读取时间序列数据并实现指数平滑,提供了示例代码。此外,文中还讨论了指数平滑法在实际项目中的应用,如销售预测和库存管理,并提到了在`statsmodels`库中使用`SimpleExpSmoothing`函数进行模型拟合和预测。最后,文章强调了模型调优、异常值处理、季节性调整以及部署和监控的重要性,旨在帮助读者理解和应用这一方法
31 2
 Pandas平滑法时序数据
|
26天前
|
Python 数据挖掘 数据可视化
Python数据分析——Pandas与Jupyter Notebook
【6月更文挑战第1天】 本文探讨了如何使用Python的Pandas库和Jupyter Notebook进行数据分析。首先,介绍了安装和设置步骤,然后展示了如何使用Pandas的DataFrame进行数据加载、清洗和基本分析。接着,通过Jupyter Notebook的交互式环境,演示了数据分析和可视化,包括直方图的创建。文章还涉及数据清洗,如处理缺失值,并展示了如何进行高级数据分析,如数据分组和聚合。此外,还提供了将分析结果导出到文件的方法。通过销售数据的完整案例,详细说明了从加载数据到可视化和结果导出的全过程。最后,讨论了进一步的分析和可视化技巧,如销售额趋势、产品销售排名和区域分布,以及
57 2
|
28天前
|
存储 数据采集 JSON
Pandas数据读取三连“坑”
大家小时候有没有用玩儿过一种飞行棋,两个人玩儿,摇骰子摇到几然后就相应的往前走几步,看谁先到终点谁就胜利了。在玩儿的途中,地图上有很多奖励或者陷阱,有的时候运气不好,连中好几个陷阱不但没有前进反而还后退了。 这不最近再看Pandas数据读取的知识时候,我就踩了好几个小坑,幸亏把学习文档上的提供的demo进行了验证,不然在以后项目应用的时候再遇到了岂不是挺尴尬了。
|
1月前
|
SQL 数据采集 存储
Hive实战 —— 电商数据分析(全流程详解 真实数据)
关于基于小型数据的Hive数仓构建实战,目的是通过分析某零售企业的门店数据来进行业务洞察。内容涵盖了数据清洗、数据分析和Hive表的创建。项目需求包括客户画像、消费统计、资源利用率、特征人群定位和数据可视化。数据源包括Customer、Transaction、Store和Review四张表,涉及多个维度的聚合和分析,如按性别、国家统计客户、按时间段计算总收入等。项目执行需先下载数据和配置Zeppelin环境,然后通过Hive进行数据清洗、建表和分析。在建表过程中,涉及ODS、DWD、DWT、DWS和DM五层,每层都有其特定的任务和粒度。最后,通过Hive SQL进行各种业务指标的计算和分析。
318 1
Hive实战 —— 电商数据分析(全流程详解 真实数据)
|
1月前
|
数据挖掘 数据处理 索引
使用Pandas从Excel文件中提取满足条件的数据并生成新的文件
使用Pandas从Excel文件中提取满足条件的数据并生成新的文件
33 1
|
1月前
|
SQL 数据采集 数据挖掘
构建高效的Python数据处理流水线:使用Pandas和NumPy优化数据分析任务
在数据科学和分析领域,Python一直是最受欢迎的编程语言之一。本文将介绍如何通过使用Pandas和NumPy库构建高效的数据处理流水线,从而加速数据分析任务的执行。我们将讨论如何优化数据加载、清洗、转换和分析的过程,以及如何利用这些库中的强大功能来提高代码的性能和可维护性。

热门文章

最新文章