Python最近很火,很火的那种。4月PYPL(编程语言流行度)官方榜单公布,Python获得一等奖,连朋友圈的文科生都开始转发Python课程报名链接……这是什么语言让整个人疯了吗?作为编程界的“领头羊”社交名媛,Python平易近人的态度和精明优雅的敏捷赢得了所有老板的芳心。例如:人工智能、网页开发、爬虫、系统运维、数据分析计算等,这些浪漫富有的行业精英,随便一个都能“逆转未来”。本文为你精心准备了一部Python与数据科学的“暧昧史”——用Python纵览数据科学,包括Numpy、Scipy、pandas、Scikit-Learn、XGBoost等模块、包、库的使用,TensorFlow和Keras。1、为什么选择Python?作为一门语言,Python是十项全能,易学易安装。同时有很多扩展,非常适合数据科学研究。Google、Instagram、Youtube、Reddit等明星网站都在使用Python构建其核心业务。Python不仅适用于数据科学,还可以将Python用于更多用途——例如编写脚本、构建API、构建网站等。关于Python,有一些重要的事情需要注意。目前,有两个常用的Python版本。它们是版本2和3。大多数教程和本文将默认使用最新版本的Python,即Python3。但有时您会遇到使用Python2的书籍或文章。版本之间的差异并不大,但有时会复制和复制粘贴版本2代码在运行版本3时不起作用,因此需要进行一些小的编辑。请注意,Python非常关心空格(即空格和返回字符)。如果你把空格放在错误的地方,你的程序很可能会产生错误。与其他语言相比,Python不需要管理内存,有很好的社区支持。2.安装Python为数据科学安装Python的最佳方法是使用Anaconda发行版。Anacoda拥有您使用Python进行数据科学研究所需的一切,包括本文将介绍的许多包。单击产品->分发并向下滚动以查看适用于Mac、Windows和Linux的安装程序。即使您的Mac上已经安装了Python,您也应该考虑安装Anaconda发行版,因为它有助于安装其他包。另外,你也可以到Python官网下载安装器。包管理器:包是一段Python代码,而不是语言的一部分,包对于执行某些任务非常有帮助。使用包,我们可以复制和粘贴代码并将其放在Python解释器(用于运行代码)可以找到的地方。但这很麻烦,每次开始新项目或更新包时都必须复制和粘贴内容。因此,我们可以使用包管理器。Anaconda发行版带有自己的包管理器。如果没有,建议安装pip。无论您选择哪种方式,您都可以使用终端(或命令提示符)上的命令轻松安装和更新包。3.将Python用于数据科学Python迎合了许多不同开发人员(Web开发人员、数据分析师、数据科学家)的技术要求,因此有许多不同的方法可以使用该语言进行编程。Python是一种解释型语言,您不必将代码编译成可执行文件,只需将包含代码的文本文档传递给解释器即可。让我们快速浏览一下与Python解释器交互的不同方式。(1)在终端中如果您打开一个终端(或命令提示符)并键入单词“Python”,将启动一个shell会话。可以在对话框中输入有效的Python命令,实现相应的程序操作。这可能是快速调试某些东西的好方法,但即使是小项目也很难在终端中调试。(2)使用文本编辑器如果你在一个文本文件中写了一系列的Python命令并以.py扩展名保存,你可以使用终端导航到该文件并通过键入pythonYOUR_FILE_NAME.py来运行程序。它与在终端中一条一条地输入命令基本相同,只是更容易修复错误和更改程序的行为。(3)在IDE中,IDE是专业级软件,可以管理软件项目。IDE的优点之一是使用调试功能可以在您尝试运行程序之前告诉您哪里出错了。一些IDE带有项目模板(用于特定任务),您可以使用这些模板根据最佳实践设置项目。(4)JupyterNotebooks这些方法都不是用python做数据科学的最好方法,最好的方法是使用JupyterNotebooks。JupyterNotebooks使您能够一次运行“块”代码,这意味着您可以在决定下一步做什么之前查看输出——这在数据科学项目中非常重要,我们经常需要在获取输出之前查看图表.如果您使用的是Anaconda并且已经安装了Jupyter实验室。要启动它,只需在终端中输入“jupyterlab”。如果您使用的是pip,则必须使用命令“pythonpipinstalljupyter”安装Jupyterlab。4.Python中的数值计算NumPy包包含许多有用的函数,用于执行数据科学工作所需的数学运算。它作为Anaconda发行版的一部分安装,使用pip,就像安装JupyterNotebooks一样简单('pipinstallnumpy')。我们在数据科学中需要做的最常见的数学运算是矩阵乘法、计算向量的点积、改变数组的数据类型和创建数组!以下是将列表编组为NumPy数组的方法:以下是在NumPy中的操作方法进行数组乘法和计算点积:以下是如何在NumPy中进行矩阵乘法:5.Python中的统计分析Scipy包包含模块(小节包的代码)专用于统计。您可以使用“fromscipyimportstats”命令将其导入(使该功能在程序中可用)到您的笔记本中。该软件包包含计算数据的统计度量、执行统计测试、计算相关性、汇总数??据和研究各种概率分布所需的一切。以下是如何使用Scipy快速访问数组的汇总统计信息(最小值、最大值、平均值、方差、偏度和峰度):6.Python中的数据操作数据科学家必须花费大量时间清理和组织数据。幸运的是,Pandas包帮助我们使用代码而不是手动完成此操作。使用Pandas执行的最常见任务是从CSV文件和数据库中读取数据。它还具有强大的语法来组合不同的数据集(数据集在Pandas中称为DataFrames)并执行数据操作。使用.head方法查看DataFrame的前几行:使用方括号选择一列:通过组合其他列创建一个新列:7.在Python中使用数据库为了使用pandasread_sql方法,一个连接必须事先建立数据库。连接到数据库最安全的方法是使用Python的SQLAlchemy包。SQL本身就是一种语言,您连接到数据库的方式取决于您正在使用的数据库。8.Python中的数据工程有时我们倾向于在数据作为PandasDataFrame到达我们的项目之前对其进行一些计算。如果您正在使用数据库或从Web抓取数据(并将其存储在某处),则移动该数据并对其进行转换的过程称为ETL(提取、转换、加载)。您从一个地方提取数据,对其进行一些转换(通过添加数字、查找方法、更改数据类型等对其进行汇总),然后将其加载到您可以访问的位置。有一个非常酷的工具叫做Airflow,它非常擅长帮助管理ETL工作流。更好的是,它是用Python编写的,由Airbnb开发。9.Python中的大数据工程有时ETL过程可能非常缓慢。如果你有数十亿行数据(或者如果它们是一种奇怪的数据类型,比如文本),你可以使用许多不同的计算机分别进行转换,并在最后一秒将它们整合在一起。这种架构模式称为MapReduce,在Hadoop中很流行。现在,很多人使用Spark来做这种数据转换/检索工作,并且有一个Python接口到Spark,称为PySpark。MapReduce架构和Spark都是非常复杂的工具,这里不再赘述。请注意它们的存在,如果您发现自己处理的ETL过程非常缓慢,PySpark可能会有所帮助。10.Python中的进一步统计我们已经知道我们可以使用Scipy的统计模块来运行统计测试、计算描述性统计、p值以及诸如偏度和峰度之类的东西,但是Python还能做什么呢?您应该知道的一个特殊套餐是生命线套餐。使用生命线包,您可以从称为生存分析的统计子领域计算各种功能。生存分析有很多应用。我们可以用它来预测客户流失(当客户取消订阅时)以及零售店何时可能被盗。这些被用于与软件包的创建者想象的完全不同的领域(生存分析传统上是医学中的统计工具)。但这只是展示了构建数据科学问题的不同方式!11.Python中的机器学习这是一个重要的话题,机器学习正在席卷全球,是数据科学家工作的重要组成部分。简单地说,机器学习是一组允许计算机将输入数据映射到输出数据的技术。在某些情况下情况并非如此,但它们是少数,以这种方式思考ML通常会有所帮助。Python有两个非常好的机器学习包。(1)Scikit-LearnScikit-Learn包(有时缩写为sklearn)在用Python进行机器学习时大部分时间都会用到。这个包实现了大量的机器学习算法,并通过一致的语法公开它们。这使得数据科学家可以轻松地充分利用每种算法。使用Scikit-Learn的大体框架是这样的——将数据集拆分成训练和测试数据集:实例化并训练一个模型:使用metrics模块来测试模型的工作:(2)XGBoost在Python中常用于machines第二个要学习的包是XGBoost。Scikit-Learn实现了一系列算法,XGBoost只实现了梯度提升决策树。由于在Kaggle竞赛(任何人都可以参加的在线数据科学竞赛)中的成功使用,这个包(和算法)最近变得非常流行。训练模型的工作方式与Scikit-Learn算法大致相同。12.Python中的深度学习Scikit-Learn中可用的机器学习算法几乎可以解决任何问题。话虽如此,有时您需要使用最先进的算法。深度神经网络的普及率飙升,因为使用它们的系统几乎胜过所有其他类别的算法。但是很难说神经网络在做什么以及为什么要这样做。因此,它们在金融、医学、法律和相关专业中的应用并未得到广泛认可。神经网络的两大类是卷积神经网络(用于对图像进行分类和执行计算机视觉中的许多其他任务)和循环神经网络(用于理解和生成文本)。探索神经网络如何工作的机制超出了本文的范围,如果你想做这类工作,只需要知道你需要寻找的包是TensorFlow(Google贡献!)或Keras。Keras本质上是TensorFlow的包装器,使其更易于使用。13.Python中的数据科学API训练模型后,可以通过创建API在其他软件中访问其预测。API允许模型一次一行地从外部源接收数据并返回预测。由于Python是一种通用编程语言,也可用于创建Web服务,因此很容易使用Python通过API为模型提供服务。如果您需要构建API,您应该查看pickle和Flask。Pickle允许将经过训练的模型保存在硬盘上以备后用。Flask是创建Web服务的最简单方法。14.Python中的Web应用程序***如果你想围绕你的数据科学项目构建功能齐全的Web应用程序,你应该使用Django框架。Django在Web开发社区中非常流行,并用于构建Instagram和Pinterest(以及许多其他软件)的第一个版本。
