12种用于数据分析的Pandas技巧可用来学习Python详细概述.doc
《12种用于数据分析的Pandas技巧可用来学习Python详细概述.doc》由会员分享,可在线阅读,更多相关《12种用于数据分析的Pandas技巧可用来学习Python详细概述.doc(8页珍藏版)》请在三一文库上搜索。
1、12种用于数据分析的Pandas技巧可用来学习Python详细概述编者按:依靠完善的编程语言生态系统和更好的科学计算库,如今Python几乎已经成了数据科学家的首选语言。如果你正开始学习Python,而且目标是数据分析,相信NumPy、SciPy、Pandas会是你进阶路上的必备法宝。尤其是对数学专业的人来说,Pandas可以作为一个首选的数据分析切入点。本文将介绍12种用于数据分析的Pandas技巧,为了更好地描述它们的效果,这里我们用一个数据集辅助进行操作。数据集:我们研究的主题是贷款预测,请到datahack.analyticsvidhya/contest/practice-proble
2、m-loan-prediction下载数据(需注册),并开始学习之旅。预备!开始!首先,我们先导入模块,并将数据集加载到Python环境中:import pandas as pdimport numpy as npdata = pd.read_csv(train.csv, index_col=Loan_ID)1. Boolean Indexing在表格中,如果你想根据另一列的条件筛选当前列的值,你会怎么做?举个例子,假设我们想要一份所有未毕业但已经办理了贷款的女性清单,具体的操作是什么?在这种情况下,Boolean Indexing,也就是布尔索引能提供相应的功能。我们只需这样做:data.l
3、oc(dataGender=Female) 2. Apply FunctionApply函数是使用数据和创建新变量的常用函数之一。在对DataFrame的特定行/列应用一些函数后,它会返回相应的值。这些函数既可以是默认的,也可以是用户自定义的。如这里我们就定义了一个查找每行/列中缺失值的函数:#Create a new function:def num_missing(x):return sum(x.isnull()#Applying per column:printMissing values per column:print data.apply(num_missing, axis=0)
4、#axis=0 defines that function is to be applied on each column#Applying per row:printnMissing values per row:print data.apply(num_missing, axis=1).head() #axis=1 defines that function is to be applied on each row我们得到了预期的结果。需要注意的一点是,这里head() 函数只作用于第二个输出,因为它包含多行数据。3. 替换缺失值对于替换缺失值,fillna()可以一步到位。它会用目标列的
5、平均值/众数/中位数更新缺失值,以此达到目的。在这个示例中,让我们用众数分别更新Gender、Married、Self_Employed这几列的缺失值:#First we import a function to determine the modefrom scipy.stats import modemode(dataGender)输出:ModeResult(mode=array(Male, dtype=object), count=array(489)我们得到了众数及其出现的次数。记住很多时候众数会是一个数组,因为可能数据中存在多个高频词,默认情况下,我们会选择第一个:mode(data
6、Gender).mode0*Male现在我们就能更新缺失值,并检测自己对Apply函数的掌握情况:#Impute the values:dataGender.fillna(mode(dataGender).mode0, inplace=True)dataMarried.fillna(mode(dataMarried).mode0, inplace=True)dataSelf_Employed.fillna(mode(dataSelf_Employed).mode0, inplace=True)#Now check the #missing values again to confirm:pri
7、nt data.apply(num_missing, axis=0)从结果上看,缺失值的确被补上了,但这只是最原始的形式,在现实工作中,我们还要掌握更复杂的方法,如分组使用平均值/众数/中位数、对缺失值进行建模等。4. Pivot TablePandas可以用来创建MS Excel样式数据透视表(Pivot Table)。在本文的例子中,数据的关键列是含有缺失值的“LoanAmount”。为了获得具体的贷款额度数字,我们可以用Gender、Married、Self_Employed这几列的贷款情况进行估算:#Determine pivot tableimpute_grps = data.piv
8、ot_table(values=LoanAmount, index=Gender,Married,Self_Employed, aggfunc=np.mean)print impute_grps5. Multi-Indexing如果你仔细观察了“替换缺失值”那一节的输出,你可能会发现一个奇怪的现象,就是每个索引都由3个值组合而成。这被称为多重索引(Multi-Indexing),它有助于操作的快速执行。让我们接着这个例子,假设现在我们有各列的值,但还没有进行缺失值估算。这时就要用到之前的各种技巧:#iterate only through rows with missing LoanAmoun
9、tfor i,row in data.locdataLoanAmount.isnull(),:.iterrows():ind = tuple(rowGender,rowMarried,rowSelf_Employed)data.loci,LoanAmount = impute_grps.locind.values0#Now check the #missing values again to confirm:print data.apply(num_missing, axis=0)注:多索引需要元组来定义loc语句中的索引组。这是一个在函数中要用到的元组。values 0的后缀是必需的,因为默
10、认情况下返回的值与DataFrame的值不匹配。在这种情况下,直接分配会出现错误。6. Crosstab这个函数可以被用来塑造对数据的初始“感觉(概览)”,通俗地讲,就是我们可以验证一些基本假设,如在贷款案例中,“Credit_History”会影响个人贷款成功与否。这可以用交叉表(Crosstab)测试,如下所示:pd.crosstab(dataCredit_History,dataLoan_Status,margins=True)如果说数值还不够直观,我们可以用apply函数把它转换成百分比:def percConvert(ser):return ser/float(ser-1)pd.cr
11、osstab(dataCredit_History,dataLoan_Status,margins=True).apply(percConvert, axis=1)显然,有“CreditHistory”的人获得贷款的机会更大,有80%以上的概率,而没有“CreditHistory”的人获得贷款的概率只有可怜的9%。但是这就是个简单的预测结果吗?不是的,这里包含着一个有趣的故事。已知有CreditHistory”的人获得贷款的概率更高,那我们大可以设他们的“LoanStatus”为Y,其他人的为N,这样一个模型的预测结果会是什么样的?我们进行了614次测试,而它的正确预测次数是82+378=46
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 12 用于 数据 分析 Pandas 技巧 用来 学习 Python 详细 概述
链接地址:https://www.31doc.com/p-3234922.html