如何正确学习数据科学中的 python
作者 | skura
来源 | AI开发者
大多数有抱负的数据科学家是通过学习为开发人员开设的编程课程开始认识 python 的,他们也开始解决类似 leetcode 网站上的 python 编程难题。他们认为在开始使用 python 分析数据之前,必须熟悉编程概念。
资深数据分析师 Manu Jeevan 认为,这是一个巨大的错误,因为数据科学家使用 python 来对数据进行检索、清洗、可视化和构建模型,而不是开发软件应用程序。实际上,为了完成这些任务,你必须将大部分时间集中在学习 python 中的模块和库上。他认为,学习数据科学的正确姿势应该如下文,AI 开发者进行了编译整理。
请按照下面这个步骤来学习数据科学的 python。
配置编程环境
Jupyter Notebook 是开发和展示数据科学项目的强大编程环境。
在电脑上安装 Jupyter Notebook 最简单的方法是通过 Anaconda 进行安装。Anaconda 是数据科学中使用最广泛的 python 工具,它预装了所有最流行的库。
你可以浏览标题为「A Beginner’s Guide to Installing Jupyter Notebook Using Anaconda Distribution」的博客文章(https://medium.com/better-programming/beginners-quick-guide-for-handling-issues-launching-jupyter-notebook-for-python-using-anaconda-8be3d57a209b),了解如何安装 Anaconda。安装 Anaconda 时,请选择最新的 python 3 版本。
安装完 Anaconda 后,请阅读 Code Academy 的这篇文章(https://www.codecademy.com/articles/how-to-use-jupyter-notebooks),了解如何使用 Jupyter Notebook。
只学习 python 的基础知识
Code Academy 有一门关于 python 的优秀课程,大约需要 20 个小时才能完成。你不必升级到 pro 版本,因为你的目标只是熟悉 python 编程语言的基础知识。课程地址:https://www.codecademy.com/learn/learn-python-3
NumPy 和 Pandas,学习的绝佳资源
在处理计算量大的算法和大量数据时,python 速度较慢。你可能会问,既然如此那为什么 python 是数据科学最流行的编程语言?
答案是,在 python 中,很容易以 C 或 Fortran 扩展的形式将数字处理任务转移到底层。这正是 NumPy 和 Pandas 所做的事情。
首先,你应该学会 NumPy。它是用 python 进行科学计算的最基本的模块。NumPy 支持高度优化的多维数组,这是大多数机器学习算法最基本的数据结构。
接下来,你应该学习 Pandas。数据科学家花费大部分时间清洗数据,这也被称为数据整。
Pandas 是操作数据最流行的 python 库。Pandas 是 NumPy 的延伸。Pandas 的底层代码广泛使用 NumPy 库。Pandas 的主要数据结构称为数据帧。
Pandas 的创造者 Wes McKinney 写了一本很棒的书,叫做《Python for Data Analysis》(https://www.amazon.com/Python-Data-Analysis-Wrangling-IPython-ebook/dp/B075X4LT6K)。在书中的第 4、5、7、8 和 10 章可以学习 Pandas 和 NumPy。这些章节涵盖了最常用的 NumPy 和 Pandas 特性来处理数据。
学习使用 Matplotlib 可视化数据
Matplotlib 是用于创建基本可视化图形的基本 python 包。你必须学习如何使用 Matplotlib 创建一些最常见的图表,如折线图、条形图、散点图、柱状图和方框图。
另一个建立在 Matplotlib 之上并与 Pandas 紧密结合的好的绘图库是 Seaborn。在这个阶段,我建议你快速学习如何在 Matplotlib 中创建基本图表,而不是专注于 Seaborn。
我写了一个关于如何使用 Matplotlib 开发基本图的教程,该教程由四个部分组成。
- 第一部分:Matplotlib 绘制基本图(http://nbviewer.ipython.org/gist/manujeevanprakash/138c66c44533391a5af1)
- 第二部分:如何控制图形的样式和颜色,如标记、线条粗细、线条图案和使用颜色映射(https://nbviewer.jupyter.org/gist/manujeevanprakash/7dc56e7906ee83e0bbe6)
- 第三部分:注释、控制轴范围、纵横比和坐标系(https://nbviewer.jupyter.org/gist/manujeevanprakash/7cdf7d659cd69d0c22b2)
- 第四部分:处理复杂图形(https://nbviewer.jupyter.org/gist/manujeevanprakash/7d8a9860f8e43f6237cc)
你可以通过这些教程来掌握 Matplotlib 的基本知识。
简而言之,你不必花太多时间学习 Matplotlib,因为现在公司已经开始采用 Tableau 和 Qlik 等工具来创建交互式可视化。
如何使用 SQL 和 python
数据有组织地驻留在数据库中。因此,你需要知道如何使用 SQL 检索数据,并使用 python 在 Jupyter Notebook 中执行分析。
数据科学家使用 SQL 和 Pandas 来操纵数据。有一些数据操作任务使用 SQL 就可以很容易地执行,并且有一些任务可以使用 Pandas 高效地完成。我个人喜欢使用 SQL 来检索数据并在 Pandas 中进行操作。
如今,公司使用 Mode Analytics 和 Databricks 等分析平台来轻松地使用 python 和 SQL。
所以,你应该知道如何一起有效地使用 SQL 和 python。要了解这一点,你可以在计算机上安装 SQLite 数据库,并在其中存储一个 CSV 文件,然后使用 python 和 SQL 对其进行分析。
这里有一篇精彩的博客文章,向你展示了如何做到这一点:Programming with Databases in Python using SQLite(https://medium.com/analytics-vidhya/programming-with-databases-in-python-using-sqlite-4cecbef51ab9)。
在浏览上述博客文章之前,你应该了解 SQL 的基础知识。Mode Analytics 上有一个很好的关于 SQL 的教程:Introduction to SQL(https://medium.com/analytics-vidhya/programming-with-databases-in-python-using-sqlite-4cecbef51ab9)。通过他们的基本 SQL 部分,了解 SQL 的基本知识,每个数据科学家都应该知道如何使用 SQL 有效地检索数据。
学习和 python 相关的基本统计学知识
多数有抱负的数据科学家在不学习统计学的基础知识的情况下,就直接跳到机器学习知识的学习中。
不要犯这个错误,因为统计学是数据科学的支柱。而且,很多数据科学家学习统计学只是学习理论概念,而不是学习实践概念。
我的意思是,通过实践概念,你应该知道什么样的问题可以用统计学来解决,了解使用统计数据可以解决哪些挑战。
以下是你应该了解的一些基本统计概念:
抽样、频率分布、平均值、中位数、模式、变异性度量、概率基础、显著性检验、标准差、z 评分、置信区间和假设检验(包括 A/B 检验)
要学习这些知识,有一本很好的书可以看看:《Practical Statistics for Data Scientists: 50 Essential Concepts》(https://www.amazon.com/Practical-Statistics-Data-Scientists-Essential/dp/9352135652)。不幸的是,本书中的代码示例是用 R 编写的,但是很多人包括我自己在内使用的是 Python。
我建议你阅读本书的前四章。阅读本书的前 4 章,了解我前面提到的基本统计概念,你可以忽略代码示例,只了解这些概念。本书的其余章节主要集中在机器学习上。我将在下一部分讨论如何学习机器学习。
大多数人建议使用 Think Stats (https://www.amazon.com/Think-Stats-Allen-B-Downey/dp/1449307116)来学习 python 的统计知识,但这本书的作者教授了自己的自定义函数,而不是使用标准的 python 库来进行统计知识讲解。因此,我不推荐这本书。
接下来,你的目标是实现在 Python 中学习的基本概念。StatsModels 是一个流行的 python 库,用于在 python 中构建统计模型。StatsModels 网站提供了关于如何使用 Python 实现统计概念的优秀教程。
或者,你也可以观看 Gaël Varoquaux 的视频。他向你展示了如何使用 Pandas 和统计模型进行推理和探索性统计。
使用 Scikit-Learn 进行机器学习
Scikit-Learn 是 Python 中最流行的机器学习库之一。你的目标是学习如何使用 Scikit Learn 实现一些最常见的机器学习算法。
你应该像下面这样做。
首先,观看 Andrew Ng 在 Coursera 上的机器学习课程(https://www.coursera.org/learn/machine-learning)的第 1、2、 3、6,、7 和第 8 周视频。我跳过了关于神经网络的部分,因为作为初学者,你必须关注最通用的机器学习技术。
完成后,阅读「Hands-On Machine Learning with Scikit-Learn and TensorFlow」一书(https://www.amazon.com/Hands-Machine-Learning-Scikit-Learn-TensorFlow/dp/1491962291)。你只需浏览这本书的第一部分(大约 300 页),它是最实用的机器学习书籍之一。
通过完成本书中的编码练习,你将学习如何使用 python 实现你在 Andrew Ng 课程中学习到的理论概念。
结论
最后一步是做一个涵盖上述所有步骤的数据科学项目。你可以找到你喜欢的数据集,然后提出有趣的业务问题,再通过分析来回答这些问题。但是,请不要选择像泰坦尼克号这样的通用数据集。你可以阅读「19 places to find free data sets for your data science project」来查找合适的数据集(https://www.dataquest.io/blog/free-datasets-for-projects/)。
另一种方法是将数据科学应用到你感兴趣的领域。例如,如果你想预测股票市场价格,那么你可以从 Yahoo Finance (https://www.scrapehero.com/scrape-yahoo-finance-stock-market-data/)中获取实时数据,并将其存储在 SQL 数据库中,然后使用机器学习来预测股票价格。
如果你希望从其它行业转行到数据科学,我建议你完成一个利用你的领域专业知识的项目。关于这些,我在以前的博客文章"A Step-by-Step Guide to Transitioning your Career to Data Science – Part 1"(https://www.kdnuggets.com/2019/05/guide-transitioning-career-data-science-part-1.html) 和"A Step-by-Step Guide to Transitioning your Career to Data Science – Part 2"(https://www.kdnuggets.com/2019/06/guide-transitioning-career-data-science-part-2.html)中有提到过。