1 / 46
文档名称:

python数据分析.pdf

格式:pdf   大小:3,773KB   页数:46页
下载后只包含 1 个 PDF 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

python数据分析.pdf

上传人:小sjj 2022/12/2 文件大小:3.68 MB

下载得到文件列表

python数据分析.pdf

文档介绍

文档介绍:该【python数据分析 】是由【小sjj】上传分享,文档一共【46】页,该文档可以免费在线阅读,需要了解更多关于【python数据分析 】的内容,可以使用淘豆网的站内搜索功能,选择自己适合的文档,以下文字是截取该文章内的部分文字,如需要获得完整电子版,请下载此文档到您的设备,方便您编辑和打印。:.
python数据分析(pandas)
几年后发生了。在使用SAS工作超过5年后,我决定走出自己的舒适
区。作为一个数据科学家,我寻找其他有用的工具的旅程开始了!幸
运的是,没过多久我就决定,Python作为我的开胃菜。
我总是有一个编写代码的倾向。这次我做的是我真正喜欢的。代
码。原来,写代码是如此容易!
我一周内学会了Python基础。并且,从那时起,我不仅深度探索了
这门语言,而且也帮助了许多人学习这门语言。Python是一种通用语
言。但是,多年来,具有强大的社区支持,这一语言已经有了专门的
数据分析和预测模型库。
由于Python缺乏数据科学的资源,我决定写这篇教程来帮助别人更
快地学习Python。在本教程中,我们将讲授一点关于如何使用
Python进行数据分析的信息,咀嚼它,直到我们觉得舒适并可以自己
去实践。:.
目录

o为什么学Python用来数据分析

o怎样安装Python
o在Python上运行一些简单程序

oPython的数据结构
oPython的迭代和条件结构
oPython库
:.
o序列和数据框的简介
o分析Vidhya数据集——贷款的预测问题


o逻辑回归
o决策树
o随机森林
让我们开始吧

为什么学Python用来数据分析
很多人都有兴趣选择Python作为数据分析语言。这一段时间以来,
我有比较过SAS和R。这里有一些原因来支持学习Python:
•开源——免费安装
•极好的在线社区
•很容易学习
•可以成为一种通用的语言,用于基于Web的分析产品数据科学和生产中。:.
不用说,它仍然有几个缺点:
•它是一种解释性的语言,而不是编译的语言,因此可能占用更多的CPU时间。然
而,由于它节省了程序员的时间(由于学习的方便),它可能仍然是一个很好的选
择。

这是关于Python的一个最具争议的话题。你可能总是不能避免遇
到,尤其是如果你是一个初学者。这里没有正确/错误的选择。它完全
取决于具体情况和你的需要。我会尝试给你一些建议,以帮助你做出
明智的选择。

!这是你在初期需要的东西。Python2发行于2000年末,已经
被使用超过15年。
!,但仍然有大量的模块只工作在
。如果你计划将Python用于具体的应用,如Web开发这种高度依赖外
部模块的,。
,。

!Python开发者修正了一些固有的问题和小缺点,以此为未来建立
一个强大的基础。这些可能不是很相关,但最终会很重要。:.
!,
本。Python3在过去5年已经发布的稳定版本,并将继续。
没有明确的赢家,但我想,底线是,你应该专注于学习Python语
言。版本之间的转换应该只是一个时间问题。敬请期待,不久的将来
!
怎样安装Python
有两种方法安装Python
•你可以直接从项目网站下载Python,然后单独安装你想要的组件和库
•或者,你可以下载并安装一个包,它附带了预装的库。我建议您下载Anaconda。
另一种选择是EnthoughtCanopyExpress。
第二种方法提供了一个避免麻烦的安装,因此我会推荐给初学者。这
种方法是你必须等待整个包进行升级,即使你只是对一个单一的库
的最新版本感兴趣。它应该不重要,直到和除非,直到和除非,你正
在做的尖端统计研究。
选择开发环境
一旦你已经安装了Python,选择环境可以有很多种选择。这里是3
个最常见的选择:
•终端/基于Shell:.
•IDLE(默认环境)
•iPythonnotebook——类似于R的markdown
而环境权取决于你的需要,我个人更喜欢iPythonnotebook一
点。它提供了许多良好的功能,编写代码的同时还可以用于记录,你
可以选择在上面运行代码块(而不是一行一行的执行)。
我们在整个教程中将使用Ipython环境
热身:跑第一个Python程序
你可以使用Python作为一个简单的计算器来开始::.
有一些事情需要注意:
•你可以在你的终端/CMD键入“IPythonnotebook”来启动IPython
notebook,这取决于你的工作在操作系统
•你可以通过简单地点击上面截图中的名字来对IPythonnotebook命名
•界面显示In[*]代表输入和Out[*]代表输出。
•你可以通过按“Shift+Enter”或“ALT+Enter”来执行代码,如果你后面还想
插入一行。
在我们深入挖掘如何解决问题之前,让我们退后一步,了解Python
的基本知识。当我们知道数据结构和迭代和条件结构是形成任何语言:.
的关键。在Python中,这些包括列表、字符串、元组、字典、for循
环,while循环,if-else等等,让我们来看看下面的因素。

Python的数据结构
以下是Python中使用的一些数据结构。你应该熟悉他们,以便恰当
的使用它们。
•列表——列表是在Python中最通用的数据结构。列表可以这样简单的定义:就是
在方括号中一系列用逗号来分隔的值。列表可能包含不同类型的项,但它们通常都
有相同类型的。Python列表是可变的,列表中的单个元素是可以改变的。
这里是一个快速的例子,定义了一个列表,然后访问它::.
•字符串——字符串可以简单的使用单引号(")、双引号(”)或三引号
(’’’)来定义。字符串封闭三引号(’’’)中可以跨越多行的代码,在文档
字符串中是很常用的(记录功能的Python方式)。作为一个转义字符。请注意,
Python中的字符串是不可变的,所以你不能改变字符串的部分。:.
•元组——元组由一系列由逗号分隔的值表示。元组是不可变的,输出的用括号包
围,目的是嵌套结构可以被正确处理。此外,尽管元组是不可变的,但它们可以在
必要是含有可变数据。
因为元组是不可变的,不可改变的,他们相对列表来说可以处理的
更快。因此,如果你的清单是不可能改变的,你应该使用元组,而不
是列表。:.
•字典——字典是键:值对一个无序集合,要求键是唯一的(在一个字典里)。一
对大括号创建一个空的字典:{}。:.
Python的迭代和条件结构
和大多数语言一样,Python也有一个FOR循环,这是最广泛使用
的迭代方法。它有一个简单的语法:
这里的“Python的迭代可以是列表、元组或其他先进的数据结构,
我们将在后面的章节中探讨。让我们来看看一个简单的例子,确定一
个数字的因子。
来看看条件语句,它们是用来基于条件执行代码片段。最常用的结
构是if-else,有以下语法::.
例如,如果我们想打印出某个数字n是偶数还是奇数:
既然你熟悉了Python的基础,我们来更近一步。如果你像完成以下
任务:





如果你想从零开始写代码,它将是一场噩梦,你使用Python不会超
过2天!但不要担心这些。值得庆幸的是,有许多预定义的库,我们
可以直接导入到我们的代码,使我们的生活很容易。
例如,考虑我们刚才看到的因子的例子。我们可以一步就完成::.
当然,为了这样我们需要导入的math库。让我们探索下一个不同
的库。
Python库
在开始我们的学习Python之旅之前,让我们先一步,了解一些有用
的python库。第一步显然是要学会将它们导入到我们的环境中。在
Python中有以下几种方法:
在第一种方式中,我们已经为math库定义了一个别名m。现在我
们可以使用数学库的各种功能(例如阶乘,通过引用别名
())。
第二方式,你需要导入math的整个命名空间,你可以直接使用
factorial(),而不用提到math。
提示:谷歌推荐您使用第一种方式导入库,因为您将知道函数来自何
处。
下面是一个库列表,你将在任何科学计算和数据分析中用到::.
•NumPy代表数值Python。NumPy最强大的功能是n维数组。该库还包含基本
的线性代数函数,傅里叶变换,高级的随机数功能,以及集成其他低级语言如
Fortran,C和C++的工具。
•SciPy代表科学的Python。SciPy是基于NumPy的。它是最有用的库之一,具
有各种高层次的科学和工程模块,如离散傅立叶变换,线性代数,优化和稀疏矩
阵。
•Matplotlib用于绘制各种各样的图表,从直方图到线图,再到热图。你可以在
IPythonnotebook中使用PyLab(IPythonnotebook–PyLab=inline)以此使
用这些绘图功能的inline。如果你忽略inline选项,PyLab会将IPython
notebook环境转换成类似于Matlab的环境。你也可以使用Latex命令将math
库添加到您的绘图中。
•Pandas对于结构化数据操作和控制。它广泛用于数据再加工和数据准备。
Pandas说最近一直在推动对PythonPython的使用数据科学家共同体的工具。
•ScikitLearn机器学习库。建立在NumPy、SciPy和matplotlib的基础上,这个
库包含了机器学习和统计模型包括分类、回归、聚类和降维等很多有效的工具。
•Statsmodels用于统计建模。statsmodels是一个Python模块,允许用户探索
数据,估计统计模型,并进行统计检验。一个广泛的描述性统计,统计检验的列
表。绘图功能,和结果统计可用于不同类型的数据和每个估计。:.
•Seaborn用于统计数据的可视化。Seaborn是Python中用来绘制让人喜欢的并
能提供大量信息的统计图形库。它是基于matplotlib。Seaborn旨在使可视化成
为探索和理解数据的核心部分。
•Bokeh创建交互式图、仪表盘和现代Web浏览器上的数据应用。它允许用户生
。此外,在非常大的或流媒体数据集上,它具
有高性能的交互性的能力。
•Blaze扩展NumPy和Pandas的分布式和流媒体数据集。它可以用来访问来自多
种来源的数据,包括bcolz,MongoDB,SQLAlchemy,ApacheSpark,
PyTables等等,结合Bokeh,Blaze可以作为一个非常强大的工具,用于对大规
模数据创建高效的的可视化和仪表板。
•Scrapy用于网络爬虫。它是用于获取特定数据模式的一个非常有用的框架,。它
可以通过开始的一个网站主页的网址,然后通过挖掘网页内的网站收集信息。
•SymPy用于符号计算。它具有广泛的功能,从基本的符号运算到微积分,代数,
离散数学和量子物理学。另一个有用的功能是将计算的结果格式化为LaTeX码的
能力。
•Requests用于访问网络。它的工作原理类似于Python标准库urllib2,但是更容
易编码。但对于初学者,你会发现和urllib2细微的差别,Requests可能更方便。
其它的库,你可能需要:
•os用于操作系统和文件操作:.
•networkx和igraph基于数据操作绘制图形
•regularexpressions用于在文本数据中查找模式
•BeautifulSoup将探索Web。它不如Scrapy,它一次运行将从一个单一的网页
中提取信息。
现在我们已经熟悉Python的基础和更多的库,让我们深入到通过
Python解决问题。是的,我的意思是做一个预测模型!在这个过程
中,我们使用了一些强大的库,也遇到了下一级的数据结构。我们将
带你通过这3个关键阶段:
—从我们所拥有的数据中发现更多
—清理数据和并修改它使它更适合用来统计建模
—运行的实际算法,自得其乐

为了进一步探索我们的数据,让我把你介绍给另一种动物(好像
Python是不够的!)––Pandas:.
Pandas是Python最有用的一种数据分析库的我知道这些名字听起
来很奇怪,但坚持下去!)它们对于增加一直在增加Python在数据
科学界的使用量起了很大的作用。我们现在将使用Pandas从
AnalyticsVidhya的竞赛中读数据集,进行探索性分析,建立我们的
第一个基本分类算法来解决这一问题。
在加载数据之前,让我们了解Pandas中的2个关键的数据结构—
—序列和数据框
序列和数据框的简介
序列可以被理解为一个1维标记/索引数组。你可以通过这些标签访
问这个序列的各个元素。
一个数据框类似于Excel工作簿–你可以使用列名来引用列,可以通
过行号来访问行数据,本质的区别是,在数据帧中,列名和行号是列
和行的索引。
More:10MinutestoPandas
实践数据集——贷款预测问题:.
您可以从这里下载数据集。这里是变量的描述:
让我们从数据探索开始
开始,通过在你的你的终端/Windows命令提示符键入下面的代
码,来以InlinePylab模式启动IPython界面:
这在PyLab环境下打开IPythonnotebook,其中有几个有用的库
已经导入。此外,你将能够绘制您的数据内联,这对于互动的数据分:.
析是一个非常好的环境。你可以通过键入以下命令,检查环境是否正
确的加载了(并获得如下图所示的输出):
plot(arange(5))
我目前在Linux上工作,并已将数据集存储在以下位置:
/home/kunal/Downloads/Loan_Prediction/
导入库和数据集:
下面是我们将在本教程中使用的库:
•numpy
•matplotlib
•pandas
请注意,你不需要导入matplotlib和NumPy,因为是在PyLab环
境下。但我仍然在代码中保留了它们,以防你在不同的环境中使用代
码。:.
导入库以后,你可以使用read_csv()函数读数据集。这是直到这个
阶段的代码:
快速数据探索
一旦你读取了数据,可以通过使用head()函数查看一下前几行的数
据::.
这应该打印10行。或者,您也可以通过打印数据集来查看更多的
行。
接下来,你可以使用describe()函数来查看数值字段的概要:
:.
describe()功能将提供计数、平均、标准差(STD),最小值,分位
数值和最大值(读这篇文章来更新基本统计数据了解人口分布)
这里有几个结论,你可以通过查看describe()函数的输出得出:
(614–592)22个缺失值
(614–600)14个缺失值
(614–564)50个缺失值
%的申请者有credit_history,怎么样,credit_history的均
(记住,credit_history将那些有信用历史的值设置为1,没有的设置为
0)
,CoapplicantIncome
也是。:.
请注意,我们通过比较的平均值和中位数,即50%位数,来得到偏
差的概念。
对于非数值(例如property_area,credit_history等),我们可以
看看频率分布,了解他们是否有意义。频率表可以通过以下命令打
印:
同样地,我们可以看看信用卡历史的唯一值。注意,dfname
["column_name]是一个基本的索引技术,来访问一个数据框的特定
的列。它也可以是列的列表。想要了解更多信息,参考上面的
“Pandas10分钟教程”的资源共享。
分布分析
现在我们熟悉了基本的数据特征,让我们研究不同变量的分布情
况。让我们从数字变量开始–即applicantincome和LoanAmount
我们通过绘制applicantincome的直方图开始,使用下面的命令:
:.
在这里,我们观察到,有几个极端值。这也是分箱值为50的原因,
就是为了清楚地描述它的分布。
下一步,我们看箱线图,了解分布。fare的箱图可以使用下面代码
绘制:
:.
这证实了大量的离群值/极值的存在。这可以归因于社会上的收入差
距。部分原因源于这样一个事实:我们正在查看不同的教育水平的
人。让我们根据他们所受的教育进行分组:
我们可以看到,研究生和非毕业生的平均收入之间没有实质性的区
别。但是毕业生中高收入的人群更多,它们出现在异常值的点中。
现在,让我们使用下面的命令看看LoanAmount的直方图和箱线
图:
再次,有一些异常的值。显然,applicantincome和LoanAmount
都需要进行一定的数据处理。LoanAmount有一些缺失值以及一些
异常的值,而applicantincome有一些异常值,需要更深入的了解。
我们将在即将到来的部分完成这些。:.
分类变量的分析
现在我们了解了applicantincome和loanincome的分布,让我们
了解更多关于分类变量的细节。我们将使用Excel数据透视表和交叉
制表的风格。例如,让我们看看基于信用记录,可以获得贷款的可能
性。这可以在微软的Excel上使用一个透视表实现:
注:这里的贷款状况已被编码,使用1代表yes,而0代表no,因
此,所以均值代表了获得贷款的概率。
现在我们将看看使用Python产生类似的效果所需要的步骤。请参考
这篇文章,以使用Pandas获得不同的数据操纵技术。
:.
现在我们可以观察到,我们得到一个像微软的Excel的
pivot_table。这可以使用matplotlib库绘制成条形图,使用下面的代
码::.
这表明,如果申请人有一个有效的信用记录,获得贷款的机会是没
有信用记录的人的八倍。你可以根据Married,Self-Employed,
Property_Area等绘制类似的图。
或着,这两个图可以进行组合以后的可视化,使用堆叠图表示::.
你还可以再上图中加入性别变量(类似于Excel中的数据透视表)
如果你还没有意识到,我们刚刚在这里创建了两个基本的分类算:.
法,一个基于信用历史,而另一个基于2个分类变量(包括性别)。
你可以在AVDatahacks上很快的编写代码来创建首次提交。
我们只看到我们如何使用Python中的Pandas做探索性分析。我希
望你对大熊猫(动物)的爱现在增加了——给予一些帮助,这个库可
以为你提供分析数据集。
接下来让我们进一步探讨applicantincome和loanstatus变量,进
行数据修改和创建一个数据集并应用各种建模技术。我强烈要求你采
用另一个数据集和习题,并在进一步阅读之前完成一个独立的例子。
在Python中使用Pandas进行数据再加工
–翻新的需要
对于那些一直跟下来的人来说,这时你必须穿上鞋才能开始跑。
在我们的探索数据期间,我们发现了数据集的一些问题,在数据准
备好建立一个好的模型之前需要解决。这个练习通常被称为“数据修
改”。这里是问题,我们已经意识到的:
。我们应该基于丢失的值的数量明智地估计这些值并评估该
变量的重要性。
,我们看到,applicantincome和LoanAmount似乎在
两端都含有极端值。虽然他们可能有直观的感觉,但应适当处理。:.
除了数值领域的这些问题,我们也应该看看非数值领域Gender,
Property_Area,Married,Education和Dependents这些变量,
看看它们是否包含任何有用的信息。
如果你是Pandas的新手,我建议在继续前进之前阅读这篇文章。它
详细介绍了一些有用的数据处理技术。
检查数据集中的缺失值
让我们看看所有的变量中的缺失值,因为大多数模型不能处理有缺
失值的数据,即使他们可以,输入它们往往不能帮助更多。所以,让
我们看看数据集中空值/NAN值的数量:
这个命令告诉我们每一列中缺失值的数量,因为如果值为缺失值
isnull()返回1。:.
虽然缺失值数量不是很多,但许多变量都有缺失值,它们中的每一
个都应该被估计和补充。通过这篇文章对不同的插值技术进行详细了
解。
注:记住,缺失值可能并不总是NaN。例如,如果
loan_amount_term是0,它是有意义的或者你认为是缺失的?我想
你的答案是缺失的,你是对的。所以我们应该检查那些不切实际的
值。
如何填补LoanAmount的缺失值?
有许多方法来填补价值贷款金额的缺失值,最简单的就是使用均值
来替换,可以通过以下代码实现:
另一个极端是可以建立一个监督学习模型来基于其他变量预测贷款金
额,然后使用年龄以及其他变量来预测。:.
既然,现在的目标是讲述数据修改的步骤,我宁愿采取一种方法,
它介于这2个极端方法之间。一个关键的假设是,一个人是否受教育
的或是否自雇人士可以结合起来,提供一个很好的贷款金额的估计。
首先,让我们看看箱线图看是否有某种趋势存在:
因此我们看到在每一组中贷款金额的中位数的一些变化而这可以用
来估计值。但首先,我们必须确保每个self_employed和Education
变量不应该有缺失值。
如我们先前所说,self_employed有缺失值。让我们看看频率表::.
因为~86%的值是“No”,将缺失值估计为“No”是比较可靠
的,有很高的成功概率。这可以用下面的代码来完成:
现在,我们将创建一个数据透视表,它提供了我们所有Education
和self_employed变量的唯一值分组的中位数。接下来,我们定义了
一个函数,它返回这些单元格的值,并应用它来填充丢失的贷款金额
的值:
这应该给你提供了一个估计贷款金额的缺失值好方法。:.
如何处理在LoanAmount和applicantincome分布中的极
值?
让我们先分析LoanAmount。由于极端值可能是现实的的,即一些
人可能会由于特定的需求,申请高额的贷款,。所以,不把它们当做
离群点对待,让我们尝试对数据转换从而发挥它们的作用:
再看直方图:
现在的分布看起来更接近标准的,极端值的影响已经显着消退。
来看看applicantincome。一种直觉可以是一些申请人有较低的收
入,但有一个有力的支持,共同申请者。所以将两者的收入结合起来
作为总收入可能是一个好主意,并采取相同的对数变

最近更新

2025年伊犁职业技术学院单招职业适应性测试题.. 61页

2025年保定幼儿师范高等专科学校单招职业倾向.. 61页

2025年保定幼儿师范高等专科学校单招职业适应.. 65页

2025年第一次滑雪小学作文篇 11页

2025年四年级数学下册《乘法分配律》教案 8页

2025年保定电力职业技术学院单招职业技能测试.. 62页

2025年保定电力职业技术学院单招职业适应性测.. 63页

2025年保定职业技术学院单招职业适应性测试题.. 62页

2025年保险职业学院单招职业倾向性测试题库及.. 61页

2025年第一天军训日记三篇 3页

2025年第一声喝彩阅读及阅读答题答案 3页

电商视觉色彩赏析 12页

2025年信阳涉外职业技术学院单招职业倾向性测.. 62页

2025年信阳涉外职业技术学院单招职业技能测试.. 62页

2025年信阳涉外职业技术学院单招职业适应性测.. 61页

2025年信阳职业技术学院单招职业倾向性测试题.. 64页

2025年信阳职业技术学院单招职业倾向性测试题.. 61页

2025年信阳职业技术学院单招职业适应性测试题.. 60页

2025年四川高三语文单招考试模拟试卷(含答案).. 18页

2025年信阳艺术职业学院单招职业技能测试题库.. 62页

2025年端午节的日记(精选28篇) 17页

2025年轴承钢项目建议书 65页

2025年江西信息应用职业技术学院单招职业适应.. 127页

2025年九江职业大学单招职业技能测试题库及参.. 125页

2025年南通科技职业学院单招职业技能测试题库.. 65页

2025年社区网格员招录考试真题库有答案 188页

法学专业毕业论文 6页

中国航信标准数据格式 47页

保护出口压板电压测量风险控制与方法 4页

水玻璃施工方案(共11页) 11页