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       a
1       b
2       c
3    aaba
4    baca
5     NaN
6    caba
7     dog
8     cat
dtype: object
#大写方法
In [3]: s.str.upper()
Out[3]:
0       A
1       B
2       C
3    AABA
4    BACA
5     NaN
6    CABA
7     DOG
8     CAT
dtype: object
#显示字符串的长度
In [4]: s.str.len()
Out[4]:
0    1.0
1    1.0
2    1.0
3    4.0
4    4.0
5    NaN
6    4.0
7    3.0
8    3.0
dtype: 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]: df
Out[10]: Column A    Column B
0    0.017428    0.039049
1   -2.240248    0.847859
2   -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]: df
Out[14]: column_a  column_b
0  0.017428  0.039049
1 -2.240248  0.847859
2 -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          NaN
3    [f, g, h]
dtype: object
#元素可以通过str.get()方法来获取
In [17]: s2.str.split('_').str.get(1)
Out[17]:
0      b
1      d
2    NaN
3      g
dtype: object
#也可以通过str[]来获取
In [18]: s2.str.split('_').str[1]
Out[18]:
0      b
1      d
2    NaN
3      g
dtype: object
#可以通过设置expand参数直接返回一个数据框
In [19]: s2.str.split('_', expand=True)
Out[19]: 0     1     2
0    a     b     c
1    c     d     e
2  NaN  None  None
3    f     g     h
#可以通过设置n参数来设置分割点的个数
In [20]: s2.str.split('_', expand=True, n=1)
Out[20]: 0     1
0    a   b_c
1    c   d_e
2  NaN  None
3    f   g_h
#rsplit想对与split来说是从相反的方向(reverse direction)来分割
In [21]: s2.str.rsplit('_', expand=True, n=1)
Out[21]: 0     1
0  a_b     c
1  c_d     e
2  NaN  None
3  f_g     h
#像replace和findall这样的方法可以使用正则表达式
In [22]: s3 = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca',....:                '', np.nan, 'CABA', 'dog', 'cat'])....: In [23]: s3
Out[23]:
0       A
1       B
2       C
3    Aaba
4    Baca
5
6     NaN
7    CABA
8     dog
9     cat
dtype: objectIn [24]: s3.str.replace('^.a|dog', 'XX-XX ', case=False)
Out[24]:
0           A
1           B
2           C
3    XX-XX ba
4    XX-XX ca
5
6         NaN
7    XX-XX BA
8      XX-XX
9     XX-XX t
dtype: object
3.
#通过str[]来索引
In [29]: s = pd.Series(['A', 'B', 'C', 'Aaba', 'Baca', np.nan,....:                'CABA', 'dog', 'cat'])....: In [30]: s.str[0]
Out[30]:
0      A
1      B
2      C
3      A
4      B
5    NaN
6      C
7      d
8      c
dtype: objectIn [31]: s.str[1]
Out[31]:
0    NaN
1    NaN
2    NaN
3      a
4      a
5    NaN
6      A
7      o
8      a
dtype: object
4.
#提取字符串
#如果提取的规则结果有多组,则会返回数据框,不匹配的返回NaN
In [32]: pd.Series(['a1', 'b2', 'c3']).str.extract('([ab])(\d)', expand=False)
Out[32]: 0    1
0    a    1
1    b    2
2  NaN  NaN
#注意正则表达式中的任何捕获组名称将用于列名,否则捕获的组名将被当作列名
In [33]: pd.Series(['a1', 'b2', 'c3']).str.extract('(?P<letter>[ab])(?P<digit>\d)', expand=False)
Out[33]: letter digit
0      a     1
1      b     2
2    NaN   NaN
#参数expand=True在一组返回值的情况下,返回数据框
In [35]: pd.Series(['a1', 'b2', 'c3']).str.extract('[ab](\d)', expand=True)
Out[35]: 0
0    1
1    2
2  NaN
#参数expand=False在一组返回值的情况下,返回序列(Series)
In [36]: pd.Series(['a1', 'b2', 'c3']).str.extract('[ab](\d)', expand=False)
Out[36]:
0      1
1      2
2    NaN
dtype: object
#参数expand=True作用在索引上时,一组数据返回数据框
In [37]: s = pd.Series(["a1", "b2", "c3"], ["A11", "B22", "C33"])In [38]: s
Out[38]:
A11    a1
B22    b2
C33    c3
dtype: objectIn [39]: s.index.str.extract("(?P<letter>[a-zA-Z])", expand=True)
Out[39]: letter
0      A
1      B
2      C
#参数expand=False作用在索引上时,一组数据返回索引
In [40]: s.index.str.extract("(?P<letter>[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 group
Index      Index    ValueError
Series    Series    DataFrame
5.
#提取所有匹配的字符串
#extract只返回第一个匹配到的字符
In [42]: s = pd.Series(["a1a2", "b1", "c1"], index=["A", "B", "C"])
In [43]: s
Out[43]:
A    a1a2
B      b1
C      c1
dtype: object
In [44]: two_groups = '(?P<letter>[a-z])(?P<digit>[0-9])'
In [45]: s.str.extract(two_groups, expand=True)
Out[45]: letter digit
A      a     1
B      b     1
C      c     1
#extractall将匹配所有返回的字符
In [46]: s.str.extractall(two_groups)
Out[46]: letter digitmatch
A 0          a     11          a     2
B 0          b     1
C 0          c     1
6.
#测试是否包含某规则
In [56]: pattern = r'[a-z][0-9]'In [57]: pd.Series(['1', '2', '3a', '3b', '03c']).str.contains(pattern)
Out[57]:
0    False
1    False
2    False
3    False
4    False
dtype: bool
7.
#match, contains, startswith, and endswith可以设置缺失值是True还是false
In [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     True
1    False
2    False
3     True
4    False
5    False
6     True
7    False
8    False
dtype: bool
8.
#提取伪变量
In [61]: s = pd.Series(['a', 'a|b', np.nan, 'a|c'])In [62]: s.str.get_dummies(sep='|')
Out[62]: a  b  c
0  1  0  0
1  1  1  0
2  0  0  0
3  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 基本文本数据处理相关推荐

  1. 经常被人忽视的:Pandas 文本数据处理!

    毋庸置疑,Pandas是使用最广泛的 Python 库之一,它提供了许多功能和方法来执行有效的数据处理和数据分析. 我们平时的操作,大多围绕着数字的处理,这是因为大家习惯将表格数据与数字联系起来.然而 ...

  2. 如何用Pandas处理文本数据?

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过Datawhale干货 作者:耿远昊,Datawhale成员,华东师范大学 文本数据是指不能参与算 ...

  3. 【Python基础】如何用Pandas处理文本数据?

    作者:耿远昊,Datawhale成员,华东师范大学 文本数据是指不能参与算术运算的任何字符,也称为字符型数据.如英文字母.汉字.不作为数值使用的数字(以单引号开头)和其他可输入的字符.文本数据具有数据 ...

  4. 文本数据处理的终极指南-[NLP入门]

    上海站 | 高性能计算之GPU CUDA培训 4月13-15日 三天密集式学习  快速带你晋级 阅读全文 > 正文共10202个字,13张图,预计阅读时间26分钟. 简介 实现任何程度或者级别的 ...

  5. pandas 空字符串与na区别_python从安装到数据分析应用高手 Pandas处理文本数据(一)...

    数据分析师的一天 作为一名数据分析师,目前而言是以业务为中心,取数,清洗整理数据,取数与清洗数据会消耗大量的工作时间,毕竟代码需要跟着业务节奏变化. 其中文本数据相比数值数据更具复杂性,本文就pand ...

  6. Python小案例(一)非结构化文本数据处理

    Python小案例(一)非结构化文本数据处理 日常业务需求中,仅凭SQL一招鲜是没法吃遍天的,这个时候就需要更为强大的Python进行支持了.这个系列主要分享一些Python小案例,都是根据笔者日常工 ...

  7. 09 Python之Pandas库之数据处理与规整

    Pandas库之数据处理与规整 import numpy as np import pandas as pd import pandas_datareader.data as web import d ...

  8. pandas Excel 光谱数据处理

    pandas Excel 光谱数据处理 在化学专业的学习中常常会使用到光谱分析,但是这种资料难以寻找,通常要进行手动绘制.通过查找数据库的源码,可以获取此数据,本文是使用pandas对此数据进行处理, ...

  9. Mysql数据库大文本数据处理

    数据库大文本数据处理目标:把 mp3文件保存到数据库中!在my.ini中添加如下配置: max_allowed_packet=104857601 什么是大文本数据所谓大文本数据,就是大的字节数据,或大 ...

最新文章

  1. 11:菜单自动化软件部署经典案例
  2. 云计算设计模式(十六)——优先级队列模式
  3. Redis的备份与恢复
  4. Android系统驱动【转】
  5. 给 axios 和 redux-axios-middleware 添加finally方法 的使用心得
  6. Android如何解析Intent
  7. 实用供热空调设计手册第三版_【最新资讯】执行主编周敏赴北京、天津进行手册编制工作会谈...
  8. canvas里图像拖拽操作
  9. 【优化算法】混合蛙跳优化算法(SFLA)【含Matlab源码 1472期】
  10. Mac安装 MySQL 及可视化工具
  11. Ubuntu关闭cups打印机服务
  12. 小爱音箱mini系统故障怎么办_Win7蓝牙连接小爱音箱mini的详细教程
  13. WordPress纯代码纯静态开启七牛CDN并集成七牛缩略图和水印功能
  14. 销售计算机流程图,flowchart_请问在电脑WORD中怎样画流程图?
  15. 一清机、二清机、跳码,你知道这些POS机猫腻的原理吗?
  16. 联合几位大佬给大家送110本技术书籍!包邮到家!!
  17. VMware虚拟机Mac-OS-X系统如何切换中英文输入法
  18. flink常见故障排除
  19. Redis集群生产环境搭建,主从搭建,动态增删步骤
  20. Django项目实践3 - Django模型(字段、数据库操作及模型继承)

热门文章

  1. Python编程常见出错信息及原因分析(3)
  2. linux 检测蓝牙 rssi,蓝牙LE信号强度Linux
  3. 134.加油站(javascript)
  4. 虚拟运营商人工服务器,四大必想之事:倒闭、价格、网络
  5. matlab五角星的二维作图,MATLAB二维画图综合实例
  6. docker知识点查阅
  7. 严格对角占优矩阵特征值_电子科技大学矩阵理论复习笔记 第四章 特征值的估计...
  8. php 生成txt,php批量生成html与txt文件
  9. neo4j 机器学习_知识图谱实战系列四:neo4j的介绍和使用
  10. httpservletrequest_HttpServletResponse和HttpServletRequest取值的2个坑你知道吗?