pandas文本处理
- import pandas as pd
- import numpy as np
- s = pd.Series(['A', 'b', 'c', 'bbhello', '', np.nan, 'hj'])
- df = pd.DataFrame({'key1': list('abcdef'),
- 'key2': ['hee', 'fv', 'w', 'hija', '', np.nan]})
- print(s)
- print('-'*8)
- print(df)
- print('-'*8)
- '''
- 0 A
- 1 b
- 2 c
- 3 bbhello
- 4 123
- 5 NaN
- 6 hj
- dtype: object
- --------
- key1 key2
- 0 a hee
- 1 b fv
- 2 c w
- 3 d hija
- 4 e 123
- 5 f NaN
- --------
- '''
- # 直接通过.str调用字符串方法,可以对Series、DataFrame使用,自动过滤NaN值
- print(s.str.count('b'))
- '''
- 0 0.0
- 1 1.0
- 2 0.0
- 3 2.0
- 4 0.0
- 5 NaN
- 6 0.0
- dtype: float64
- '''
- print(df['key2'].str.upper())
- '''
- 0 HEE
- 1 FV
- 2 W
- 3 HIJA
- 4 123
- 5 NaN
- Name: key2, dtype: object
- '''
- # 将所有的列名改为大写
- df.columns = df.columns.str.upper()
- print(df)
- '''
- KEY1 KEY2
- 0 a hee
- 1 b fv
- 2 c w
- 3 d hija
- 4 e 123
- 5 f NaN
- '''
- # 字符串常用方法 --lower,upper,len,starswith,endswith
- print('小写,lower()',s.str.lower())
- print('大写,upper()',s.str.upper())
- print('长度,len()',s.str.len())
- print('判断起始是否为b,startswith()',s.str.startswith('b'))
- print('判断结束是否为"o",endswith()',s.str.endswith('o'))
- '''
- 小写,lower() 0 a
- 1 b
- 2 c
- 3 bbhello
- 4 123
- 5 NaN
- 6 hj
- dtype: object
- 大写,upper() 0 A
- 1 B
- 2 C
- 3 BBHELLO
- 4 123
- 5 NaN
- 6 HJ
- dtype: object
- 长度,len() 0 1.0
- 1 1.0
- 2 1.0
- 3 7.0
- 4 3.0
- 5 NaN
- 6 2.0
- dtype: float64
- 判断起始是否为b,startswith() 0 False
- 1 True
- 2 False
- 3 True
- 4 False
- 5 NaN
- 6 False
- dtype: object
- 判断结束是否为"o",endswith() 0 False
- 1 False
- 2 False
- 3 True
- 4 False
- 5 NaN
- 6 False
- dtype: object
- '''
- # 字符串常用方法 --strip
- s2 = pd.Series([' jack', 'jill ', ' jesse '])
- df2 = pd.DataFrame(np.random.randn(3, 2), columns=[' A ', ' B'], index=range(3))
- print(s2)
- print('-'*8)
- print(df2)
- print('-'*8)
- '''
- 0 jack
- 1 jill
- 2 jesse
- dtype: object
- --------
- A B
- 0 -0.333042 -0.467830
- 1 0.605179 -0.658910
- 2 -0.490881 -0.639754
- --------
- '''
- print(s2.str.strip())
- print('-'*8)
- print(s2.str.lstrip())
- print('-'*8)
- print(s2.str.rstrip())
- '''
- 0 jack
- 1 jill
- 2 jesse
- dtype: object
- --------
- 0 jack
- 1 jill
- 2 jesse
- dtype: object
- --------
- 0 jack
- 1 jill
- 2 jesse
- dtype: object
- '''
- df2.columns = df2.columns.str.strip()
- print(df2)
- '''
- A B
- 0 -0.801508 1.650113
- 1 -0.669556 -1.195999
- 2 0.277338 -0.727100
- '''
- # 字符串常用方法 -- replace()
- df3 = pd.DataFrame(np.random.randn(3, 2), columns=[' A a', ' B b'], index=range(3))
- df3.columns = df3.columns.str.replace(' ', '-', n=2)
- print(df3)
- '''
- -A-a -B- b
- 0 -1.225938 0.296270
- 1 0.769037 2.794032
- 2 -1.686818 0.109314
- '''
- # 字符串常用方法 -- spilt、rsplit
- s4 = pd.Series(['a,b,c', '1,2,3', ['a,,,c'], np.nan])
- print(s4)
- print(s4.str.split(','))
- '''
- 0 a,b,c
- 1 1,2,3
- 2 [a,,,c]
- 3 NaN
- dtype: object
- 0 [a, b, c]
- 1 [1, 2, 3]
- 2 NaN
- 3 NaN
- dtype: object
- '''
- # 直接索引得到一个list
- # 可以使用get或[]符号访问拆散列表中的元素
- print(s4.str.split(',').str[0])
- print(s4.str.split(',').str.get(0))
- '''
- 0 a
- 1 1
- 2 NaN
- 3 NaN
- dtype: object
- 0 a
- 1 1
- 2 NaN
- 3 NaN
- dtype: object
- '''
- # 可以使用expand可以轻松扩展此操作以返回DataFrame
- # n 参数限制分割数
- print(s4.str.split(','))
- print('-' * 8)
- print(s4.str.split(',', expand=True))
- '''
- 0 [a, b, c]
- 1 [1, 2, 3]
- 2 NaN
- 3 NaN
- dtype: object
- --------
- 0 1 2
- 0 a b c
- 1 1 2 3
- 2 NaN NaN NaN
- 3 NaN NaN NaN
- '''
- print(s4.str.split(',', expand=True, n=1))
- '''
- 0 1
- 0 a b,c
- 1 1 2,3
- 2 NaN NaN
- 3 NaN NaN
- '''
- # rsplit类似于split,反向工作,即从字符串的末尾到字符串的开头
- print(s4.str.split(',', expand=True, n=1))
- print('-' * 8)
- print(s4.str.rsplit(',', expand=True, n=1))
- '''
- 0 1
- 0 a b,c
- 1 1 2,3
- 2 NaN NaN
- 3 NaN NaN
- --------
- 0 1
- 0 a,b c
- 1 1,2 3
- 2 NaN NaN
- 3 NaN NaN
- '''
- df4 = pd.DataFrame({'key1': ['a,b,c', '1,2,3', [':,,, ']],
- 'key2': ['a-b-c', '1-2-3', [':-.- ']]})
- print(df4)
- print('-'*8)
- print(df4['key2'].str.split('-'))
- '''
- key1 key2
- 0 a,b,c a-b-c
- 1 1,2,3 1-2-3
- 2 [:,,, ] [:-.- ]
- --------
- 0 [a, b, c]
- 1 [1, 2, 3]
- 2 NaN
- Name: key2, dtype: object
- '''
- # 通过索引获取分割后的元素
- df4['k201'] = df4['key2'].str.split('-').str[0]
- df4['k202'] = df4['key2'].str.split('-').str[1]
- df4['k203'] = df4['key2'].str.split('-').str[2]
- print(df4)
- '''
- key1 key2 k201 k202 k203
- 0 a,b,c a-b-c a b c
- 1 1,2,3 1-2-3 1 2 3
- 2 [:,,, ] [:-.- ] NaN NaN NaN
- '''
pandas文本处理的更多相关文章
- Pandas文本操作之读取操作
读写文本格式的数据 pandas中的解析函数 函数 说明 read_csv 从文件.url.文件型对象中加载带分隔符的数据,默认分隔符为逗号 read_table 从文件.url.文件型对象中加载带分 ...
- pynlpir + pandas 文本分析
pynlpir是中科院发布的一个分词系统,pandas(Python Data Analysis Library) 是python中一个常用的用来进行数据分析和统计的库,利用这两个库能够对中文文本数据 ...
- Pandas文本数据处理
先初始化数据 import pandas as pd import numpy as np index = pd.Index(data=["Tom", "Bob" ...
- Pandas 文本数据
Pandas针对字符串配备的一套方法,使其易于对数组的每个元素(字符串)进行操作. 1.通过str访问,且自动排除丢失/ NA值 # 通过str访问,且自动排除丢失/ NA值 s = pd.Serie ...
- Pandas: 如何将一列中的文本拆分为多行? | Python
Pandas: 如何将一列中的文本拆分为多行? 在数据处理过程中,经常会遇到以下类型的数据: 在同一列中,本该分别填入多行中的数据,被填在一行里了,然而在分析的时候,需要拆分成为多行. 在上图中,列名 ...
- Python文本数据互相转换(pandas and win32com)
(工作之后,就让自己的身心都去休息吧) 今天介绍一下文本数据的提取和转换,这里主要实例的转换为excel文件(.xlsx)转换world文件(.doc/docx),同时需要使用win32api,同py ...
- pandas 处理文本数据
import pandas as pd import numpy as np 常规的字符串操作 s = pd.Series(['A',"B","C"," ...
- 基于pandas python sklearn 的美团某商家的评论分类(文本分类)
美团店铺评价语言处理以及分类(NLP) 第一篇 数据分析部分 第二篇 可视化部分, 本文是该系列第三篇,文本分类 主要用到的包有jieba,sklearn,pandas,本篇博文主要先用的是词袋模型( ...
- 使用Pandas: str.replace() 进行文本清洗
前段时间参加了Kaggle上的Mercari Price Suggestion Challenge比赛,收获良多,过些时候准备进行一些全面的总结,本篇文章先谈一个比赛中用到的小技巧. 这个比赛数据中有 ...
随机推荐
- 如何在Mac OS X 中运行Lua (Running Lua on Mac OS X)
参考文章:1) http://www.oschina.net/question/12_769552) http://rudamoura.com/luaonmacosx.html 最近在为iOS开发游戏 ...
- Oracle高水位线
Oracle高水位线 https://blog.csdn.net/jx_jy/article/details/50607790 Oracle高水位线的概念 Oracle里面的对象放到存储级别都称为se ...
- A bad vacation
My story happened in the winter of 2012, the first year I began to work in Beijing. It was a cold we ...
- IDEA中Spark往Hbase中写数据
import org.apache.hadoop.hbase.HBaseConfiguration import org.apache.hadoop.hbase.io.ImmutableBytesWr ...
- F5 SSLVPN 的安装问题
WIN10下安装SSLVPN问题 1.右击计算机 -->选择管理-->查看安装的插件是否显示感叹号 2.如果显示感叹号-->则进行更新驱动-->>手动选择-->网络 ...
- PCB 圆形板切边算法 实现
在工程CAM处理圆形拼板是个头疼的问题,需人工程师自行设计切边 满足可以拼板并且拼板后锣板板边没有内角,不然会影响装配 1.原始单 PCS圆形板 此外形如果不采用邮票孔连接的话,采V-CUT连接须采用 ...
- js实现页面的全屏与退出
1.在data里面定义: data(){ return{ isScreen:false, } } //是否显示全屏 fullScreen(event){ this.isScreen = !this.i ...
- ECMA里面的操作符,
ECMA里面的操作符,描述了一组操作于数据值的操作符,包括算数操作符.位操作符,关系操作符和相等操作符,ECMAscript操作符与之不同的是,他们能够使用于很多值,例如字符串.数字值.布尔值.甚至对 ...
- vue-cli 升级至 webpack 4 指北
时至今日(2018-7-11),vue-cli 任然未稳定支持至webpack4,所以我自己也来创建一个 vue 初始化模板 不过大致的原因我也能猜到,因为很多插件仍然是一个不稳定的点,比如我在创建中 ...
- python自动化测试学习笔记-unittest参数化
做接口测试的时候,当一个参数需要输入多个值的时候,就可以使用参数来实现: python中unittest单元测试,可以使用nose_parameterized来实现: 首先需要安装:pip inst ...