python与数据科学

前言

以下是在Python与数据科学领域常用的工具以及术语,这里列出来方便查看。主要包括Python环境、IDE、包管理以及数据科学 (Data Science) 和机器学习领域一些常用的库。

其中介绍来自维基百科,配图来自谷歌图片,资料来自官网或其它参考。

目录

[TOC]

1. Python

Python是一种广泛使用的解释型、高级编程、通用型编程语言,由吉多·范罗苏姆(Guido van Rossum)创造,第一版发布于1991年,可以视之为一种改良(加入一些其他编程语言的优点,如面向对象)的LISP。Python的设计哲学强调代码的可读性和简洁的语法(尤其是使用空格缩进划分代码块,而非使用大括号或者关键词)。相比于C++或Java,Python让开发者能够用更少的代码表达想法。不管是小型还是大型程序,该语言都试图让程序的结构清晰明了。

与Scheme、Ruby、Perl、Tcl等动态类型编程语言一样,Python拥有动态类型系统和垃圾回收功能,能够自动管理内存使用,并且支持多种编程范式,包括面向对象、命令式、函数式和过程式编程。其本身拥有一个巨大而广泛的标准库。

Python 解释器本身几乎可以在所有的操作系统中运行。Python的其中一个解释器CPython是用C语言编写的、是一个由社群驱动的自由软件,当前由Python软件基金会管理。

学习资料:

2. CPython

CPython是用C语言实现的Python解释器。作为官方实现,它是最广泛使用的Python解释器。除了CPython以外,还有用Java实现的Jython,用.NET实现的IronPython,使Python方便地和Java程序、.NET程序集成。另外还有一些实验性的Python解释器比如PyPy。

CPython是使用字节码的解释器,任何程序源代码在执行之前先要编译成字节码。它还有和几种其它语言(包括C语言)交互的外部函数接口。

可以看到,除了传统的CPython,python还有很多种可选的实现方案,如下:

  • IronPython:基于 .NET
  • Jython:基于 Java
  • PyPy:基于JIT
  • Stackless Python:支持微线程的CPython分支
  • MicroPython:运行在微处理器上

官网说明:https://www.python.org/download/alternatives/

3. IPython

IPython是一种基于Python的交互式解释器。相较于本地的Python Shell,IPython提供了更为强大的编辑和交互功能。

官网:https://ipython.org/

官方手册:https://ipython.readthedocs.io/en/stable/

4. Jupyter

Jupyter项目是一个非营利组织,旨在“为数十种编程语言的交互式计算开发开源软件,开放标准和服务”。2014年由Fernando Pérez从IPython中衍生出来,Jupyter项目支持几十种语言的执行环境。Jupyter项目的名称是对Jupyter支持的三种核心编程语言的引用,这三种语言是Julia、Python和R,也是对伽利略记录发现木星的卫星的笔记本的致敬。Jupyter项目开发并支持交互式计算产品Jupyter Notebook、JupyterHub和JupyterLab,这是Jupyter Notebook的下一代版本。

2015年,GitHub和Jupyter项目宣布Jupyter Notebook文件格式(.ipynb文件)在GitHub平台上可以原生渲染。

主要产品:

  • Jupyter Notebook:是一个基于Web的交互式计算环境,用于创建Jupyter Notebook文档,前身是IPython Notebook。
  • JupyterHub:是一个用于Jupyter Notebook的多用户服务器。它通过生成、管理和代理许多单一的Jupyter Notebook服务器来支持许多用户。
  • JupyterLab:是Jupyter项目的下一代用户界面。它在一个灵活且强大的用户界面中提供了经典的Jupyter Notebook(笔记本、终端、文本编辑器、文件浏览器、丰富输出等)所有熟悉的构建模块。第一个稳定版本于2018年2月20日发布。

官网:https://jupyter.org/

官方教程:https://jupyter-notebook.readthedocs.io/en/stable/

https://jupyterlab.readthedocs.io/en/latest/

https://jupyter-console.readthedocs.io/en/stable/

5. IDE

集成开发环境(Integrated Development Environment,简称IDE,也称为Integration Design Environment、Integration Debugging Environment)是一种辅助程序开发人员开发软件,在开发工具内部就可以辅助编写源代码文本、并编译打包成为可用的程序,有些甚至可以设计图形接口。

以下是常见的Python语言的IDE

  • PyCharm
  • Wing IDE
  • Pydev
  • Spyder

除此之外,还有许多文本编辑器经过配置后也可以应用到Python开发中:

  • Vs Code
  • Atom
  • Sublime Text
  • Vim

以下仅给出两个示例:

vscode:

sublime:

6. Pip

pip是一个以Python计算机程序语言写成的软件包管理系统,它可以安装和管理软件包,另外不少的软件包也可以在“Python软件包索引”(英语:Python Package Index,简称PyPI)中找到。

pip的其中一个主要特点就是其方便使用的命令行接口,这让用户可以透过以下的一句文字命令来轻易地安装Python软件包:

1
pip install some-package-name

7. Conda

Conda是一个开源跨平台语言无关的包管理与环境管理系统。由“连续统分析”(Continuum Analytics)基于BSD许可证发布。Conda允许用户方便地安装不同版本的二进制软件包与该计算平台需要的所有库。还允许用户在不同版本的包之间切换、从一个软件仓库下载包并安装。

Conda是用Python语言开发,但能管理其他编程语言的项目(如R语言),包括多语言项目。 Conda可安装Python语言的包,类似于其他基于Python的跨平台包管理器(如wheel或pip)。

8. Anaconda

Anaconda是一个免费开源的Python和R语言的发行版本,用于计算科学(数据科学、机器学习、大数据处理和预测分析),Anaconda致力于简化包管理和部署。Anaconda的包使用软件包管理系统Conda进行管理。超过1200万人使用Anaconda发行版本,并且Anaconda拥有超过1400个适用于Windows、Linux和MacOS的数据科学软件包。

Anaconda Navigator是包含在Anaconda中的图形用户界面,用户可以通过Anaconda Navigator启动应用,在不使用命令行的情况下管理软件包、创建虚拟环境和管理路径。Anaconda Navigator包含如下应用:

  • JupyterLab
  • Jupyter Notebook
  • QtConsole
  • Spyder
  • Glueviz
  • Orange
  • Rstudio
  • Visual Studio Code

官网:https://www.anaconda.com/

9. Numpy

NumPy是Python语言的一个扩展程序库。支持高端大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。NumPy的前身Numeric最早是由Jim Hugunin与其它协作者共同开发,2005年,Travis Oliphant在Numeric中结合了另一个同性质的程序库Numarray的特色,并加入了其它扩展而开发了NumPy。NumPy为开放源代码并且由许多协作者共同维护开发。

官网:https://numpy.org/

中文文档:https://www.numpy.org.cn/

10. Scipy

SciPy是一个开源的Python算法库和数学工具包。

SciPy包含的模块有最优化、线性代数、积分、插值、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算。与其功能相类似的软件还有MATLAB、GNU Octave和Scilab。

SciPy当前在BSD许可证下发布。它的开发由Enthought资助。

官网:https://www.scipy.org/

参考资料:https://www.scipy.org/getting-started.html>

https://scipy-lectures.org/>

11. Pandas

在计算机编程中,pandas是为Python编程语言编写的软件库,用于数据操作和分析。 特别是,它提供了用于操作数值表和时间序列的数据结构和操作。 它是根据三条款BSD许可证发布的免费软件。该名称来自术语“面板数据”,这是一个数据集的计量经济学术语,包括对同一个人的多个时间段的观察。

官网:https://pandas.pydata.org/

入门手册:https://pandas.pydata.org/pandas-docs/stable/getting_started/10min.html

12. Matplotlib

Matplotlib是Python编程语言及其数值数学扩展包 NumPy的可视化操作界面。它利用通用的图形用户界面工具包,如Tkinter, wxPython, Qt或GTK+,向应用程序嵌入式绘图提供了应用程序接口(API)。此外,matplotlib还有一个基于图像处理库(如开放图形库OpenGL)的pylab接口,其设计与MATLAB非常类似–尽管并不怎么好用。SciPy就是用matplotlib进行图形绘制。

matplotlib最初由John D. Hunter撰写,它拥有一个活跃的开发社区,并且根据BSD样式许可证分发。 在John D. Hunter2012年去世前不久,Michael Droettboom被提名为matplotlib的主要开发者。

截至到2015年10月30日,matplotlib 1.5.x支持Python 2.7到3.5版本。Matplotlib 1.2是第一个支持Python 3.x的版本。Matplotlib 1.4是支持Python 2.6的最后一个版本。[3]

官网:https://matplotlib.org/

官方手册:https://matplotlib.org/tutorials/index.html

13. Keras

Keras是一个用Python编写的开源神经网络库,能够在TensorFlow、Microsoft Cognitive Toolkit、Theano或PlaidML之上运行。Keras旨在快速实现深度神经网络,专注于用户友好、模块化和可扩展性,是ONEIROS(开放式神经电子智能机器人操作系统)项目研究工作的部分产物,主要作者和维护者是Google工程师弗朗索瓦·肖莱。肖莱也是XCeption深度神经网络模型的作者。

2017年,Google的TensorFlow团队决定在TensorFlow核心库中支持Keras。 Chollet解释道,Keras被认为是一个接口,而非独立的机器学习框架。它提供了更高级别、更直观的抽象集,无论使用何种计算后端,用户都可以轻松地开发深度学习模型。微软也向Keras添加了CNTK后端,自CNTK v2.0开始。

官方手册:https://keras.io/

https://keras.io/zh/

14. TensorFlow

TensorFlow是一个开源软件库,用于各种感知和语言理解任务的机器学习。当前被50个团队用于研究和生产许多Google商业产品,如语音识别、Gmail、Google 相册和搜索,其中许多产品曾使用过其前任软件DistBelief。

TensorFlow最初由谷歌大脑团队开发,用于Google的研究和生产,于2015年11月9日在Apache 2.0开源许可证下发布。

官网:https://www.tensorflow.org/

手册:https://www.tensorflow.org/tutorials/

15. Scikit-Learn

Scikit-learn(以前称为scikits.learn)是一个用于Python编程语言的免费软件机器学习库。它具有各种分类,回归和聚类算法,包括支持向量机,随机森林,梯度增强,k-means和DBSCAN,旨在与Python数值和科学库NumPy和SciPy互操作。

官网:https://scikit-learn.org/stable/

官方手册:https://scikit-learn.org/stable/tutorial/basic/tutorial.html

16. PyTorch

PyTorch是一个开源的Python机器学习库,基于Torch, 应用于人工智能领域,如自然语言处理。 它最初由Facebook的人工智能研究团队开发,并且被用于Uber的概率编程软件”Pyro”。

PyTorch主要有两大特征:

  • 如NumPy的张量计算,但使用GPU加速
  • 基于带基自动微分系统的深度神经网络

官网:https://pytorch.org/

手册:https://pytorch.org/tutorials/

-------------本文结束感谢您的阅读-------------