python数据分析课件_第1页
python数据分析课件_第2页
python数据分析课件_第3页
python数据分析课件_第4页
python数据分析课件_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

python数据分析(DOC46页)

几年后发生了。在使用SAS工作超过5年后,我决定走出自己的舒服

区。作为一个数据科学家,我查找其他有用的工具的旅程开始了!幸运

的是,没过多久我就决定,Python作为我的开胃菜。

我总是有一个编写代码的倾向。这次我做的是我真正喜爱的。代码。

原先,写代码是如此容易!

我一周内学会了Python基础。同时,从那时起,我不仅深度探究了

这门语言,而且也关心了许多人学习这门语言。Python是一种通用语

言。然而,多年来,具有强大的社区支持,这一语言差不多有了专门的

数据分析和推测模型库。

由于Python缺乏数据科学的资源,我决定写这篇教程来关心别人更

快地学习在本教程中,我们将讲授一点关于如何使用

PythonoPython

进行数据分析的信息,咀嚼它,直到我们觉得舒服并能够自己去实践。

名目

1.数据分析的Python基础

。什么缘故学Python用来数据分析

oPython2.7v/s3.4

。如何样安装Python

O在Python上运行一些简单程序

2.Python的库和数据结构

。Python的数据结构

。Python的迭代和条件结构

oPython库

3.在Python中使用Pandas进行探干脆分析

。序列和数据框的简介

。分析Vidhya数据集——贷款的推测问题

4.在Python中使用Pandas进行数据再加工

5.使用Python中建立推测模型

。逻辑回来

o决策树

O随机森林

让我们开始吧

L数据分析的Python基础

什么缘故学Python用来数据分析

专门多人都有爱好选择Python作为数据分析语言。这一段时刻以来,

我有比较过SAS和R。那个地点有一些缘故来支持学习Python:

・开源——免费安装

・极好的在线社区

•专门容易学习

«能够成为一种通用的语言,用于基于Web的分析产品数据科学和生产中。

不用说,它仍旧有几个缺点:

•它是一种说明性的语言,而不是编译的语言,因此可能占用更多的CPU时刻。然而,

由于它节约了程序员的时刻〔由于学习的方便〕,它可能仍旧是一个专门好的选择。

Python2.7v/s3.4

这是关于Python的一个最具争议的话题。你可能总是不能幸免遇到,

专门是假如你是一个初学者。那个地点没有正确/错误的选择。它完全

取决于具体情形和你的需要。我会尝试给你一些建议,以关心你做出明

智的选择。

什么缘故选择Python2.7

1.极好的社区支持!这是你在初期需要的东西。Python2发行于2000年末,差不多

被使用超过15年。

2.专门多第三方库!尽管许多库差不多提供了3.X的支持,但仍旧有大量的模块只工

作在2.X。假如你打算将Python用于具体的应用,如Web开发这种高度依

靠外部模块的,你选择2.7可能会更好。

3.3.X版本的一些特性有向后兼容性,能够使用2.7版本。

什么缘故选择Python3.4

1.更整齐和更快!Python开发者修正了一些固有的问题和小缺点,以此为以后建立

一个强大的基础。这些可能不是专门相关,但最终会专门重要。

2.这是以后!2.7是2.X族公布的最后一个版本,同时最终每个人都要转移到3.X版

本。Python3在过去5年差不多公布的稳固版本,并将连续。

没有明确的赢家,但我想,底线是,你应该用心于学习Python语言。

版本之间的转换应该只是一个时刻问题。敬请期待,不久的今后一个专

门对比Python2.X和3X的文章!

如何样安装Python

有两种方法安装Python

•你能够直截了当从项目网站下载Python,然后单独安装你想要的组件和库

・或者,你能够下载并安装一个包,它附带了预装的库。我建议您下载Anaconda.

另一种选择是

EnthoughtCanopyExpresso

第二种方法提供了一个幸免苦恼的安装,因此我会举荐给初学者。这种

方法是你必须等待整个包进行升级,即使你只是对一个单一的库的

最新版本感爱好。它应该不重要,直到和除非,直到和除非,你正在做

的尖端统计研究。

选择开发环境

一旦你差不多安装了Python,选择环境能够有专门多种选择。那个

地点是3个最常见的选择:

・终端/基于Shell

・IDLE(默认环境)

•iPythonnotebook-----类似于R的markdown

箱Python2.7.6Shell一口Kifl

FileEditShellDebugOptionsWindowsHelp

Python2.7.6(default,Nov102013,19:24:24)[MSCv.150064bit(AMD64)]onwin

32

Type"copyright","credits"or"license()nformoreinformation.

»>I

而环境权取决于你的需要,我个人更喜爱iPythonnotebook一点。

它提供了许多良好的功能,编写代码的同时还能够用于记录,你能够选

择在上面运行代码块〔而不是一行一行的执行〕。

我们在整个教程中将使用Ipython环境

热身:跑第一个Python程序

你能够使用Python作为一个简单的运算器来开始:

:JUpyterMyFirstiPythonNotebookLastCheckpoint:3minutesag(

FileEditViewInsertCellKernelHelp

IS+®t个*H■CMarkdown▼CellToolbarNone

In[1]:2+3ffFirstprograminiPythonnotebookenvironment

^MultiplelinescanbewrittenhereandtheyMILexectec

Out[l]:5

Thisisanexampleofmarkdowntext.Thisisusefulforaddingcommi

有一些情况需要注意:

•你能够在你的终端/CMD键入''IPythonnotebook"来启动IPythonnotebook,

这取决于你的工作在操作系统

・你能够通过简单地点击上面截图中的名字来对IPythonnotebook命名

・界面显示In[*]代表输入和Out[*]代表输出。

・你能够通过按''Shift+Enter"或''ALT+Enter”来执行代码,假如你后面还想插

入一行。

在我们深入挖掘如何解决问题之前,让我们退后一步,了解Python

的差不多知识。当我们明白数据结构和迭代和条件结构是形成任何语言

的关键。在Python中,这些包括列表、字符串、元组、字典、for■循

环,while循环,if-else等等,让我们来看看下面的因素。

2.在Python上运行一些简单程序

Python的数据结构

以下是Python中使用的一些数据结构。你应该熟悉他们,以便恰当

的使用它们。

・歹11表——列表是在Python中最通用的数据结构。列表能够如此简单的定义:确实

是在方括号中一系列用逗号来分隔的值。列表可能包含不同类型的项,但它们通常

都有相同类型的。Python列表是可变的,列表中的单个元素是能够改变的。

那个地点是一个快速的例子,定义了一个列表,然后访问它:

Lists

Alistcanbesimplydefinedbywritingcommaseparatedvaluesinsquarebrackets.

In[1]:squares_list=[0,1,4,9,16,25]

In[2]:squares_list

Out[2]:(Or1,4,9,1€,25]

Individualelementsofalistcanbeaccessedbywritingtheindexnumberinsquarebracket.Pleasenotethatthefirstindexofalistis0an

In[3]:squaxe3_list[0]^Indexingreturnstheitem

Out[3]:0

Arangeofscriptcanbeaccessedbyhavingfirstindexandlastindex

In[4]:squares^ist[2:4]^Slicingreturnsanevlist

Out[4]:[4,9]

ANegativeindexaccessesthelistfromend

In[5]:3qpiares_list[-2]shouldreturnthesecondlastelement二二tr.elist

Out[5]:16

Afewcommonmethodsapplicabletolistsinclude:append()extend。insert。remove()pop()count()sort()reverse()

・字符串——字符串能够简单的使用单引号「〕、双引号〔"〕或三引号〔’’’〕

来定义。字符串封闭三引号)中能够跨过多行的代码,在文档字符串中是

专门常用的〔记录功能的Python方式〕。作为一个转义字符。请注意,Python中

的字符串是不可变的,因此你不能改变字符串的部分。

Strings

Astringcanbesimplydefinedbyusingsingle(*),double(")ortriple(*)quotation

In[6]:greeting=*Hello1

printgreeting[1]#ReturncharacterontheIndex1

printlen(greeting)#Printslengthofstring

printgreeting+'World'#StringConcatenatlon

e

5

HellcWorld

Rawstringscanbeusedtopassonstringasis.Pythoninterpretterdoesnotalterthestring,ifyouspecifyastringtoberaw.Rawsi

string

In[8]:stmt=r*\nisanewlinecharacterbydefault.,

printstmt

\nisanewlinecharacterbydefault.

Pythonstringsareimmutableandhencecanbechanged.Doingsowillresultinanerror

In[9]:greeting[1:]=1i'^TryingtochangeHellotoHi..Shouldresultinanerror

TypeErrorTraceback(mostrecentcalllast)

<ipython-inpu-C-9-2da872e33998>in<module>()

--->1greeting(1:]=1i*^TryingtochangeHellotoHi.Shouldresultinanerror

TypeError:*str'objectdceanotsupportiremassignment

Commonstringmethodsincludelov/er(),upper(),strip(),isdigit(),isspace(),find(),replace(),split()andjoin().Theseareusuallyvery

manipulationsorcleaningontextfields.

・元组——元组由一系列由逗号分隔的值表示。元组是不可变的,输出的用括号包围,

目的是嵌套结构能够被正确处理。此外,尽管元组是不可变的,但它们能够在必要

是含有可变数据。

因为元组是不可变的,不可改变的,他们相对列表来说能够处理的更

快。因此,假如你的清单是不可能改变的,你应该使用元组,而不是列

Tuples

Atupleisrepresentedbyanumberofvaluesseparatedbycommas

In[10]:tuple_exaiEple=。,1,4,9,16,25

In[11]:tuple_exanqple/outputvouldbeenclosedinparanthesis

Out[11]:(0f1,4,9,16,25)

In[12]:tuple_exair.ple[2]fSingleelementscanbeaccessedinsimilarfashion

Out[12]:4

In[13]:tuple_exair.ple[2]=6#Tuplesareimmutableandhencethisshouldresulti

TypeErrorTraceback(mostrecentcalllas

<ipyrhon-input-13-6c410e816018>in<module>()

------->1tuple_exainple[2]=6#Tuplesareimmutableandhencethisshould

TypeError:'tuple1objectdoesnotsupportitemassignment

,字典一字典是键:值对一个无序集合,要求键是唯独的〔在一个字典里〕。一对

大括号创建一个空的字典:{}。

Dictionary

Adictionaryisanunorderedsetofkey:valuepairs,withtherequirementthatthekeysareunique(withinonedictior

In[20]:extensions={1Kxmal':9073,'lavish1:9128,"Sunil1:9223,"Nitin,:93

extensions

0ut[20]:{•Kunal*:9073,"Nitin*:9330,'Sunil':9223,•lavish•:9128)

In[22]:extensions[*Idukesh1]=9150

extensions

Out[22]:{•Kunal1:9073,•Mukesh1:9150,•Nitin,:9330,'Sunil,:9223,'lavish*:91

In[23]:extensions.keys

Out[23]:['Sunil',•lavish*,•Kunal',•Mukesh*,'Nitin*]

Python的迭代和条件结构

和大多数语言一样,Python也有一个FOR循环,这是最广泛使用的

迭代方法。它有一个简单的语法:

foriin[PythonIterable]:

expression(i)

那个地点的''Python的迭代能够是列表、元组或其他先进的数据结

构,我们将在后面的章节中探讨。让我们来看看一个简单的例子,确定

一个数字的因子。

fact=l

foriinrange(l,N+l):

fact*=i

来看看条件语句,它们是用来基于条件执行代码片段。最常用的结构

是if-else,有以下语法:

if[condition]:

_executioniftrue_

else:

_executioniffalse_

例如,假如我们想打印出某个数字n是偶数依旧奇数:

if==0:

print*Even,

else:

print'Odd*

既然你熟悉了Python的基础,我们来更近一步。假如你像完成以下

任务:

1.乘2矩阵

2.求二次方程的根

3.绘制条形图和直方图

4.建立统计模型

5.访问网页

假如你想从零开始写代码,它将是一场噩梦,你使用Python可不能

超过2天!但不要担忧这些。值得庆幸的是,有许多预定义的库,我们

能够直截了当导入到我们的代码,使我们的生活专门容易。

例如,考虑我们刚才看到的因子的例子。我们能够一步就完成:

math.factorial(N)

因此,为了如此我们需要导入的math库。让我们探究下一个不同的

库。

Python库

在开始我们的学习Python之旅之前,让我们先一步,了解一些有用

的python库。第一步明显是要学会将它们导入到我们的环境中。在

Python中有以下几种方法:

importmathasm

frommathimport*

在第一种方式中,我们差不多为math库定义了一个别名mo现在我

们能够使用数学库的各种功能〔例如阶乘,通过引用别名

m.factorialO)。

第二方式,你需要导入math的整个命名空间,你能够直截了当使用

factorial(),而不用提到matho

提示:谷歌举荐您使用第一种方式导入库,因为您将明白函数来自何逅

下面是一个库列表,你将在任何科学运算和数据分析中用到:

・NumPy代表数值Python.NumPy最强大的功能是n维数组。该库还包含差不多

的线性代数函数,傅里叶变换,高级的随机数功能,以及集成其他低级语言如

Fortran,C和C++的工具。

・SciPy代表科学的Python.SciPy是基于NumPy的。它是最有用的库之一,具有

各种高层次的科学和工程模块,如离散傅立叶变换,线性代数,优化和稀疏矩阵。

・Matplotlib用于绘制各种各样的图表,从直方图到线图,再到热图。你能够在

IPythonnotebook中使用PyLab[IPythonnotebook-PyLab=inline)以此使

用这些绘图功能的inline。假如你忽略inline选项,PyLab会将IPythonnotebook

环境转换成类似于Matlab的环境。你也能够使用Latex命令将math库添加到您

的绘图中。

・Pandas关于结构化数据操作和操纵。它广泛用于数据再加工和数据预备。Pandas

说最近一直在推动对PythonPython的使用数据科学家共同体的工具。

•ScikitLearn机器学习库。建立在NumPy、SciPy和matplotlib的基础上,那个

库包含了机器学习和统计模型包括分类、回来、聚类和降维等专门多有效的工具。

•Statsmodels用于统计建模。statsmodels是一个Python模块,承诺用户探究数

据,估量统计模型,并进行统计检验。一个广泛的描述性统计,统计检验的列表。

绘图功能,和结果统计可用于不同类型的数据和每个估量。

・Seaborn用于统计数据的可视化。Seaborn是Python中用来绘制让人喜爱的并能

提供大量信息的统计图形库。它是基于matplotlib.Seaborn旨在使可视化成为探

究和明白得数据的核心部分。

・Bokeh创建交互式图、外表盘和现代Web扫瞄器上的数据应用。它承诺用户生成

的文雅和简洁的d3.js风格的图形。此外,在专门大的或流媒体数据集上,它具有

高性能的交互性的能力。

・Blaze扩展NumPy和Pandas的分布式和流媒体数据集。它能够用来访问来自多

种来源的数据,包括bcolz,MongoDB,SQLAIchemy,ApacheSpark,PyTables

等等,结合Bokeh,Blaze能够作为一个专门强大的工具,用于对大规模数据创建

高效的的可视化和外表板。

・Scrapy用于网络爬虫。它是用于猎取特定数据模式的一个专门有用的框架它能

够通过开始的一个网站主页的网址,然后通过挖掘网页内的网站收集信息。

・SymPy用于符号运算。它具有广泛的功能,从差不多的符号运算到微积分,代数,

离散数学和量子物理学。另一个有用的功能是将运算的结果格式化为LaTeX码的能

力。

・Requests用于访问网络。它的工作原理类似于Python标准库urllib2,然而更容

易编码。但关于初学者,你会发觉和urllib2细微的差别,Requests可能更方便。

其它的库,你可能需要:

・os用于操作系统文件操作

•networkx和igraph基于数据操作绘制图形

•regularexpressions用于在文本数据中查找模式

・BeautifulSoup将探究Web,它不如Scrapy,它一次运行将从一个单一的网页中

提取信息。

现在我们差不多熟悉Python的基础和更多的库,让我们深入到通过

Python解决问题。是的,我的意思是做一个推测模型!在那个过程中,

我们使用了一些强大的库,也遇到了下一级的数据结构。我们将带你通

过这3个关键时期:

1.数据探究一从我们所拥有的数据中发觉更多

2.数据修改一清理数据和并修改它使它更适合用来统计建模

3.推测建模一运行的实际算法,自得其乐

3.在Python中使用Pandas迸行探干脆分析

为了进一步探究我们的数据,让我把你介绍给另一种动物〔看起来

Python是不够的!)—Pandas

Pandas是Python最有用的一种数据分析库的我明白这些名字听起

来专门惊奇,但坚持下去!〕它们关于增加一直在增加Python在数据

科学界的使用量起了专门大的作用。我们现在将使用Pandas从

AnalyticsVidhya的竞赛中读数据集,进行探干脆分析,建立我们的第

一个差不多分类算法来解决这一问题。

在加载数据之前,让我们了解Pandas中的2个关键的数据结构

序列和数据框

序列和数据框的简介

序列能够被明白得为一个1维标记/索引数组。你能够通过这些标签

访问那个序列的各个元素。

一个数据框类似于Excel工作簿-你能够使用列名来引用列,能够通过

行号来访问行数据,本质的区别是,在数据帧中,列名和行号是列和行

的索引。

More:10MinutestoPandas

实践数据集—贷款推测问题

您能够从那个地点下载数据集。那个地点是变量的描述:

VARIABLEDESCRIPTIONS:

VariableDescription

Loan_IDUniqueLoanID

GenderMale/Female

MarriedApplicantmarried(Y/N)

DependentsNumberofdependents

EducationApplicantEducation(Graduate/UnderGraduate)

Self_EmployedSelfemployed(Y/N)

ApplicantincomeApplicantincome

CoapplicantIncomeCoapplicantincome

1,.LoanAmountLoanamountinthousands

iLoan_Amount_TermTermofloaninmonths

1Credit_Historycredithistorymeetsguidelines

IProperty_AreaUrban/SemiUrban/Rural

■Loan_StatusLoanapproved(Y/N)

让我们从数据探究开始

开始,通过在你的你的终端/Windows命令提示符键入下面的代码,

来以InlinePylab模式启动IPython界面:

ipythonnotebook--pylab=inline

这在PyLab环境下打开IPythonnotebook,其中有几个有用的库差

不多导入。此外,你将能够绘制您的数据内联,这关于互动的数据分析

是一个专门好的环境。你能够通过键入以下命令,检查环境是否正确的

加载了〔并获得如以下图所示的输出〕:

plot(arange(5))

我目前在Linux上工作,并已将数据集储备在以下位置:

/home/kunal/Downloads/Loan_Prediction/train.csv

导入库和数据集:

下面是我们将在本教程中使用的库:

•numpy

•matplotlib

•pandas

请注意,你不需要导入matplotlib和NumPy,因为是在PyLab环

境下。但我仍旧在代码中保留了它们,以防你在不同的环境中使用代码。

导入库以后,你能够使用read_csv()函数读数据集。这是直到那个时

期的代码:

importpandasaspd

importnumpyasnp

importmatplotlibaspit

df=pd.read_csv(M/home/kunal/Downloads/Loan_Prediction/train.csvM)#Reading

thedatasetinadatafnameusingPandas

快速数据探究

一旦你读取了数据,能够通过使用head。函数查看一下前几行的数

据:

df.head(10)

In(3]:df.head(10)^Printingfirst10rowsofdataset

Out[3]:Loan-lDGenderMarriedDependentsEducationSelf-EmployedApplicantincomeCo;

0LP001002MaleNo0GraduateNo58490

1LP001003MaleYes1GraduateNo458315C

2LP001005Male0GraduateYes30000

Not

3LP001006MaleYes0No2583235

Graduate

4LP001008MaleNo0GraduateNo60000

5LP001011MaleYes2GraduateYes541741S

Not

6LP001013MaleYes0No2333151

Graduate

7LP001014Male3+GraduateNo303625C

8LP001018MateYes2GraduateNo4006152

9LP001020Male一.1GraduateNo1284110S

这应该打印10行。或者,您也能够通过打印数据集来查看更多的行。

接下来,你能够使用describe。函数来查看数值字段的概要:

df.describe()

In[4]:df.describe()#6etsummaryofnumericaLvariabLe^

Out[4]:ApplicantincomeCoapplicantincomeLoanAmountLoan_Amount_Term

count614.000000614000000592.000000600.00000

mean5403.4592831621.245798146.412162342.00000

std6109.0416732926.24836985,58732565,12041

min150.0000000.0000009.00000012,00000

25%2877.5000000.000000100.000000360.00000

50%3812.5000001188.500000128.000000360.00000

75%57950000002297.25000016800000036000000

max81000.00000041667.000000700.000000480.00000

describe。功能将提供计数、平均、标准差〔STD〕,最小值,分位

数值和最大值〔读这篇文章来更新差不多统计数据了解人口分布〕

那个地点有几个结论,你能够通过查看describe。函数的输出得出:

1.LoanAmount有(614-592)22个缺失值

2.Loan_Amount_Term有(614-600)14个缺失值

3.Credit_HistoryW(614-564)50个缺失值

4.我们还能够看到84%的申请者有credit_history,如何样,credit_history的均值

为0.84〔记住,credit_history将那些有信用历史的值设置为1,没有的设置为0]

5.Applicantincome的分布看起来和expectation呈线性关系,

Coapplicantincome也是。

请注意,我们通过比较的平均值和中位数,即50%位数,来得到偏差

的概念。

关于非数值〔例如property_area,credit_history等〕,我们能够

看看频率分布,了解他们是否有意义。频率表能够通过以下命令打印:

df[1Property_Area'].value_counts()

同样地,我们能够看看信用卡历史的唯独值。注意,dfname

["column_name]是一个差不多的索引技术,来访问一个数据框的特

定的列。它也能够是列的列表。想要了解更多信息,参考上面的

“Pandas10分钟教程”的资源共享。

分布分析

现在我们熟悉了差不多的数据特点,让我们研究不同变量的分布情

形。让我们从数字变量开始-即applicantincome和LoanAmount

我们通过绘制applicantincome的直方图开始,使用下面的命令:

df['Property-Area*].value_counts()

在那个地点,我们观看到,有几个极端值。这也是分箱值为50的缘

故,确实是为了清晰地描述它的分布。

下一步,我们看箱线图,了解分布。fare的箱图能够使用下面代码绘

制:

df.boxplot(column="Applicantincome')

90000

80000

70000

60000

50000

40000丰

+

30000

20000

100001

0j

Applicantincome

这证实了大量的离群值/极值的存在。这能够归因于社会上的收入差

距。部分缘故源于如此一个事实:我们正在查看不同的教育水平的人。

让我们依照他们所受的教育进行分组:

df.boxplot(column=*Applicantincome'by='Education*)

我们能够看到,研究生和非毕业生的平均收入之间没有实质性的区

别。然而毕业生中高收入的人群更多,它们显现在专门值的点中。

现在,让我们使用下面的命令看看LoanAmount的直方图和箱线图:

再次,有一些专门的值。B月显,applicantincome和LoanAmount

都需要进行一定的数据处理。LoanAmount有一些缺失值以及一些专

门的值,而applicantincome有一些专门值,需要更深入的了解。我

们将在立即到来的部分完成这些。

分类变量的分析

现在我们了解了applicantincome和loanincome的分布,让我们

了解更多关于分类变量的细节。我们将使用Excel数据透视表和交叉制

表的风格。例如,让我们看看基于信用记录,能够获得贷款的可能性。

这能够在微软的Excel上使用一个透视表实现:

PivotTableFields

Choosefieldstoaddtoreport:

Dragfieldsbetweenareasbelow:

TRLTERSIlliCOLUMNS

=ROWS工VALUES

Credit_History▼AverageofLoan_...▼

注:那个地点的贷款状况已被编码,使用1代表yes,而0代表no,

因此,因此均值代表了获得贷款的概率。

现在我们将看看使用Python产生类似的成效所需要的步骤。请参考

这篇文章,以使用Pandas获得不同的数据操纵技术。

tempi=df['Credit_History*].value_counts(ascending=True)

temp2=df,pivot_table(values='Loan_Status',index=['Credit_History*],aggfunc

lambdax:x.map({.mean())

print'FrequencyTableforCreditHistory:'

printtempi

print,\nProbilityofgettingloanforeachCreditHistoryclass:

printtemp2

FrequencyTableforCreditHistory:

089

1475

Name:Credit_History,dtype:int64

ProbilityofgettingloanforeachCreditHistoryclass:

Credit_History

0078652

10.795789

Name:Loan_Status,dtype:float64

现在我们能够观看到,我们得到一个像微软的的

Excelpivot_tableo

这能够使用matplotlib库绘制成条形图,使用下面的代码:

importmatplotlib.pyplotaspit

fig=pit.figure(figsize=(8,4))

axl=fig.add_subplot(121)

axl.set_xlabel(*Credit__History*)

axl.set_ylabel(*CountofApplicants')

axl.set_title(MApplicantsbyCredit_HistoryM)

tempi.plot(kind='bar')

ax2=fig.add_subplot(122)

temp2.plot(kind=*bar')

ax2.set_xlabel(*Credit_History')

ax2.set__ylabel(1Probabilityofgettingloan*)

ax2.set_title(MProbabilityofgettingloanbycredithistory1')

ApplicantsbyCreditHistoryloanbycredithistory

7

c。

os

SI-6

o

H306

uU

?205

-10o-£6

d

d(

qD64

jJ

o

O0.。

lo

u3

n2?三

o

oqo

e2

ooq

」6

d1

00

oQo

r-1oi-i

CreditHistoryCreditHistory

这说明,假如申请人有一个有效的信用记录,获得贷款的机会是没有

信用记录的人的八倍。你能够依照Married,Self-Employed,

Property_Area等绘制类似的图。

或着,这两个图能够进行组合以后的可视化,使用堆叠图表示:

temp3=pd.crosstab(df[*Credit_History*],df[,Loan_Status*])

1

temp3.plot(kind='bar',stacked=True.»color=['red'9blue*],grid=False)

QeditHistoiy

你还能够再上图中加入性别变量〔类似于Excel中的数据透视表〕

(?H(

B

00

01

U.-)0)

O1

))

Credit_History,Gender

假如你还没有意识到,我们刚刚在那个地点创建了两个差不多的分类

算法,一个基于信用历史,而另一个基于2个分类变量〔包括性别〕。

你能够在AVDatahacks上专门快的编写代码来创建首次提交。

我们只看到我们如何使用Python中的Pandas做探干脆分析。我期

望你对大熊猫〔动物〕的爱现在增加了——给予一些关心,那个库能够

为你提供分析数据集。

接下来让我们进一步探讨叩plicantincome和loanstatus变量,进

行数据修改和创建一个数据集并应用各种建模技术。我强烈要求你采纳

另一个数据集和习题,并在进一步阅读之前完成一个独立的例子。

在Python中使用Pandas进行数据再加工

4.数据修改阖新的需要

关于那些一直跟下来的人来说,这时你必须穿上鞋才能开始跑。

在我们的探究数据期间,我们发觉了数据集的一些问题,在数据预备

好建立一个好的模型之前需要解决。那个练习通常被称为''数据修

改”。那个地点是问题,我们差不多意识到的:

1.在一些变量中有缺失值。我们应该基于丢失的值的数量明智地估量这些值并评估该

变量的重要性。

2.当我们查看数据的分布时,我们看到,applicantincome和LoanAmount看起来

在两端都含有极端值。尽管他们可能有直观的感受,但应适当处理。

除了数值领域的这些问题,我们也应该看看非数值领域Gender,

Property_Area,Married,Education和Dependents这些变量,看

看它们是否包含任何有用的信息。

假如你是Pandas的新手,我建议在连续前进之前阅读这篇文章。它

详细介绍了一些有用的数据处理技术。

检查数据集中的缺失值

让我们看看所有的变量中的缺失值,因为大多数模型不能处理有缺失

值的数据,即使他们能够,输入它们往往不能关心更多。因此,让我们

看看数据集中空值/NAN值的数量:

df.apply(lambdax:sum(x.isnull())^3x15=0)

那个命令告诉我们每一列中缺失值的数量,因为假如值为缺失值

返回

isnull()lo

In[14]:df.apply(lambdax:sum(x.isnull())^axis=0)

Out[14]:Loan_ID0

Gender13

Married3

Dependents15

Education0

Self__Employed32

ApplicantIncome0

Coapplicantincome0

LoanAmount22

Loan__Amount_Term14

Credit_History50

Property_Area0

Loan_Status0

dtype:int64

尽管缺失值数量不是专门多,但许多变量都有缺失值,它们中的每一

个都应该被估量和补充。通过这篇文章对不同的插值技术进行详细了

解。

注记住,缺失值可能并不总是NaN。例如,假如loan_amount_term

是0,它是有意义的或者你认为是缺失的?我想你的答案是缺失的,你

是对的。因此我们应该检查那些不切实际的值。

如何填补LoanAmount的缺失值?

有许多方法来填补价值贷款金额的缺失值,最简单的确实是使用均值

来替换,能够通过以下代码实现:

另一个极端是能够建立一个监督学习模型来基于其他变量推测贷款金

额,然后使用年龄以及其他变量来推测。

既然,现在的目标是讲述数据修改的步骤,我宁愿采取一种方法,它

介于这2个极端方法之间。一个关键的假设是,一个人是否受教育的或

是否自雇人士能够结合起来,提供一个专门好的贷款金额的估量。

第一,让我们看看箱线图看是否有某种趋势存在:

[Education,SelfEmployed]

因此我们看到在每一组中贷款金额的中位数的一些变化而这能够用

来估量值。但第一,我们必须确保每个self_employed和Education

变量不应该有缺失值。

如我们先前所说,self_employed有缺失值。让我们看看频率表:

In[40]:df[,Self_Employed'].value_counts

Out[40]:No500

Yes82

Name:Self_Employed?dtype:int64

因为~86%的值是、'N。",将缺失值估量为''No”是比较可靠的,

有专门高的成功概率。这能够用下面的代码来完成:

df['Self_Employed1].fillna('No'jinplace=True)

现在,我们将创建一个数据透视表,它提供了我们所有Education和

self_employed变量的唯独值分组的中位数。接下来,我们定义了一个

函数,它返回这些单元格的值,并应用它来填充丢失的贷款金额的值:

table=df.pivot_table(values='LoanAmount',index='Self_Employed1,columns=*E

ducation*,aggfunc=np.median)

#Definefunctiontoreturnvalue

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论