pandas 处理文本数据
import pandas as pd
import numpy as np
常规的字符串操作
s = pd.Series(['A',"B","C","AaBa","Baca",np.nan,'dog','cat'])
s
0 A
1 B
2 C
3 AaBa
4 Baca
5 NaN
6 dog
7 cat
dtype: object
s.str.lower()
0 a
1 b
2 c
3 aaba
4 baca
5 NaN
6 dog
7 cat
dtype: object
s.str.upper()
0 A
1 B
2 C
3 AABA
4 BACA
5 NaN
6 DOG
7 CAT
dtype: object
s.str.len()
0 1.0
1 1.0
2 1.0
3 4.0
4 4.0
5 NaN
6 3.0
7 3.0
dtype: float64
idx = pd.Index([' jack','jill ',' jesse','frank'])
idx.str.strip() # 去掉左右两边的空白符
Index(['jack', 'jill', 'jesse', 'frank'], dtype='object')
idx.str.lstrip() # 左去掉空白字符
Index(['jack', 'jill ', 'jesse', 'frank'], dtype='object')
idx.str.rstrip() # 去掉右边的空白符
Index([' jack', 'jill', ' jesse', 'frank'], dtype='object')
df = pd.DataFrame(np.random.randn(3,2),columns=[' Column A ',' Column B '],index=range(3))
df
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| Column A | Column B | |
|---|---|---|
| 0 | 0.048811 | -1.097950 |
| 1 | -1.099516 | -0.514286 |
| 2 | 0.984136 | -1.027790 |
df.columns.str.strip()
Index(['Column A', 'Column B'], dtype='object')
df.columns.str.lower()
Index([' column a ', ' column b '], dtype='object')
df.columns = df.columns.str.strip().str.lower().str.replace(' ',"_")
df
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| column_a | column_b | |
|---|---|---|
| 0 | 0.048811 | -1.097950 |
| 1 | -1.099516 | -0.514286 |
| 2 | 0.984136 | -1.027790 |
分割与替换字符
str.split 操作
s2 = pd.Series(['a_b_c',"c_D_e",np.nan,'f_g_H'])
s2.str.split("_")
0 [a, b, c]
1 [c, D, e]
2 NaN
3 [f, g, H]
dtype: object
s2.str.split('_')[1]
['c', 'D', 'e']
s2.str.split('_').str[1] # 切割之后的Series,通过str方法可以得到新的数据
0 b
1 D
2 NaN
3 g
dtype: object
s2.str.split('_').str.get(1)
0 b
1 D
2 NaN
3 g
dtype: object
s2.str.split('_',expand=True,n=1) # expand 参数,通过可以通过n确定延伸的次数
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| 0 | 1 | |
|---|---|---|
| 0 | a | b_c |
| 1 | c | D_e |
| 2 | NaN | NaN |
| 3 | f | g_H |
s2.str.rsplit('_',expand=True,n=1) # rsplit 方法
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| 0 | 1 | |
|---|---|---|
| 0 | a_b | c |
| 1 | c_D | e |
| 2 | NaN | NaN |
| 3 | f_g | H |
str.replace操作
s3 = pd.Series(['A',"B","C","AaBa","Baca",np.nan,"CABA","dog","cat"])
s3
0 A
1 B
2 C
3 AaBa
4 Baca
5 NaN
6 CABA
7 dog
8 cat
dtype: object
s3.str.replace('^.a|dog','XX_XX',case=False) # 替换第二个字符是a或者dog的字符串,忽略大小写,关于正则表达式的内容篇幅很大
0 A
1 B
2 C
3 XX_XXBa
4 XX_XXca
5 NaN
6 XX_XXBA
7 XX_XX
8 XX_XXt
dtype: object
dollars = pd.Series(['12', '-$10', '$10,000'])
dollars.str.replace('$', '') # replace $ to ''
0 12
1 -10
2 10,000
dtype: object
dollars.str.replace("-$",'-') # doesn't work
0 12
1 -$10
2 $10,000
dtype: object
dollars.str.replace(r'-\$','-')
# 转义 原字符-\$ 替换成'-'
0 12
1 -10
2 $10,000
dtype: object
dollars.str.replace('-\$', '-')
0 12
1 -10
2 $10,000
dtype: object
str.cat操作
s = pd.Series(['A',"B","C","D"])
s.str.cat(sep=',')
'A,B,C,D'
s.str.cat()
'ABCD'
t = pd.Series(['a', 'b', np.nan, 'd'])
t.str.cat(sep=',',na_rep='_')
'a,b,_,d'
s.str.cat(['a',"b","c","d"])
0 Aa
1 Bb
2 Cc
3 Dd
dtype: object
pd.Series(['a1', 'b2', 'c3']).str.extract('(?P<letter>[ab])(?P<digit>\d)', expand=False)# 组命名?P
.dataframe tbody tr th:only-of-type {
vertical-align: middle;
}
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
| letter | digit | |
|---|---|---|
| 0 | a | 1 |
| 1 | b | 2 |
| 2 | NaN | NaN |
match or contain操作
pattern = r'[0-9][a-z]'
pd.Series(['1','2','3a','3b','03c']).str.contains(pattern)# 包含数字字母的文本
0 False
1 False
2 True
3 True
4 True
dtype: bool
pd.Series(['1','2','3a','3b','03c']).str.match(pattern)# 匹配数字字母的文本
0 False
1 False
2 True
3 True
4 False
dtype: bool
其他的方法,可以参考官方文档中的方法函数

pandas 处理文本数据的更多相关文章
- Python文本数据互相转换(pandas and win32com)
(工作之后,就让自己的身心都去休息吧) 今天介绍一下文本数据的提取和转换,这里主要实例的转换为excel文件(.xlsx)转换world文件(.doc/docx),同时需要使用win32api,同py ...
- pandas处理大文本数据
当数据文件是百万级数据时,设置chunksize来分批次处理数据 案例:美国总统竞选时的数据分析 读取数据 import numpy as np import pandas as pdfrom pan ...
- 如何使用 scikit-learn 为机器学习准备文本数据
欢迎大家前往云+社区,获取更多腾讯海量技术实践干货哦~ 文本数据需要特殊处理,然后才能开始将其用于预测建模. 我们需要解析文本,以删除被称为标记化的单词.然后,这些词还需要被编码为整型或浮点型,以用作 ...
- 机器学习入门-文本数据-构造词频词袋模型 1.re.sub(进行字符串的替换) 2.nltk.corpus.stopwords.words(获得停用词表) 3.nltk.WordPunctTokenizer(对字符串进行分词操作) 4.np.vectorize(对函数进行向量化) 5. CountVectorizer(构建词频的词袋模型)
函数说明: 1. re.sub(r'[^a-zA-Z0-9\s]', repl='', sting=string) 用于进行字符串的替换,这里我们用来去除标点符号 参数说明:r'[^a-zA-Z0- ...
- 【tensorflow2.0】处理文本数据
一,准备数据 imdb数据集的目标是根据电影评论的文本内容预测评论的情感标签. 训练集有20000条电影评论文本,测试集有5000条电影评论文本,其中正面评论和负面评论都各占一半. 文本数据预处理较为 ...
- Bulk Insert:将文本数据(csv和txt)导入到数据库中
将文本数据导入到数据库中的方法有很多,将文本格式(csv和txt)导入到SQL Server中,bulk insert是最简单的实现方法 1,bulk insert命令,经过简化如下 BULK INS ...
- JAVASE02-Unit08: 文本数据IO操作 、 异常处理
Unit08: 文本数据IO操作 . 异常处理 * java.io.ObjectOutputStream * 对象输出流,作用是进行对象序列化 package day08; import java.i ...
- JAVASE02-Unit07: 基本IO操作 、 文本数据IO操作
基本IO操作 . 文本数据IO操作 java标准IO(input/output)操作 package day07; import java.io.FileOutputStream; import ja ...
- 10、NFC技术:读写NFC标签中的文本数据
代码实现过程如下: 读写NFC标签的纯文本数据.java import java.nio.charset.Charset; import java.util.Locale; import androi ...
随机推荐
- git忽略已加入到版本库的文件
项目中,我们会用到 '.gitignore' 来忽略一些文件,不记录这些文件的版本控制. 然而,经常发现,已经添加到了 '.gitignore' 的文件/目录,每次的修改等扔会记录版本. 产生这种原因 ...
- IIS安装、配置 发布网站 报错解决方案
错误一: HTTP 错误 500.19- Internal Server Error法请求该页面配置,因为页面的相关配置数据无效#### HTTP 错误 500.21 - Internal S ...
- Pandas 使用笔记
创建空的数据框: import pandas as pd df = pd.DataFrame(columns = ["ebayno", "p_sku", &qu ...
- WIN10系统提示无法使用内置管理员账户打开XXX应用程序怎么办
重装了系统之后,只保留Administrator账户,结果打开程序的时候回弹出这个提示 运行,输入secpol.msc 本地策略-安全选项,启用下面这个,然后重启计算机
- Micro开发文档
secret = md5 ({app_id,timestamp}) access_toKen = md5 ({app_id,app_srect,timestamp}) sign = sha2(para ...
- SpringBoot2.0微信小程序支付多次回调问题
SpringBoot2.0微信小程序支付多次回调问题 WxJava - 微信开发 Java SDK(开发工具包); 支持包括微信支付.开放平台.公众号.企业微信/企业号.小程序等微信功能的后端开发. ...
- phpexcel 导入超过26列、处理时间格式
见地址:http://www.thinkphp.cn/topic/33376.html excel处理时间: https://blog.csdn.net/xqd890608/article/detai ...
- Linux如何统计进程的CPU利用率[转]
0. 为什么写这篇博客 Linux的top或者ps都可以查看进程的cpu利用率,那为什么还需要了解这个细节呢.编写这篇文章呢有如下三个原因: * 希望在脚本中,能够以过”非阻塞”的方式获取进程cpu利 ...
- iOS开发之Found a swap file by the name ".podfile.swp" owned by: Netban dated:...file name: ~N...
Found a swap file by the name ".podfile.swp" owned by: Netban dated: Fri Mar 24 13:57:27 2 ...
- SQL DML 数据操纵语句
前言 DML(Data Manipulation Language)语句:数据操纵语句,用于添加.删除.更新和查询数据库记录,并检查数据完整性.常用的语句关键字主要包括 insert.delete.u ...