python数据分析.docx
- 文档编号:9804169
- 上传时间:2023-05-21
- 格式:DOCX
- 页数:33
- 大小:614.09KB
python数据分析.docx
《python数据分析.docx》由会员分享,可在线阅读,更多相关《python数据分析.docx(33页珍藏版)》请在冰点文库上搜索。
python数据分析
python数据分析(pandas)
几年后发生了。
在利用SAS工作超过5年后,我决定走出自己的舒适区。
作为一个数据科学家,我寻觅其他有效的工具的旅程开始了!
幸运的是,没过量久我就决定,Python作为我的开胃菜。
我老是有一个编写代码的偏向。
这次我做的是我真正喜爱的。
代码。
原先,写代码是如此容易!
我一周内学会了Python基础。
而且,从那时起,我不仅深度探讨了这门语言,而且也帮忙了许多人学习这门语言。
Python是一种通用语言。
可是,连年来,具有壮大的社区支持,这一语言已经有了专门的数据分析和预测模型库。
由于Python缺乏数据科学的资源,我决定写这篇教程来帮忙他人更快地学习Python。
在本教程中,咱们将教学一点关于如何利用Python进行数据分析的信息,咀嚼它,直到咱们感觉舒适并能够自己去实践。
1.数据分析的Python基础
o为何学Python用来数据分析
oPythonv/s
o如何安装Python
o在Python上运行一些简单程序
2.Python的库和数据结构
oPython的数据结构
oPython的迭代和条件结构
oPython库
3.在Python中利用Pandas进行探讨性分析
o序列和数据框的简介
o分析Vidhya数据集——贷款的预测问题
4.在Python中利用Pandas进行数据再加工
5.利用Python中成立预测模型
o逻辑回归
o决策树
o随机丛林
让咱们开始吧
1.数据分析的Python基础
为何学Python用来数据分析
很多人都有爱好选择Python作为数据分析语言。
这一段时刻以来,我有比较过SAS和R。
那个地址有一些缘故来支持学习Python:
开源——免费安装
极好的在线社区
很容易学习
能够成为一种通用的语言,用于基于Web的分析产品数据科学和生产中。
不用说,它仍然有几个缺点:
它是一种说明性的语言,而不是编译的语言,因此可能占用更多的CPU时刻。
可是,由于它节省了程序员的时刻(由于学习的方便),它可能仍然是一个专门好的选择。
Pythonv/s
这是关于Python的一个最具争议的话题。
你可能老是不能幸免碰着,尤其是假设是你是一个初学者。
那个地址没有正确/错误的选择。
它完全取决于具体情形和你的需要。
我会尝试给你一些建议,以帮忙你做出明智的选择。
为何选择Python
1.极好的社区支持!
这是你在初期需要的东西。
Python2发行于2000年末,已经被利用超过15年。
2.很多第三方库!
尽管许多库已经提供了的支持,但仍然有大量的模块只工作在。
假设是你打算将Python用于具体的应 用,如Web开发这种高度依托外部模块的,你选择可能会更好。
3.版本的一些特性有向后兼容性,能够利用版本。
为何选择Python
1.更整齐和更快!
Python开发者修正了一些固有的问题和小缺点,以此为以后成立一个壮大的基础。
这些可能不是很相关,但最终会很重要。
2.这是以后!
是2.X族发布的最后一个版本,而且最终每一个人都要转移到版本。
Python3在过去5年已经发布的稳固版本,并将继续。
没有明确的赢家,但我想,底线是,你应该专注于学习Python语言。
版本之间的转换应该只是一个时刻问题。
敬请期待,不久的以后一个专门对照Python和3X的文章!
如何安装Python
有两种方式安装Python
∙你能够直接从项目网站下载Python,然后单独安装你想要的组件和库
∙或,你能够下载并安装一个包,它附带了预装的库。
我建议您下载Anaconda。
另一种选择是EnthoughtCanopyExpress。
第二种方式提供了一个幸免麻烦的安装,因此我会推荐给初学者。
这种方式是你必需等待整个包进行升级, 即便你只是对一个单一的库的最新版本感爱好。
它应该不重要,直到和除非,直到和除非,你正在做的尖端统计研究。
选择开发环境
一旦你已经安装了Python,选择环境能够有很多种选择。
那个地址是3个最多见的选择:
∙终端/基于Shell
∙IDLE(默许环境)
∙iPythonnotebook——类似于R的markdown
而环境权取决于你的需要,我个人更喜爱iPythonnotebook一点。
它提供了许多良好的功能,编写代码的同时还能够用于记录,你能够选择在上面运行代码块(而不是一行一行的执行)。
咱们在整个教程中将利用Ipython环境
热身:
跑第一个Python程序
你能够利用Python作为一个简单的计算器来开始:
有一些情形需要注意:
∙你能够在你的终端/CMD键入“IPythonnotebook”来启动IPythonnotebook,这取决于你的工作在操作系统
∙你能够通过简单地址击上面截图中的名字来对IPythonnotebook命名
∙界面显示In[*]代表输入和Out[*]代表输出。
∙你能够通过按“Shift+Enter”或“ALT+Enter”来执行代码,假设是你后面还想插入一行。
在咱们深切挖掘如何解决问题之前,让咱们退后一步,了解Python的大体知识。
当咱们明白数据结构和迭代和条件结构是形成任何语言的关键。
在Python中,这些包括列表、字符串、元组、字典、for循环,while循环,if-else等等,让咱们来看看下面的因素。
2.在Python上运行一些简单程序
Python的数据结构
以下是Python中利用的一些数据结构。
你应该熟悉他们,以便适当的利用它们。
∙列表——列表是在Python中最通用的数据结构。
列表能够如此简单的概念:
确实是在方括号中一系列用逗号来分隔的值。
列表可能包括不同类型的项,但它们通常都有相同类型的。
Python列表是可变的,列表中的单个元素是能够改变的。
那个地址是一个快速的例子,概念了一个列表,然后访问它:
∙字符串——字符串能够简单的利用单引号(")、双引号(”)或三引号(’’’)来概念。
字符串封锁三引号(’’’)中能够跨越多行的代码,在文档字符串中是很常常利用的(记录功能的Python方式)。
作为一个转义字符。
请注意,Python中的字符串是不可变的,因此你不能改变字符串的部份。
∙元组——元组由一系列由逗号分隔的值表示。
元组是不可变的,输出的用括号包围,目的是嵌套结构能够被正确处置。
另外,尽管元组是不可变的,但它们能够在必若是含有可变数据。
因为元组是不可变的,不可改变的,他们相对列表来讲能够处置的更快。
因此,假设是你的清单是不可能改变的,你应该利用元组,而不是列表。
∙字典——字典是键:
值对一个无序集合,要求键是唯一的(在一个字典里)。
一对大括号创建一个空的字典:
{}。
Python的迭代和条件结构
和大多数语言一样,Python也有一个FOR循环,这是最普遍利用的迭代方式。
它有一个简单的语法:
那个地址的“Python的迭代能够是列表、元组或其他先进的数据结构,咱们将在后面的章节中探讨。
让咱们来看看一个简单的例子,确信一个数字的因子。
来看看条件语句,它们是用来基于条件执行代码片段。
最常常利用的结构是if-else,有以下语法:
例如,假设是咱们想打印出某个数字n是偶数仍是奇数:
既然你熟悉了Python的基础,咱们来更近一步。
假设是你像完成以下任务:
1.乘2矩阵
2.求二次方程的根
1.绘制条形图和直方图
2.成立统计模型
3.访问网页
假设是你想从零开始写代码,它将是一场噩梦,你利用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会将IPythonnotebook环境转换成类似于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个关键时期:
1.数据探讨—从咱们所拥有的数据中觉察更多
2.数据修改—清理数据和并修改它使它更适合用来统计建模
3.预测建模—运行的实际算法,自得其乐
3.在Python中利用Pandas进行探讨性分析
为了进一步探讨咱们的数据,让我把你介绍给另一种动物(恍如Python是不够的!
)––Pandas
Pandas是Python最有效的一种数据分析库的我明白这些名字听起来很奇怪,但坚持下去!
)它们关于增加一直在增加Python在数据科学界的利用量起了专门大的作用。
咱们此刻将利用Pandas从AnalyticsVidhya的竞赛中读数据集,进行探讨性分析,成立咱们的第一个大体分类算法来解决这一问题。
在加载数据之前,让咱们了解Pandas中的2个关键的数据结构——序列和数据框
序列和数据框的简介
序列能够被明白得为一个1维标记/索引数组。
你能够通过这些标签访问那个序列的各个元素。
一个数据框类似于Excel工作簿–你能够利用列名来引用列,能够通过行号来访问行数据,本质的区别是,在数据帧中,列名和行号是列和行的索引。
More:
10MinutestoPandas
实践数据集——贷款预测问题
您能够从那个地址下载数据集。
那个地址是变量的描述:
让咱们从数据探讨开始
开始,通过在你的你的终端/Windows命令提示符键入下面的代码,来以InlinePylab模式启动IPython界面:
这在PyLab环境下打开IPython
notebook,其中有几个有效的库已经导入。
另外,你将能够绘制您的数据内联,这关于互动的数据分析是一个超级好的环境。
你能够通过键入以下命令,检查环境是不是正确的加载了(并取得如以下图所示的输出):
plot(arange(5))
我目前在Linux上工作,并已将数据集存储在以下位置:
/home/kunal/Downloads/Loan_Prediction/
导入库和数据集:
下面是咱们将在本教程中利用的库:
∙numpy
∙matplotlib
∙pandas
请注意,你不需要导入matplotlib和NumPy,因为是在PyLab环境下。
但我仍然在代码中保留了它们,以防你在不同的环境中利用代码。
导入库以后,你能够利用read_csv()函数读数据集。
这是直到那个时期的代码:
快速数据探讨
一旦你读取了数据,能够通过利用head()函数查看一下前几行的数据:
这应该打印10行。
或,您也能够通过打印数据集来查看更多的行。
接下来,你能够利用describe()函数来查看数值字段的概要:
describe()功能将提供计数、平均、标准差(STD),最小值,分位数值和最大值(读这篇文章来更新大体统计数据了解人口散布)
那个地址有几个结论,你能够通过查看describe()函数的输出得出:
1.LoanAmount有(614–592)22个缺失值
2.Loan_Amount_Term有(614–600)14个缺失值
3.Credit_History有(614–564)50个缺失值
4.咱们还能够看到84%的申请者有credit_history,怎么样,credit_history的均值为(记住,credit_history将那些有信誉历史的值设置为1,没有的设置为0)
5.ApplicantIncome的散布似乎和expectation呈线性关系,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进行数据再加工
4.数据修改–翻新的需要
关于那些一直跟下来的人来讲,这时你必需穿上鞋才能开始跑。
在咱们的探讨数据期间,咱们觉察了数据集的一些问题,在数据预备好成立一个好的模型之前需要解决。
那个练习通常被称为“数据修改”。
那个地址是问题,咱们已经意识到的:
1.在一些变量中有缺失值。
咱们应该基于丢失的值的数量明智地估量这些值并评估该变量的重要性。
2.当咱们查看数据的散布时,咱们看到,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。
一种直觉能够是一些申请人有较低的收入,但有一个有力的支持,一路申请者。
因此将二者的收入结合起来作为总收入可能是一个好主意,并采取相同的对数变换。
此刻咱们看到,散布比以前好多了。
我会把Gender,Married,Dependents,Loan_Amount_Term,Credit_History等缺失值的估量留给你。
另外,我鼓舞你考虑可能的额外的信息,能够来自数据。
例如,创建一个LoanAmount/TotalIncom
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- python 数据 分析