从头学习将Python用于数据科学的一个完整教程(二)

Python部落(python.freelycode.com)组织翻译,禁止转载,欢迎转发。

快速数据探索


  一旦你读取了数据,可以通过使用head()函数查看一下前几行的数据:

blob.png

  

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

  接下来,你可以使用describe()函数来查看数值字段的概要:

blob.png

  

  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的均值为0.84(记住,credit_history将那些有信用历史的值设置为1,没有的设置为0)

  5. ApplicantIncome 的分布似乎和expectation呈线性关系,CoapplicantIncome也是。

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

  对于非数值(例如property_area,credit_history等),我们可以看看频率分布,了解他们是否有意义。频率表可以通过以下命令打印:

blob.png

  同样地,我们可以看看信用卡历史的唯一值。注意,dfname [ 'column_name ]是一个基本的索引技术,来访问一个数据框的特定的列。它也可以是列的列表。想要了解更多信息,参考上面的“Pandas 10分钟教程”的资源共享。


分布分析


  现在我们熟悉了基本的数据特征,让我们研究不同变量的分布情况。让我们从数字变量开始–即applicantincome和LoanAmount

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

blob.png

  在这里,我们观察到,有几个极端值。这也是分箱值为50的原因,就是为了清楚地描述它的分布。

  下一步,我们看箱线图,了解分布。fare 的箱图可以使用下面代码绘制:

blob.png

  这证实了大量的离群值/极值的存在。这可以归因于社会上的收入差距。部分原因源于这样一个事实:我们正在查看不同的教育水平的人。让我们根据他们所受的教育进行分组:

blob.png

  我们可以看到,研究生和非毕业生的平均收入之间没有实质性的区别。但是毕业生中高收入的人群更多,它们出现在异常值的点中。

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

  再次,有一些异常的值。显然,applicantincome和LoanAmount都需要进行一定的数据处理。 LoanAmount有一些缺失值以及一些异常的值,而applicantincome有一些异常值,需要更深入的了解。我们将在即将到来的部分完成这些。


分类变量的分析


  现在我们了解了applicantincome和loanincome的分布,让我们了解更多关于分类变量的细节。我们将使用Excel数据透视表和交叉制表的风格。例如,让我们看看基于信用记录,可以获得贷款的可能性。这可以在微软的Excel上使用一个透视表实现:

  注:这里的贷款状况已被编码,使用1代表yes,而0代表no,因此,所以均值代表了获得贷款的概率。

  现在我们将看看使用Python产生类似的效果所需要的步骤。请参考这篇文章,以使用Pandas获得不同的数据操纵技术。

  

blob.png

11. pivot_python

  现在我们可以观察到,我们得到一个像微软的 Excel的pivot_table。这可以使用matplotlib库绘制成条形图,使用下面的代码:

blob.png


  这表明,如果申请人有一个有效的信用记录,获得贷款的机会是没有信用记录的人的八倍。你可以根据Married, Self-Employed, Property_Area等绘制类似的图。

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

blob.png

  你还可以再上图中加入性别变量(类似于Excel中的数据透视表)

  如果你还没有意识到,我们刚刚在这里创建了两个基本的分类算法,一个基于信用历史,而另一个基于2个分类变量(包括性别)。你可以在AV Datahacks上很快的编写代码来创建首次提交。

  我们只看到我们如何使用Python中的Pandas做探索性分析。我希望你对大熊猫(动物)的爱现在增加了——给予一些帮助,这个库可以为你提供分析数据集。

  接下来让我们进一步探讨applicantincome和loanstatus变量,进行数据修改和创建一个数据集并应用各种建模技术。我强烈要求你采用另一个数据集和习题,并在进一步阅读之前完成一个独立的例子。

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


4.数据修改–翻新的需要


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

  在我们的探索数据期间,我们发现了数据集的一些问题,在数据准备好建立一个好的模型之前需要解决。这个练习通常被称为“数据修改”。这里是问题,我们已经意识到的:

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

  2. 当我们查看数据的分布时,我们看到,applicantincome和LoanAmount似乎在两端都含有极端值。虽然他们可能有直观的感觉,但应适当处理。

  除了数值领域的这些问题,我们也应该看看非数值领域Gender, Property_Area, Married,Education 和 Dependents这些变量,看看它们是否包含任何有用的信息。

  如果你是Pandas的新手,我建议在继续前进之前阅读这篇文章。它详细介绍了一些有用的数据处理技术。


检查数据集中的缺失值


  让我们看看所有的变量中的缺失值,因为大多数模型不能处理有缺失值的数据,即使他们可以,输入它们往往不能帮助更多。所以,让我们看看数据集中空值/NAN值的数量:

blob.png

  这个命令告诉我们每一列中缺失值的数量,因为如果值为缺失值isnull()返回1。

4. missing

  虽然缺失值数量不是很多,但许多变量都有缺失值,它们中的每一个都应该被估计和补充。通过这篇文章对不同的插值技术进行详细了解。

  注:记住,缺失值可能并不总是NaN。例如,如果loan_amount_term是0,它是有意义的或者你认为是缺失的?我想你的答案是缺失的,你是对的。所以我们应该检查那些不切实际的值。


如何填补LoanAmount的缺失值?


  有许多方法来填补价值贷款金额的缺失值,最简单的就是使用均值来替换,可以通过以下代码实现:

另一个极端是可以建立一个监督学习模型来基于其他变量预测贷款金额,然后使用年龄以及其他变量来预测。

  既然,现在的目标是讲述数据修改的步骤,我宁愿采取一种方法,它介于这2个极端方法之间。一个关键的假设是,一个人是否受教育的或是否自雇人士可以结合起来,提供一个很好的贷款金额的估计。

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

  因此我们看到在每一组中贷款金额的中位数的一些变化而这可以用来估计值。但首先,我们必须确保每个self_employed和Education变量 不应该有缺失值。

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

6. self emp

  因为~ 86%的值是“No”,将缺失值估计为“No”是比较可靠的,有很高的成功概率。这可以用下面的代码来完成:

blob.png

  现在,我们将创建一个数据透视表,它提供了我们所有Education和self_employed变量的唯一值分组的中位数。接下来,我们定义了一个函数,它返回这些单元格的值,并应用它来填充丢失的贷款金额的值:


blob.png

  这应该给你提供了一个估计贷款金额的缺失值好方法。


如何处理在LoanAmount和applicantincome分布中的极值?


  让我们先分析LoanAmount。由于极端值可能是现实的的,即一些人可能会由于特定的需求,申请高额的贷款,。所以,不把它们当做离群点对待,让我们尝试对数据转换从而发挥它们的作用:

  再看直方图:

7. loan log

  现在的分布看起来更接近标准的,极端值的影响已经显着消退。

  来看看applicantincome。一种直觉可以是一些申请人有较低的收入,但有一个有力的支持,共同申请者。所以将两者的收入结合起来作为总收入可能是一个好主意,并采取相同的对数变换。


blob.png

8. total income log

  现在我们看到,分布比以前好多了。我会把Gender, Married, Dependents, Loan_Amount_Term, Credit_History等缺失值的估计留给你。此外,我鼓励你考虑可能的额外的信息,可以来自数据。例如,创建一个LoanAmount/TotalIncome列可能会有意义,因为它能给你一个关于申请人如何偿还他的贷款的好想法。

  下一步,我们将研究预测模型。



英文原文:https://www.analyticsvidhya.com/blog/2016/01/complete-tutorial-learn-data-science-python-scratch-2/
译者:jiajia123456
 

2月15日11:00到13:00网站停机维护,13:00前恢复