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


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

目录
相关文章
|
1月前
|
存储 人工智能 自然语言处理
Pandas数据应用:自然语言处理
本文介绍Pandas在自然语言处理(NLP)中的应用,涵盖数据准备、文本预处理、分词、去除停用词等常见任务,并通过代码示例详细解释。同时,针对常见的报错如`MemoryError`、`ValueError`和`KeyError`提供了解决方案。适合初学者逐步掌握Pandas与NLP结合的技巧。
70 20
|
10天前
|
监控 物联网 数据处理
Pandas高级数据处理:数据流式计算
本文介绍了如何使用 Pandas 进行流式数据处理。流式计算能够实时处理不断流入的数据,适用于金融交易、物联网监控等场景。Pandas 虽然主要用于批处理,但通过分块读取文件、增量更新 DataFrame 和使用生成器等方式,也能实现简单的流式计算。文章还详细讨论了内存溢出、数据类型不一致、数据丢失或重复及性能瓶颈等常见问题的解决方案,并建议在处理大规模数据时使用专门的流式计算框架。
135 100
Pandas高级数据处理:数据流式计算
|
1月前
|
存储 数据挖掘 计算机视觉
Pandas数据应用:图像处理
Pandas 是一个强大的 Python 数据分析库,主要用于处理结构化数据。尽管它不是专门为图像处理设计的,但可以利用其功能辅助图像处理任务。本文介绍如何使用 Pandas 进行图像处理,包括图像读取、显示、基本操作及常见问题解决方法。通过代码案例解释如何将图像转换为 DataFrame 格式,并探讨数据类型不匹配、内存溢出和颜色通道混淆等问题的解决方案。总结中指出,虽然 Pandas 可作为辅助工具,但在实际项目中建议结合专门的图像处理库如 OpenCV 等使用。
65 18
|
1月前
|
机器学习/深度学习 存储 算法
Pandas数据应用:客户流失预测
本文介绍如何使用Pandas进行客户流失预测,涵盖数据加载、预处理、特征工程和模型训练。通过解决常见问题(如文件路径错误、编码问题、列名不一致等),确保数据分析顺利进行。特征工程中创建新特征并转换数据类型,为模型训练做准备。最后,划分训练集与测试集,选择合适的机器学习算法构建模型,并讨论数据不平衡等问题的解决方案。掌握这些技巧有助于有效应对实际工作中的复杂情况。
141 95
|
1月前
|
机器学习/深度学习 数据采集 JSON
Pandas数据应用:机器学习预处理
本文介绍如何使用Pandas进行机器学习数据预处理,涵盖数据加载、缺失值处理、类型转换、标准化与归一化及分类变量编码等内容。常见问题包括文件路径错误、编码不正确、数据类型不符、缺失值处理不当等。通过代码案例详细解释每一步骤,并提供解决方案,确保数据质量,提升模型性能。
150 88
|
29天前
|
数据采集 存储 供应链
Pandas数据应用:库存管理
本文介绍Pandas在库存管理中的应用,涵盖数据读取、清洗、查询及常见报错的解决方法。通过具体代码示例,讲解如何处理多样数据来源、格式不一致、缺失值和重复数据等问题,并解决KeyError、ValueError等常见错误,帮助提高库存管理效率和准确性。
104 72
|
3天前
|
数据采集 数据可视化 数据处理
Pandas高级数据处理:数据仪表板制作
《Pandas高级数据处理:数据仪表板制作》涵盖数据清洗、聚合、时间序列处理等技巧,解决常见错误如KeyError和内存溢出。通过多源数据整合、动态数据透视及可视化准备,结合性能优化与最佳实践,助你构建响应快速、数据精准的商业级数据仪表板。适合希望提升数据分析能力的开发者。
57 31
|
4天前
|
数据采集 并行计算 数据可视化
Pandas高级数据处理:数据报告生成实战指南
数据报告生成面临数据质量、计算性能、呈现形式和自动化等核心挑战。常见问题包括缺失值导致统计失真、内存溢出及可视化困难。解决方案涵盖数据清洗、分块处理、安全绘图模板等。通过模块化设计、异常处理机制和性能优化策略,如使用`category`类型、并行计算等,可大幅提升效率。最佳实践建议建立数据质量检查清单、版本控制和自动化测试框架,确保系统具备自适应能力,提升报告生成效率300%以上。
33 12
|
1月前
|
数据采集 机器学习/深度学习 搜索推荐
Pandas数据应用:推荐系统
在数字化时代,推荐系统是互联网公司的重要组成部分,Pandas作为Python的强大数据分析库,在数据预处理和特征工程中发挥关键作用。常见问题包括缺失值、重复值处理及数据类型转换,解决方案分别为使用`fillna()`、`drop_duplicates()`和`astype()`等函数。常见报错如KeyError、ValueError和MemoryError可通过检查列名、确保数据格式正确及分块读取数据等方式解决。合理运用Pandas工具,可为构建高效推荐系统奠定坚实基础。
65 18
Pandas数据应用:推荐系统
|
1月前
|
数据采集 存储 算法
Pandas数据应用:市场篮子分析
市场篮子分析是一种用于发现商品间关联关系的数据挖掘技术,广泛应用于零售业。Pandas作为强大的数据分析库,在此领域具有显著优势。本文介绍了市场篮子分析的基础概念,如事务、项集、支持度、置信度和提升度,并探讨了数据预处理、算法选择、参数设置及结果解释中的常见问题与解决方案,帮助用户更好地进行市场篮子分析,为企业决策提供支持。
69 29