Python数据分析与挖掘实战(二)——Python数据分析工具

Python数据分析工具

  • Python本身的数据分析功能不强,需要安装一些第三方扩展库来增强它的能力。常用的数据挖掘相关扩展库有Numpy、Scipy、Matplotlib、Pandas、Scikit-Learn、Keras和Gensim等。如下图所示:
扩展库简介
Numpy提供数组支持,以及相应的高效的处理函数
Scipy提供矩阵支持,以及矩阵相关的数值模块
Matplotlib强大的数据可视化工具、做图库
Pandas强大、灵活的数据分析和探索工具
StatsModels统计建模和计量经济学,包括描述统计、统计模型估计和推断
Scikit-Learn支持回归、分类、聚类等的强大的机器学习库
Keras深度学习库,用于建立神经网络以及深度学习模型
Gensim用来做文本主题模型的库,文本挖掘可能用到

1、Numpy

  • Python并没有提供数组功能。虽然列表可以完成基本的数组功能,但是当数据量较大时,列表的速度会非常慢。为此,Numpy提供了真正的数组功能,以及对数据进行快速处理的函数。值得强调的是,Numpy内置函数处理数据的速度是C语言级别的,因此在编写程序的时候,应当尽量使用它们内置的函数,避免出现效率瓶颈的现象。Numpy常见操作如下:
# -*- coding:utf-8 -*
import numpy as np
# 创建数组
a = np.array([2,0,1,5])
print(a)
# 切片,输出数组前三个数字
print(a[:3])
# 输出 a 中的最小值
print(a.min())
# 将 a 的元素从小到大排序,此操作直接修改 a,因此这时候 a 为[0,1,2,5]
a.sort()
# 创建二维数组
b = np.array([1,2,3],[4,5,6])
# 输出数组的平方阵,即[[1,4,9],[16,25,36]]
print(b*b)

2、Scipy

  • 如果说 Numpy 让 Python 有了 Matlab 的味道,那么 Scipy 就让 Python 真正成为了半个 Matlab 了。Scipy 提供了真正的矩阵,以及大量基于矩阵运算的对象与函数。
  • Scipy 包含的功能有最优化、线性代数、积分、插值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解和其他科学与工程中常用的计算,显然这些功能都是挖掘与建模必备的。
  • Scipy 依赖与 Numpy,因此安装它之前要先安装 Numpy。下面举个例子,是 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]
# 输入初值[1,1]并求解
result = fsolve(f,[1,1])
# 输出结果,为array([1.91963957,1.68501606])
print(result)

# 数值积分
from scipy import integrate
# 定义被积函数
def g(x):
	return (1 - x**2)**0.5
# 积分结果和误差
pi_2,err = integrate.quad(g,-1,1)
# 有微积分知识知道积分结果为圆周率pi的一半
print(pi_2 * 2)

3、Matplotlib

  • 不论是数据挖掘还是数据建模,都免不了数据可视化问题。对于 Python 来说,Matplotlib 是最著名的绘图库,它主要用于二维绘图,当然它也可以进行简单的三维绘图。下面举个作图例子:
# -*- coding:utf-8 -*
import numpy as np
import matplotlib.pyplot as plt
# 设置作图的自变量x,因变量y、z
x = np.linspace(0,10,1000)
y = np.sin(x) + 1
z = np.cos(x**2) + 1
# 设置图像大小
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$')
# 设置x轴、y轴以及标题名称
plt.xlabel('Time(s)')
plt.ylabel('Volt')
plt.title('A Simple Example')
# 显示y轴范围
plt.ylim(0,2.2)
# 显示图例
plt.legend()
plt.show()
  • 如果使用的是中文标签,就会出现中文标签无法正常显示。这是由于 Matplotlib 的默认字体是英文字体所致,解决它的办法是在作图之前手动指定默认字体为中文字体,如黑体(SimHei):
plt.rcParams['font.sans-serif'] = ['SimHei']
  • 另外,保存作图图像时,负号有可能显示不正常,可以通过以下代码解决:
plt.rcParams['axes.unicode_minus'] = False

4、Pandas

  • Pandas 是 Python 下最强大的数据分析与探索工具。它包含高级的数据结构和精巧的工具,使得在 Python 中处理数据非常快速和简单。Pandas 功能非常强大,支持类似于 SQL 的数据增删查改,并且带有丰富的数据处理函数;支持时间序列分析功能;支持灵活处理缺失数据等。
  • Pandas 基本数据结构是 Series 和 DataFrame。Series 就是序列,类似一维数组;DataFrame 则是相当于一张二维的表格,类似二维数组,它的每一列都是一个 Series。为了定位 Series 中的元素,Pandas 提供了 Index 对象,每个 Series 都会带有一个对应的 Index,用来标记不同的元素,Index 的内容不一定是数字,也可以是字母、中文等,它类似 SQL 中的主键。
  • 参考链接:http://pandas.pydata.org/pandas-docs/stable/

5、StatsModels

  • Pandas 着眼于数据的读取、处理和探索,而 StatsModels 则更加注重数据的统计建模分析,它使得 Python 有了 R语言的味道,StatsModels 支持与 Pandas 进行数据交互,因此,它与 Pandas 结合,成为了 Python 下强大的数据挖掘组合。
  • 参考链接:http://statsmodels.sourceforge.net/stable/index.html

6、Scikit-Learn

  • Scikit-Learn 是 Python 下强大的机器学习工具包,它提供了完善的机器学习工具箱,包括数据预处理、分类、回归、聚类、预测和模型分析等。
  • 所有模型提供的接口有:
model.fit()训练模型,对于监督模型来说是 fit(X,y),对于非监督模型是 fit(X)
  • 监督模型提供的接口有:
model.predict(X_new)预测新样本
model.predict_proda(X_new)预测概率,仅对某些模型有用(比如LR)
model.score()得分越高,fit 越好
  • 非监督模型提供的接口有:
model.transform()从数据中学到新的“基空间”
model.fit_transform()从数据中学到新的基并将这个数据按照这组“基”进行转换

7、Keras

  • 虽然 Scikit-Learn 足够强大,但是它并没有包含一种强大的模型——人工神经网络。Keras 库是用来搭建神经网络。Keras 并非简单的神经网络库,而是一个基于 Theano 的强大的深度学习库,利用它不仅仅可以搭建普通的神经网络,还可以搭建各种深度学习模型,如自编码器、循环神经网络、递归神经网络、卷积神经网络等。由于它是基于 Theano 的,因此速度相当快。

8、Gensim

  • Gensim 是用来处理语言方面的任务,如文本相似度计算、LDA、Word2Vec等,这些领域的任务往往需要较多的背景知识。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值