天涯论坛

 找回密码
 立即注册
搜索
查看: 51|回复: 2

8个常用Python库从安装命令及应用

[复制链接]

3032

主题

312

回帖

9909万

积分

论坛元老

Rank: 8Rank: 8

积分
99099078
发表于 2024-8-18 00:30:52 | 显示全部楼层 |阅读模式

Python本身的数据分析功能并不强,必须安装有些第三方扩展库来加强其相应的功能。本文将对NumPy、SciPy、Matplotlib、pandas、StatsModels、scikit-learn、Keras、Gensim等库的安装和运用进行简单的介绍。

倘若读者安装的是Anaconda发行版,那样已然自带了以下库:NumPy、SciPy、Matplotlib、pandas、scikit-learn。

本文重点是对这些库进行简单的介绍,读者能够到官网阅读更加仔细运用教程。

NumPy:供给数组支持以及相应的有效的处理函数SciPy:供给矩阵支持以及矩阵关联的数值计算模块Matplotlib:强大的数据可视化工具、作图库pandas:强大、灵活的数据分析和探索工具StatsModels:统计建模和计量经济学,包含描述统计、统计模型估计和推断scikit-learn:支持回归、归类、聚类等强大的设备学习库Keras:深度学习库,用于创立神经网络以及深度学习模型Gensim:用来做文本主题模型的库,文本挖掘可能会用到

01 NumPy

Python并供给数组功能。虽然列表能够完成基本的数组功能,但它不是真正的数组,况且在数据量很强时,运用列表的速度就会很慢。为此,NumPy供给了真正的数组功能以及对数据进行快速处理的函数。

NumPy还是非常多更高级的扩展库的依赖库,咱们后面介绍的SciPy、Matplotlib、pandas等库都依赖于它。值得强调的是,NumPy内置函数处理数据的速度是C语言级别的,因此呢在编写程序的时候,应当尽可能运用其内置函数,避免效率瓶颈的(尤其是触及循环的问题)显现

在Windows操作系统中,NumPy的安装跟普通第三方库的安装同样能够经过pip命令进行,命令如下:

pip install numpy 

能够自动下载源代码,而后运用如下命令安装:

python setup.py install 

在Linux操作系统下,以上办法是可行的。另外非常多Linux发行版的软件源中都有Python平常的库,因此呢能够经过Linux系统自带的软件管理器安装,如在Ubuntu下能够用如下命令安装:

sudo apt-get install python-numpy 

安装完成后,能够运用NumPy对数据进行操作,如代码名单2-27所示。

代码名单2-27 运用NumPy操作数组# -*- coding: utf-8-* import numpy as np                     # 通常以np做为NumPy库的别名 a = np.array([2015])             # 创建数组 print(a)                               # 输出数组 print(a[:3])                           # 引用前三个数字(切片)print(a.min())                         # 输出a的最小值 a.sort()                               # 将a的元素从小到大排序,此操作直接修改a,因此呢此时候a为[0125] b= np.array([[1, 2, 3], [4, 5, 6]])    # 创建二维数组 print(b*b)                             # 输出数组的平方阵,即[[1, 4, 9], [16, 25, 36]] 

NumPy是Python中相当成熟和常用的库,因此呢关于它的教程有非常多,最值得一看的是其官网的帮忙文档,其次还有非常多中英文教程,读者遇到相应的问题时,能够查阅关联资料。

参考链接:

http://www.numpy.org

http://reverland.org/python/2012/08/22/numpy

02 SciPy

倘若说NumPy让Python有了MATLAB的味道,那样SciPy就让Python真正作为半个MATLAB了。NumPy供给了多维数组功能,但它只是通常的数组,并不是矩阵,例如当两个数组相乘时,只是对应元素相乘,而不是矩阵乘法。SciPy供给了真正的矩阵以及海量基于矩阵运算的对象与函数。

SciPy包括的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算,显然,这些功能都是挖掘与建模必需的。

SciPy依赖于NumPy,因此呢安装之前得先安装好NumPy。安装SciPy的方式与安装NumPy的办法大同小异,必须提及的是,在Ubuntu下能够用类似的命令安装SciPy,安装命令如下:

sudo apt-get install python-scipy 

安装好SciPy后,运用SciPy求解非线性方程组和数值积分,如代码名单2-28所示。

代码名单2-28 运用SciPy求解非线性方程组和数值积分# -*- coding: utf-8 -* # 求解非线性方程组2x1-x2^2=1,x1^2-x2=2 from scipy.optimize import fsolve # 导入求解方程组的函数 def f(x): # 定义需求解的方程组 x1 = x[0] x2 = x[1] return [2*x1 - x2**2 - 1, x1**2 - x2 -2] result = fsolve(f, [1,1]) # 输入初值[1, 1]并求解 print(result) # 输出结果,为array([ 1.91963957, 1.68501606]) # 数值积分 from scipy import integrate # 导入积分函数 def g(x): # 定义被积函数 return (1-x**2)**0.5 pi_2, err = integrate.quad(g, -1, 1) # 积分结果和误差 print(pi_2 * 2) # 由微积分知识晓得积分结果为圆周率pi的一半

参考链接:

http://www.scipy.org

http://reverland.org/python/2012/08/24/scipy

03 Matplotlib

不论是数据挖掘还是数学建模,都要面对数据可视化的问题。针对Python来讲,Matplotlib是最著名的绘图库,重点用于二维绘图,当然能够进行简单的三维绘图。它不仅供给了一整套和MATLAB类似但更为丰富的命令,让咱们能够非常快捷地用Python可视化数据,况且准许输出达到出版质量的多种图像格式。

Matplotlib的安装并什么尤其之处,能够经过“pip install matplotlib”命令安装自动下载源代码安装,在Ubuntu下能够用类似的命令安装,命令如下:

sudo apt-getinstall python-matplotlib

必须重视的是,Matplotlib的上级依赖库相对较多,手动安装的时候,必须逐一把这些依赖库都安装好。安装完成后就能够牛刀小试了。下面是一个简单的作图例子,如代码名单2-29所示,它基本包括了Matplotlib作图的关键要素,作图效果如图2-5所示。

代码名单2-29 Matplotlib作图示例# -*- coding: utf-8 -*- import numpy as np import matplotlib.pyplot as plt # 导入Matplotlib x = np.linspace(0, 10, 1000) # 作图的变量自变量 y = np.sin(x) + 1 # 因变量y z = np.cos(x**2) + 1 # 因变量z plt.figure(figsize = (8, 4)) # 设置图像体积 plt.plot(x,y,label = $\sin x+1$, color = red, linewidth = 2) # 作图,设置标签、线条颜色、线条体积 plt.plot(x, z, b--, label = $\cos x^2+1$) # 作图,设置标签、线条类型 plt.xlabel(Time(s) ) # x轴名叫作 plt.ylabel(Volt) # y轴名叫作 plt.title(A Simple Example) # 标题 plt.ylim(0, 2.2) # 表示的y轴范围 plt.legend() # 表示图例 plt.show()# 表示作图结果

▲图2-5 Matplotlib的作图效果展示

倘若读者运用的是中文标签,就会发掘中文标签没法正常表示,这是由于Matplotlib的默认字体是英文字体,处理办法是在作图之前手动指定默认字体为中文字体,如黑体(Sim-Hei),命令如下:

plt.rcParams[font.sans-serif] = [SimHei]  # 用来正常表示中文标签 

其次,保留作图图像时,负号有可能不可表示,对此能够经过以下代码处理

plt.rcParams[axes.unicode_minus] = False    处理保留图像是负号-表示为方块的问题 

这儿有一个小意见:有时间多去Matplotlib供给的“画廊”欣赏用它做出的美丽照片许你就会慢慢爱上Matplotlib作图了。

画廊网址:

http://matplotlib.org/gallery.html

参考链接:

http://matplotlib.org

http://reverland.org/python/2012/09/07/matplotlib-tutorial

04 pandas

pandas是Python下最强大的数据分析和探索工具。它包括高级的数据结构和精巧的工具,使得用户在Python中处理数据非常快速和简单。

pandas建造在NumPy之上,它使得以NumPy为中心的应用运用起来更易。pandas的名叫作来自于面板数据(Panel Data)和Python数据分析(Data Analysis),它最初做为金融数据分析工具被研发,由AQR Capital Management于2008年4月研发面世,并于2009年底开源出来。

pandas的功能非常强大,支持类似SQL的数据增、删、查、改,并且带有丰富的数据处理函数;支持时间序列分析功能;支持灵活处理缺失数据;等等。事实上,单纯地用pandas这个工具就足以写一本书,读者能够阅读pandas的重点作者之一Wes Mc-Kinney写的《利用Python进行数据分析》来学习更仔细的内容。

1. 安装

pandas的安装相对来讲比较容易有些,只要安装好NumPy之后,就能够直接安装了,经过pip install pandas命令或下载源码后经过python setup.py install命令安装均可。

因为咱们频繁用到读取和写入Excel,但默认的pandas还不可读写Excel文件,必须安装xlrd(读)度和xlwt(写)库才可支持Excel的读写。为Python添加读取/写入Excel功能的命令如下:

pip install xlrd # 为Python添加读取Excel的功能 pip install xlwt # 为Python添加写入Excel的功能

2. 运用

在后面的章节中,咱们会逐步展示pandas的强大功能,而在本节,咱们先以简单的例子一睹为快。

首要,pandas基本的数据结构是Series和DataFrame。Series顾名思义便是序列,类似一维数组;DataFrame则相当于一张二维的表格,类似二维数组,它的每一列都是一个Series。

为了定位Series中的元素,pandas供给了Index这一对象,每一个Series都会带有一个对应的Index,用来标记区别的元素,Index的内容不必定是数字,能够是字母、中文等,它类似于SQL中的主键。

类似的,DataFrame相当于多个带有一样Index的Series的组合(本质是Series的容器),每一个Series都带有一个独一的表头,用来标识区别的Series。pandas中常用操作的示例如代码名单2-30所示。

代码名单2-30 pandas中的常用操作# -*- coding: utf-8 -*- import numpy as np import pandas as pd # 一般用pd做为pandas的别名。 s = pd.Series([1,2,3], index=[a, b, c]) # 创建一个序列s # 创建一个表 d = pd.DataFrame([[1, 2, 3], [4, 5, 6]], columns=[a, b, c]) d2 = pd.DataFrame(s) # 能够用已有的序列来创建数据框 d.head() # 预览前5行数据 d.describe() # 数据基本统计量 # 读取文件,重视文件的存储路径不可带有中文,否则读取可能出错。 pd.read_excel(data.xls) # 读取Excel文件,创建DataFrame。 pd.read_csv(data.csv, encoding=utf-8) # 读取文本格式的数据,通常用encoding指定编码。

因为pandas是本书的主力工具,在后面将会频繁运用它,因此呢这儿再也不仔细介绍,后文会更加详尽地讲解pandas的运用办法

参考链接:

http://pandas.pydata.org/pandas-docs/stable/

05 StatsModels

pandas着重于数据的读取、处理和探索,而StatsModels则更加注重数据的统计建模分析,它使得Python有了R语言的味道。StatsModels支持与pandas进行数据交互,因此呢,它与pandas结合作为Python下强大的数据挖掘组合。

安装StatsModels相当简单,既能够经过pip命令安装,又能够经过源码安装。针对Windows用户来讲,官网上乃至已然有编译好的exe文件可供下载。倘若手动安装的话,必须自动处理好依赖问题,StatsModels依赖于pandas(当然依赖于pandas所依赖的库),同期还依赖于Pasty(一个描述统计的库)。

运用StatsModels进行ADF安稳性检验,如代码名单2-31所示。

代码名单2-31 运用StatsModels进行ADF安稳性检验# -*- coding: utf-8 -*- from statsmodels.tsa.stattools import adfuller as ADF # 导入ADF检验 import numpy as np ADF(np.random.rand(100)) # 返回的结果有ADF值、p值等

参考链接:

http://statsmodels.sourceforge.net/stable/index.html

06 scikit-learn

从该库的名字能够看出,这是一个与设备学习关联的库。不错,scikit-learn是Python下强大的设备学习工具包,它供给了完善的设备学习工具箱,包含数据预处理、归类、回归、聚类、预测、模型分析等。

scikit-learn依赖于NumPy、SciPy和Matplotlib,因此呢,只必须提前安装好这几个库,而后安装scikit-learn基本上就什么问题了,安装办法跟前几个库的安装同样能够经过pip install scikit-learn命令安装,能够下载源码自动安装。

运用scikit-learn创建设备学习的模型很简单,示例如代码名单2-32所示。

代码名单2-32 运用scikit-learn创建设备学习模型# -*- coding: utf-8 -*- from sklearn.linear_model importLinearRegression# 导入线性回归模型 model = LinearRegression() # 创立线性回归模型 print(model)

1. 所有模型供给的接口有

针对训练模型来讲是model.fit(),针对监督模型来讲是fit(X, y),针对非监督模型是fit(X)。

2. 监督模型供给如下接口

model.predict(X_new):预测新样本。model.predict_proba(X_new):预测概率,仅对某些模型有用(例如LR)。model.score():得分越高,fit越好。

3. 非监督模型供给如下接口

model.transform():从数据中学到新的“基空间”。model.fit_transform():从数据中学到新的基并将这个数据根据这组“基”进行转换。

Scikit-learn本身供给有些实例数据供咱们上手学习,比较平常的有安德森鸢尾花卉数据集、手写图像数据集等。

安德森鸢尾花卉数据集有150个鸢尾花的尺寸观测值,如萼片长度和宽度,花瓣长度和宽度;还有它们的亚属:山鸢尾(iris setosa)、变色鸢尾(iris versicolor)和维吉尼亚鸢尾(iris virginica)。导入iris数据集并运用该数据训练SVM模型,如代码名单2-33所示。

代码名单2-33 导入iris数据集并训练SVM模型# -*- coding: utf-8 -*- fromsklearnimport datasets # 导入数据集 iris = datasets.load_iris() # 加载数据集 print(iris.data.shape) # 查看数据集体积 from sklearn import svm # 导入SVM模型 clf = svm.LinearSVC() # 创立线性SVM归类 clf.fit(iris.data, iris.target) # 用数据训练模型 clf.predict([[ 5.0, 3.6, 1.3, 0.25]]) # 训练好模型之后,输入新的数据进行预测 clf.coef_ # 查看训练好模型的参数

参考链接:

http://scikit-learn.org/stable/

07 Keras

scikit-learn已然足够强大了,然而它并包括这一强大的模型—人工神经网络。人工神经网络是功能相当强大然则原理又相当简单的模型,在语言处理、图像识别等行业都有重要的功效。近年来逐步流行的“深度学习”算法,实质上是一种神经网络,可见在Python中实现神经网络是非常必要的。

本书用Keras库来搭建神经网络。事实上,Keras并非简单的神经网络库,而是一个基于Theano的强大的深度学习库,利用它不仅能够搭建普通的神经网络,还能够搭建各样深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等。因为它是基于Theano的,因此呢速度相当快。

Theano是Python的一个库,它是由于深度学习专家Yoshua Bengio带领的实验室研发出来的,用来定义、优化和有效处理多维数组数据对应数学表达式的模拟估计问题。它拥有有效实现符号分解、高度优化的速度和稳定性等特点,最重要的是它还实现了GPU加速,使得密集型数据的处理速度是CPU的数十倍。

用Theano就能够搭建起有效的神经网络模型,然而针对普通读者来讲门槛还是相当高的。Keras正是为此而生,它大大简化了搭建各样神经网络模型的过程准许普通用户容易地搭建并求解拥有几百个输入节点的深层神经网络,况且定制的自由度非常大,读者乃至因此呢惊呼:搭建神经网络能够如此简单!

1. 安装

安装Keras之前首要必须安装NumPy、SciPy和Theano。安装Theano之前首要必须准备一个C++编译器,这在Linux系统下是自带的。因此呢,在Linux系统下安装Theano和Keras都非常简单,只必须下载源代码,而后用python setup.py install安装就行了,详细能够参考官方文档。

可是在Windows系统下就那样简单了,由于现成的编译环境,通常而言是先安装MinGW(Windows系统下的GCC和G++),而后再安装Theano(提前装好NumPy等依赖库),最后安装Keras,倘若要实现GPU加速,还必须安装和配置CUDA。

值得一提的是,在Windows系统下的Keras速度会大打折扣,因此呢,想要在神经网络、深度学习做深入科研的读者,请在Linux系统下搭建相应的环境。

参考链接:

http://deeplearning.net/software/theano/install.html#install

2. 运用

用Keras搭建神经网络模型的过程相当简单,相当直观,就像搭积木通常经过短短几十行代码,就能够搭建起一个非常强大的神经网络模型,乃至是深度学习模型。简单搭建一个MLP(多层感知器),如代码名单2-34所示。

代码名单2-34 搭建一个MLP(多层感知器)# -*- coding: utf-8 -*- fromkeras.models import Sequentialfrom keras.layers.core import Dense, Dropout, Activation from keras.optimizers import SGD model = Sequential() # 模型初始化 model.add(Dense(20, 64)) # 添加输入层(20节点)、第1隐匿层(64节点)的连接 model.add(Activation(tanh)) # 第1隐匿层用tanh做为激活函数 model.add(Dropout(0.5)) # 运用Dropout防止过拟合 model.add(Dense(64, 64)) # 添加第1隐匿层(64节点)、第二隐藏层(64节点)的连接 model.add(Activation(tanh)) # 第二隐匿层用tanh做为激活函数 model.add(Dropout(0.5)) # 运用Dropout防止过拟合 model.add(Dense(64, 1)) # 添加第二隐匿层(64节点)、输出层(1节点)的连接 model.add(Activation(sigmoid)) # 输出层用sigmoid做为激活函数 sgd = SGD(lr=0.1, decay=1e-6, momentum=0.9, nesterov=True) # 定义求解算法 model.compile(loss=mean_squared_error, optimizer=sgd)# 编译生成模型,损失函数为平均误差平方和 model.fit(X_train, y_train, nb_epoch=20, batch_size=16) # 训练模型 score = model.evaluate(X_test, y_test, batch_size=16) # 测试模型

重视的是,Keras的预测函数跟scikit-learn有所差别,Keras用model.predict()办法给出概率,用model.predict_classes()给出归类结果。

参考链接:

https://keras.io/

08 Gensim

在Gensim官网中,它对自己的简介仅有一句话:topic modelling for humans!

Gensim用来处理语言方面的任务,如文本类似度计算、LDA、Word2Vec等,这些行业的任务常常必须比较多的背景知识。

在这一节中,咱们只是提醒读者有这么一个库的存在,况且这个库很强大,倘若读者想深入认识这个库,能够去阅读官方帮忙文档或参考链接。

值得一提的是,Gensim把Google在2013年开源的著名的词向量构造工具Word2Vec编译好了,做为它的子库,因此呢必须用到Word2Vec的读者能够直接运用Gensim,而无须自动编译了。

Gensim的作者对Word2Vec的代码进行了优化,因此它在Gensim下的表现比原生的Word2Vec还要快。(为了实现加速,必须准备C++编译器环境,因此呢意见运用Gensim的Word2Vec的读者在Linux系统环境下运行。)

下面是一个Gensim运用Word2Vec的简单例子,如代码名单2-35所示。

代码名单2-35 Gensim运用Word2Vec的简单示例# -*- coding: utf-8 -*- import gensim, logging logging.basicConfig(format=%(asctime)s : %(levelname)s : %(message)s, level= logging.INFO) # logging是用来输出训练日志 # 分好词的句子,每一个句子以词列表的形式输入 sentences = [[first, sentence], [second, sentence]] # 用以上句子训练词向量模型 model = gensim.models.Word2Vec(sentences, min_count=1) print(model[sentence]) # 输出单词sentence的词向量。

最后,博主想说:我是一名python研发工程师,

整理了一套最新的python系统学习教程,

想要这些资料的能够关注私信博主“01”就可(免费分享哦)期盼能对你有所帮忙





上一篇:Python下载文件的11种方式
下一篇:把握办法很重要,xbox下载游戏慢,下载慢怎么办
回复

使用道具 举报

0

主题

1万

回帖

1

积分

新手上路

Rank: 1

积分
1
发表于 2024-9-10 09:33:33 | 显示全部楼层
外贸论坛是我们的,责任是我们的,荣誉是我们的,成就是我们的,辉煌是我们的。
回复

使用道具 举报

3048

主题

3万

回帖

9910万

积分

论坛元老

Rank: 8Rank: 8

积分
99109040
发表于 2024-10-25 16:39:25 | 显示全部楼层
楼主的文章深得我心,表示由衷的感谢!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

站点统计|Archiver|手机版|小黑屋|天涯论坛 ( 非经营性网站 )|网站地图

GMT+8, 2024-11-23 10:43 , Processed in 0.128744 second(s), 21 queries .

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.