不小心去考了一个简直不能再愚蠢的考试(FRM),导致最近也没有时间更新,本来都觉得大家都要取关了,没想到还涨了这么多粉,顿时又动力满满,继续为大家勤奋地更新,争取在六月之前将数据分析的部分写完,按照我的schedule还有很多小节。我也是单兵作战,抱着负责任的态度,每一篇的举例和措词,都是100%的原创,都是要经过很长时间去推敲的,方便大家能够快速的学习了解,在每天工作之后还要费大量的脑力,确实是一件很伤神的事。如果大家觉得我写的内容对大家有所帮助,希望大家能够多推荐亲朋好友同学来关注,激励我坚持下去!
接着上期的内容,我们将继续data manipulation over the whole table的剩余话题。之后将开始文本数据的处理。
3.整表(Table) Cont.
Reshape是一系列操作的统称,简单的有改变表格的维度,复杂一些的包括:用r的朋友们都比较熟悉melt,用惯了SAS的同学都比较熟悉transpose, EXCEL党比较熟悉的pivot。我这里特地把pivot与reshape分开(其实pivot也是reshape的一种形式)是因为pivot中会有aggregation的操作,而melt和transpose是不太有的。
总的来说reshape就是改变表格的形状,把变量变成列或行的值,或者是把某(几)列的值变成变量,或是加一些aggregation的操作。我们将会做简单的示例。我们以下列dataframe示例:
1.将变量变成值(variable to value)
这里我们需要用到pandas里melt这个方程,这个方程其实就是以一个(或多个)列作为支点,对其余的列进行旋转(Rotate)。我们要对几个输入值做出说明:
Id_vars : Rotate的支点;
Value_vars :Rotate的轴;
Value_name &Var_name :对rotate完之后的列重新命名。
2.将值变成变量(value to variable)
这里我们需要用melt的反向操作pivot,同样是rotate但是是不同的方向。同样我们对几个关键输入值作出说明:
Index :rotate的支点;
Columns :rotate的轴;
Values :rotate轴的尾端。
3 .附加aggregation操作的pivot
这里我们要用pivot_table这个方程,在某种意义上这个功能相当于一些group by的操作,但实质意义上说它是在复制excel中pivot的功能。下面是我们用pivot_table求每个人的平均分数。
这个就相当于我们在SQL中使用:
SELECTname,mean(score)
FROMmelt_ep
GROUP BYname,subject
文本处理(Text)
—
对于表格型的数据的基本操作我们先讲到这里,下面我们开始进入文本数据的处理。本期及以后一期的重点将放在正则表达( Regular Expression)上,这是在处理文本语言方面不可缺少的工具。主要以介绍为主,对于如何写出高效的正则表达式,我们会在以后探讨。我们使用Python中built-in的包re来进行讲解。这个最早在Ruby中发扬光大的语言,尽管在Ruby已经过时,regex仍成为现在众多流行语言中不可或缺的一部分。Regex在data collection和data cleaning中都有极大的应用,在爬虫(Web Sscraping)中更始不可缺少的核心工具。
这期我们把regex的应用重点放在两个方面:
基于模式的识别( Pattern Recognition);
基于模式的挖掘( Pattern Mining)。
第一部分重点在于regex的基本使用,及re包中一些简单方程。
1.Pattern Recognition
我们以一个简单的例子来进行说明:
Today I am going tointro3ducethe Regular Expression, which is a dominatinglangu)agein LOTS0FAPPL1CATIONS!
我们想找处这句话中含有特殊符号或数字的英文单词,我们在写正则表达式之前要注意:我们要把检测单位变成一个单词(\b)。关于这许多符号要不要记?我是记不住一部分的,在用的时候都会打开cheat sheet进行参考,我也把连接放在了文末。
(我在这里的表达不是最好的,但只是为了起到解释作用。)
这里我们对这个regex做一下简单的解释:
[A-Za-z]意思是字符的范围是English Alphabet(upper and lower),*的意思是有零个或多个;
[^A-Za-z]意思是除了Alphabet和blank之外的所有符号,+的意思是至少有一个;
\b是regex里用来分割单词的符号。
翻译起来也很简单,我们只要找出里有非英文字母但不是空格的单词,findall的功能是遍历整段文字,去进行检索。
我们再举一个例子:
‘\d’是digit的symbol,这个方程就是在检查输入是否满足mm-dd-yyyy的时间格式,附带了mm
第二部分的在于regex的应用,我们将以基于regex的爬虫进行讲解。
领取专属 10元无门槛券
私享最新 技术干货