如何用pandas对excel中的文本数据进行操作

excel进行数据的操作最便捷的库是pandas,但是如何使用pandas对excel中的文本进行清洗,这是一个很技巧性的工作。之前常见的思路是操作结果保存到新的excel文件中,这会让代码可读性和清洗速度大大降低,这很不pythonic,所以今天分享pandas的文本数据处理技巧。

pandas中有Series和DataFrame两种数据结构,Series是一种数组,DataFrame是一种表(每一行数据是一条记录,每一列是一个变量)。

上图整体是一个DataFrame,图中的每一绿色圈中的是一个Series。

在Series中有str方法,本文所有的方法都是在Series对象基础上进行的操作。

Series.str方法

Series.str可以对某一序列中的每个文本数据进行批处理,一般返回的结果是数组。

上面内容看不懂没关系,我们通过代码帮助你理解

选择From_To列,得到Series类型数据

Run

upper/lower

将Airline列中的每一项变为大写

Run

将From_To列中的每一项变为小写

Run

len

求From_To列每一项的长度

Run

split分割

对From To列中每一项按照” “进行切割。注意这里expand参数

Run

contains

From_To列中每项是否含有’Brussels’这个字段,返回布尔值

Run

startswith

From_To列中每项是否含以’B’作为开头,返回布尔值

Run

endswith

From_To列中每项是否含以’n’作为结尾,返回布尔值

Run

findall

把RecentDelays列中的列表

Run

extract

清洗Airline列,使其每一项只拥有字母和空格。我们先看看数据

使用正则表达式,对From_To列进行提取操作,获得出发地和目的地。

findall(pat)

查找Series中每一项是否含有pat

Run

查找Series中每一项是否含有Monkey

Run

我们先看看df

查找From_To列中是否有Paris

Run

replace

将From To列中的” “换为”>”

Run

get

get(i) 获得序列中每一项第i个位置的数据

Run

获得s1序列中每项文本的第2个位置的数据

Run

获得s1序列中每项文本的最后一个位置的数据

Run

join

join(sep) 按照sep对每一项文本序列数据进行拼接。注意遇到非文本数据,不进行拼接,返回nan

Run

将s2中每一项用空格拼接

Run

cat

Series.str.cat(sep, na rep)|按照sep对数组进行合并(如果遇到nan,以na rep替代),注意该方法返回字符串

将Airline列合并成一个大的字符串,用空格间隔

Run

推荐阅读