python数据分析工具

文章目录

  • python数据分析工具
  • NumPy
  • Scipy
  • Matplotlib
  • pandas
  • StatsModels
  • scikit-learn
  • Keras
  • Gensim


python数据分析工具

python本身的数据分析功能并不强,需要安装一些第三方扩展库来增强其相应的功能。

python数据分析与挖掘相关的扩展库;

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

当然还有其他一些库,比如说涉及到图像处理可以使用pillow库,涉及视频处理可以使用OpenCV、高精度计算可以用GMPY2等。当然我们在处理问题的时候,可以在网上搜索相关资料。

如果使用Anaconda发行版,很多库都已经自带了,比如NumPy、SciPy、Matplotlib、pandas、scikit-learn。

当然如果使用其他编译器需要自行安装相关库文件。

NumPy

  • python并没有提供数组功能,虽然列表可以完成基本的数组功能,当数据量大时,使用列表的速度就会很慢;
  • NumPy提供了真正的数组功能以及对数据进行快速处理的函数;
  • NumPy是很多高级库的依赖库;

使用NumPy操作数组

import numpy as np

a = np.array([2, 0, 1, 5])  #创建数组
print(a)
print(a[:3])
print(a.min())
a.sort()
print(a)
b = np.array(([[1,2,3], [4,5,6]]))
print(b*b)
输出结果:
[2 0 1 5]
[2 0 1]
0
[0 1 2 5]
[[ 1  4  9]
 [16 25 36]]

参考资料链接:

  • https://numpy.org/

Scipy

SciPy包含的功能又最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学和工程中常用的计算。

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])
print(result)

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)
print(err)
输出结果:
[1.91963957 1.68501606]
3.1415926535897967
1.0002354500215915e-09

参考链接:

  • https://scipy.org/

Matplotlib

Matplotlib是最著名的绘图库,主要用于二维绘图,当然也可进行简单的三维绘图。

import numpy as np
import matplotlib.pyplot as plt

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()

python数据分析工具_第1张图片
中文字体需要手动指定默认字体为中文字体。
参考资料:

  • https://matplotlib.org/
  • https://matplotlib.org/stable/gallery/index.html

pandas

pandas是python下最强大的数据分析和探索工具。pandas功能十分强大;

  • 支持类似SQL的数据增、删、查、改,并且带有丰富的数据处理函数;
  • 支持时间序列分析功能;支持灵活处理确实数据等;

pandas的基本数据结构是Series(序列)和DataFrame(表格)。

import numpy as np
import pandas as pd

s = pd.Series([1, 2, 3], index=list('abc'))

d = pd.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c'])

d2 = pd.DataFrame(s)

print(d.head())
print(d.describe())
输出结果:
   a  b  c
0  1  2  3
1  4  5  6
             a        b        c
count  2.00000  2.00000  2.00000
mean   2.50000  3.50000  4.50000
std    2.12132  2.12132  2.12132
min    1.00000  2.00000  3.00000
25%    1.75000  2.75000  3.75000
50%    2.50000  3.50000  4.50000
75%    3.25000  4.25000  5.25000
max    4.00000  5.00000  6.00000
#读取文件,注意文件的存储路径不能带有中文,否则读取可能出错;
pd.read_excel('data.xls') #读取Excel文件,创建DataFrame;
pd.read_csv('data.csv', encoding='utf-8') #读取文本格式的数据,一般用encoding指定编码;

参考文档;

  • https://pandas.pydata.org/pandas-docs/stable/

StatsModels

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

from statsmodels.tsa.stattools import adfuller as ADF #导入ADF检验
import pandas as pd
import numpy as np

print(ADF(np.random.rand(100))) #返回的结果又ADF值、p值等
输出:
(-8.103123291388002, 1.2838791095546032e-12, 1, 98, {'1%': -3.4989097606014496, '5%': -2.891516256916761, '10%': -2.5827604414827157}, 30.91636795599902)

参考链接:

  • https://www.statsmodels.org/stable/index.html

scikit-learn

这是一个和机器学习相关的库。scikit-learn是python下强大的机器学习工具包,提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测、模型分析等。

scikit-learn依赖于NumPy、SciPy和Matplotlib。

from sklearn.linear_model import LinearRegression #导入线性回归模型

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本身提供了一些实例数据供我们上手学习,比较常见的有安德森鸢尾花卉数据集、手写图形数据集等。

from sklearn import 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]]) #输入训练好的模型之后,输入新的数据进行预测
print(clf.coef_) #查看训练好的模型的参数
输出结果:
(150, 4)
[[ 0.18423149  0.45122757 -0.8079383  -0.45071932]
 [ 0.05554602 -0.9001544   0.40811885 -0.96012405]
 [-0.85077276 -0.98663003  1.3810384   1.86530666]]

参考链接:

  • https://scikit-learn.org/stable/

Keras

人工智能神经网络是功能相当强大但是原理又相当简单的模型,在语言处理、图像识别等领域都有重要的作用。Keras库可以用来搭建神经网络。事实上,Keras并非简单的神经网络库,而是一个基于Theano的强大的深度学习库,利用它不仅可以搭建普通的神经网络,还可以搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等。
要使用 Keras,需要安装 TensorFlow 包。

from keras.models import Sequential
from keras.layers.core import Dense, Dropout, Activation
from keras.optimizers import SGD

model = Sequential()#模型初始化
model.add(Dense(20,64))#添加输入层(20节点)、第一隐藏层(64节点)的连接
model.add(Activation('tanh'))#第一隐藏层用tanh作为激活函数
model.add(Dropout(0.5))#使用Dropout防止过拟合
model.add(Dense(64, 64))#添加第一隐藏层(64节点)、第二隐藏层(64节点)的连接
model.add(Activation('tanh'))
model.add(Dropout(0.5))
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_squraed_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)#测试模型

参考资料;

  • https://keras.io/examples/

Gensim

Gensim用来处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等,这些领域的任务往往需要比较多的背景知识。

import gensim, logging

logging.basicConfig(format='%(asctime)s: %(levelname)s : %(message)s', level=logging.INFO)
#logging用来输出训练日志
#分好词的句子,每个句子以词列表的形式输入
sentences=[['first', 'sentence'],['secend','sentence']]
#用以上句子训练向量模型
model = gensim.models.Word2Vec(sentences, min_count=1)
print(model['sentence'])#输出单词sentence的词向量

参考资料:

  • https://radimrehurek.com/gensim/

你可能感兴趣的:(python数据分析与数据挖掘,数据分析,数据挖掘,神经网络,python)