Pandas基本文本数据的处理方法
发表于:2025-02-02 作者:千家信息网编辑
千家信息网最后更新 2025年02月02日,本篇内容主要讲解"Pandas基本文本数据的处理方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Pandas基本文本数据的处理方法"吧!1.# 系列和索
千家信息网最后更新 2025年02月02日Pandas基本文本数据的处理方法
本篇内容主要讲解"Pandas基本文本数据的处理方法",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"Pandas基本文本数据的处理方法"吧!
1.# 系列和索引配有一组字符串处理方法,使它容易操作数组的每个元素。或许最重要的是,这些方法自动排除失踪/ NA值。这里有一些字符串方法的例子:In [1]: s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])#小写方法In [2]: s.str.lower()Out[2]: 0 a1 b2 c3 aaba4 baca5 NaN6 caba7 dog8 catdtype: object#大写方法In [3]: s.str.upper()Out[3]: 0 A1 B2 C3 AABA4 BACA5 NaN6 CABA7 DOG8 CATdtype: object#显示字符串的长度In [4]: s.str.len()Out[4]: 0 1.01 1.02 1.03 4.04 4.05 NaN6 4.07 3.08 3.0dtype: float64In [5]: idx = pd.Index([' jack', 'jill ', ' jesse ', 'frank'])#去除两边的空格In [6]: idx.str.strip()Out[6]: Index([u'jack', u'jill', u'jesse', u'frank'], dtype='object')#去除左边的空格In [7]: idx.str.lstrip()Out[7]: Index([u'jack', u'jill ', u'jesse ', u'frank'], dtype='object')#去除右边的空格In [8]: idx.str.rstrip()Out[8]: Index([u' jack', u'jill', u' jesse', u'frank'], dtype='object')# df.columns一个index对象,所以我们科研用.str存取器In [9]: df = pd.DataFrame(randn(3, 2), columns=[' Column A ', ' Column B '], ...: index=range(3)) ...: In [10]: dfOut[10]: Column A Column B 0 0.017428 0.0390491 -2.240248 0.8478592 -1.342107 0.368828#去除列名的空格In [11]: df.columns.str.strip()Out[11]: Index([u'Column A', u'Column B'], dtype='object')#列名小写In [12]: df.columns.str.lower()Out[12]: Index([u' column a ', u' column b '], dtype='object')#将列名先去空,再小写,再将空格替换为"_"In [13]: df.columns = df.columns.str.strip().str.lower().str.replace(' ', '_')In [14]: dfOut[14]: column_a column_b0 0.017428 0.0390491 -2.240248 0.8478592 -1.342107 0.3688282.#拆分和替换字符In [15]: s2 = pd.Series(['a_b_c', 'c_d_e', np.nan, 'f_g_h'])#以_拆分,返回的是列表In [16]: s2.str.split('_')Out[16]: 0 [a, b, c]1 [c, d, e]2 NaN3 [f, g, h]dtype: object#元素可以通过str.get()方法来获取In [17]: s2.str.split('_').str.get(1)Out[17]: 0 b1 d2 NaN3 gdtype: object#也可以通过str[]来获取In [18]: s2.str.split('_').str[1]Out[18]: 0 b1 d2 NaN3 gdtype: object#可以通过设置expand参数直接返回一个数据框In [19]: s2.str.split('_', expand=True)Out[19]: 0 1 20 a b c1 c d e2 NaN None None3 f g h#可以通过设置n参数来设置分割点的个数In [20]: s2.str.split('_', expand=True, n=1)Out[20]: 0 10 a b_c1 c d_e2 NaN None3 f g_h#rsplit想对与split来说是从相反的方向(reverse direction)来分割In [21]: s2.str.rsplit('_', expand=True, n=1)Out[21]: 0 10 a_b c1 c_d e2 NaN None3 f_g h#像replace和findall这样的方法可以使用正则表达式In [22]: s3 = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', ....: '', np.nan, 'CABA', 'dog', 'cat']) ....: In [23]: s3Out[23]: 0 A1 B2 C3 Aaba4 Baca5 6 NaN7 CABA8 dog9 catdtype: objectIn [24]: s3.str.replace('^.a|dog', 'XX-XX ', case=False)Out[24]: 0 A1 B2 C3 XX-XX ba4 XX-XX ca5 6 NaN7 XX-XX BA8 XX-XX 9 XX-XX tdtype: object3.#通过str[]来索引In [29]: s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, ....: 'CABA', 'dog', 'cat']) ....: In [30]: s.str[0]Out[30]: 0 A1 B2 C3 A4 B5 NaN6 C7 d8 cdtype: objectIn [31]: s.str[1]Out[31]: 0 NaN1 NaN2 NaN3 a4 a5 NaN6 A7 o8 adtype: object4.#提取字符串#如果提取的规则结果有多组,则会返回数据框,不匹配的返回NaNIn [32]: pd.Series(['a1', 'b2', 'c3']).str.extract('([ab])(\d)', expand=False)Out[32]: 0 10 a 11 b 22 NaN NaN#注意正则表达式中的任何捕获组名称将用于列名,否则捕获的组名将被当作列名In [33]: pd.Series(['a1', 'b2', 'c3']).str.extract('(?P[ab])(?P \d)', expand=False)Out[33]: letter digit0 a 11 b 22 NaN NaN#参数expand=True在一组返回值的情况下,返回数据框In [35]: pd.Series(['a1', 'b2', 'c3']).str.extract('[ab](\d)', expand=True)Out[35]: 00 11 22 NaN#参数expand=False在一组返回值的情况下,返回序列(Series)In [36]: pd.Series(['a1', 'b2', 'c3']).str.extract('[ab](\d)', expand=False)Out[36]: 0 11 22 NaNdtype: object#参数expand=True作用在索引上时,一组数据返回数据框In [37]: s = pd.Series(["a1", "b2", "c3"], ["A11", "B22", "C33"])In [38]: sOut[38]: A11 a1B22 b2C33 c3dtype: objectIn [39]: s.index.str.extract("(?P [a-zA-Z])", expand=True)Out[39]: letter0 A1 B2 C#参数expand=False作用在索引上时,一组数据返回索引In [40]: s.index.str.extract("(?P [a-zA-Z])", expand=False)Out[40]: Index([u'A', u'B', u'C'], dtype='object', name=u'letter')#下图表示了在expand=False时,各种情况下index,Series返回值的情况 1 group >1 groupIndex Index ValueErrorSeries Series DataFrame5.#提取所有匹配的字符串#extract只返回第一个匹配到的字符In [42]: s = pd.Series(["a1a2", "b1", "c1"], index=["A", "B", "C"])In [43]: sOut[43]: A a1a2B b1C c1dtype: objectIn [44]: two_groups = '(?P [a-z])(?P [0-9])'In [45]: s.str.extract(two_groups, expand=True)Out[45]: letter digitA a 1B b 1C c 1#extractall将匹配所有返回的字符In [46]: s.str.extractall(two_groups)Out[46]: letter digit match A 0 a 1 1 a 2B 0 b 1C 0 c 16.#测试是否包含某规则In [56]: pattern = r'[a-z][0-9]'In [57]: pd.Series(['1', '2', '3a', '3b', '03c']).str.contains(pattern)Out[57]: 0 False1 False2 False3 False4 Falsedtype: bool7. #match, contains, startswith, and endswith可以设置缺失值是True还是falseIn [59]: s4 = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan, 'CABA', 'dog', 'cat'])In [60]: s4.str.contains('A', na=False)Out[60]: 0 True1 False2 False3 True4 False5 False6 True7 False8 Falsedtype: bool8.#提取伪变量In [61]: s = pd.Series(['a', 'a|b', np.nan, 'a|c'])In [62]: s.str.get_dummies(sep='|')Out[62]: a b c0 1 0 01 1 1 02 0 0 03 1 0 1#获取复杂索引In [63]: idx = pd.Index(['a', 'a|b', np.nan, 'a|c'])In [64]: idx.str.get_dummies(sep='|')Out[64]: MultiIndex(levels=[[0, 1], [0, 1], [0, 1]], labels=[[1, 1, 0, 1], [0, 1, 0, 0], [0, 0, 0, 1]], names=[u'a', u'b', u'c'])
到此,相信大家对"Pandas基本文本数据的处理方法"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
方法
数据
字符
参数
索引
字符串
空格
处理
可以通过
情况
文本
小写
作用
元素
内容
正则
表达式
规则
学习
复杂
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
模块化软件开发方法
网络安全和密码学
石家庄标准软件开发服务价钱
ps4注册什么服务器好
深圳机场软件开发
网络安全30号令
金山区上门软件开发业务流程
动态未连接数据库连接
常见代谢物数据库
互联网网页数据库
数据库gb2312
深圳比亚迪服务器
软件开发质量意识
网络安全设备设计方案
未来吃香的计算机软件开发管理
360杀毒服务器版
成都嵌入式软件开发工程师面试
化学动力学数据库
企邦网络技术
sql数据库io优化
望远县软件开发定制找哪家
警察网络安全管理岗位是警察
网络安全有哪些需求
温州网络技术学院
计算机网络技术云安全方向
嵌入式系统软件开发需求软件
数据库审计哪家不错
数据库二级保护
南谯区常见软件开发技术销售厂
镇江云主机服务器价格