首页 存档 技术 查看内容

Python的12种Pandas数据处理入门技巧, 你会几个?

2018-3-30 13:00 |来自: 互联网 462 0

摘要: 本文转自:大数据文摘 翻译:黄念 校对:王方思 “为什么要学Python”这个问题,是很多从来没有学过,或者没有怎么了解过Python的小白最常见的问题。 其实Python语言非常简单,同时又很强大,最新的数据是位列201 ...


本文转自:大数据文摘

翻译:黄念

校对:王方思


“为什么要学Python”这个问题,是很多从来没有学过,或者没有怎么了解过Python的小白最常见的问题。


其实Python语言非常简单,同时又很强大,最新的数据是位列2016语言排行榜第三位,而且美国,澳大利亚,加拿大,14岁以上的青少年开始官方推荐学习。


Python虽然是25岁的大叔级编程语言,但是近年来Python反而变得越来越流行,在TIOBE编程语言指数排行榜中,Python的排名长期占据领先位置。



国外非常有名的有Google, facebook, Yahoo, YueTube, 还有美国宇航局NASA, 像著名的开源云计算平台openstack也是用python写的,还有国内的豆瓣也是用python写的。


今天主页君就带大家一起了解python入门的数据处理12种有用的Pandas技巧


1

布尔索引


如果你想根据另一列的条件来筛选某一列的值,你会怎么做?例如,我们想获得一份完整的没有毕业并获得贷款的女性名单。这里可以使用布尔索引实现。你可以使用以下代码:



2

Apply 函数


Apply是一个常用函数,用于处理数据和创建新变量。在利用某些函数传递一个数据帧的每一行或列之后,Apply函数返回相应的值。该函数可以是系统自带的,也可以是用户定义的。举个例子,它可以用来找到任一行或者列的缺失值。



由此我们得到了需要的结果。


注:第二个输出中使用了head()函数,因为结果中包含很多行。


3

填补缺失值


‘fillna()’可以一次性解决:以整列的平均数或众数或中位数来替换缺失值。让我们基于其各自的众数填补出“性别”、“婚姻”和“自由职业”列的缺失值。

#首先导入函数来判断众数




结果返回众数和其出现频次。请注意,众数可以是一个数组,因为高频的值可能有多个。我们通常默认使用第一个:



现在,我们可以填补缺失值并用# 2中提到的方法来检查。


#填补缺失值并再次检查缺失值以确认



4

透视表


Pandas可以用来创建MS Excel风格的透视表。例如,在本例中一个关键列是“贷款数额”有缺失值。我们可以根据“性别”,“婚姻状况”和“自由职业”分组后的平均金额来替换。 “贷款数额”的各组均值可以以如下方式确定:



5

多索引


如果你注意到#3的输出,它有一个奇怪的特性。每一个索引都是由3个值组合构成的。这就是所谓的多索引。它有助于快速执行运算。


从# 3的例子继续开始,我们有每个组的均值,但还没有被填补。


这可以使用到目前为止学习到的各种技巧来解决。


#只在有缺失贷款值的行中进行迭代并再次检查确认



注意:


  • 1. 多索引需要在loc中声明的定义分组的索引元组。这个元组会在函数中用到。

  • 2. .values[0]后缀是必需的,因为默认情况下元素返回的索引与原数据框的索引不匹配。在这种情况下,直接赋值会出错。

6

交叉表



此函数用于获取数据的一个初始“感觉”(视图)。在这里,我们可以验证一些基本假设。例如,在本例中,“信用记录”被认为显著影响贷款状况。这可以使用交叉表验证,如下图所示:



这些是绝对值。但是,要获得快速的见解,用百分比更直观。我们可以使用apply 函数来实现:



现在,很明显,有信用记录的人得到一笔贷款的可能性更高:与没有信用记录的人只有8%得到贷款相比,80%的有信用记录的人获得了一笔贷款。


然而不仅如此。其中包含了更有趣的信息。由于我已经知道有一次信用记录是非常重要的,如果我预测拥有信用记录的人贷款状态是Y(贷款成功),而没有的人为N(贷款失败)。令人惊讶的是,我们在614个例子中会有82 378=460次的正确。这个比例高达75%!


如果你仍纳闷为何我们还需要统计模型,我不会怪你。但是相信我,即使在目前这个精准度上再提高哪怕0.001%的精度仍会是一项充满挑战性的任务。你会接受这个挑战吗?


注:这个75%是基于训练集的。测试集会略有不同,但接近。另外,我希望这能提供一些直觉,即到底为什么哪怕0.05%的精度提升,可造成Kaggle排行榜(数据分析竞赛网站译者注)上的名次上升500位。


7

合并数据帧


当我们需要对不同来源的信息进行合并时,合并数据帧变得很重要。假设对于不同物业类型,有不同的房屋均价(INR/平方米)。让我们定义这样一个数据帧:



现在,我们可以将原始数据帧和这些信息合并:



透视表验证了成功的合并操作。请注意,“value”在这里是无关紧要的,因为在这里我们只简单计数。


8

数据帧排序

Pandas允许在多列之上轻松排序。可以这样做:



注:Pandas的“排序”功能现在已不再推荐。我们用“sort_values”代替。


9

绘图(箱线图和树状图)


很多人可能没意识到,箱线图和柱状图可以直接在Pandas中绘制,不必另外调用matplotlib。这只需要一行命令。例如,如果我们想通过贷款状况来比较申请人收入的分布,我们可以这样做:



可见收入本身并不是一个决定性因素, 因为获得/未获得贷款的人没有明显的收入差异。


声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部