《Python数据分析及挖掘实战》
Python数据分析工具
- Numpy
提供数组支持,以及相应的高效的处理函数。
Numpy内置函数处理数据的速度是C语言级别的,因此在编写程序的时候,应当尽量使用它们内置的函数,避免出现效率瓶颈。
# -*- coding: utf-8 -* import numpy as np #np means numpy a = np.array([2,0,1,5]) # 创建数组 print(a) # 输出数组 print(a[:3]) # 引用前三个数字(切片) print(a.min()) # 输出a的最小值 a.sort() # 将a的元素从小到大排序,此操作直接修改a,此时a为[0,1,2,5] print(a) b = np.array([[1,2,3],[4,5,6]]) # 创建二维数组,注意括号写法 print (b*b) # 输出数组平方阵
- Scipy
Scipy 提供矩阵支持,以及矩阵相关的数值计算模块。Scipy 提供了真正的矩阵,以及大量基于矩阵运算的对象与函数。Scipy 包含的功能有最优化、线性代数、积分、差值、拟合、特殊函数、快速傅里叶变换、信号处理和图像处理、常微分方程求解等,都是挖掘与建模必备的。# -*- coding:utf-8 -* #求解非线性方程组 # 2 * X1 - 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]求解 #注意书上错写为fsove 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 # 积分结果为圆周率pi的一半
- 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 label plt.title('A simple Example') # title plt.ylim(0, 2.2) # show the range of y label plt.legend() # 显示图例 plt.show() #显示结果
- Pandas
强大、灵活的数据分析和探索工具。
Pandas 的功能非常强大,支持类似于SQL的数据增、删、查、改,并且带有丰富的数据处理函数;支持时间序列分析;支持灵活处理缺失数据等。
Pandas 参考书目《利用Python进行数据分析》!
# -*- coding:utf-8 -*- import pandas as pd #通常用 pd 作为 pandas 的别名 s = pd.Series([1,2,3], index = ['a','b','c']) # 创建一个序列a 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.scv',encoding = 'utf-8') # 读取文本格式的数据,指定编码uft-8
程序似乎不能直接运行,似乎需要先建立或者下载 csv 和 xls 文件,待研究。
- StatsModels
统计建模和计量经济学,包括描述统计、统计模型估计和推断。Pandas 着眼于数据的读取、处理和探索,而StatsModels则更加注重于数据的统计建模分析,它使得 Python 有了 R语言 的味道# -*- coding:utf-8 -*- from statsmodels.tsa.stattools import adfuller as ADF # 导入ADF检验 import numpy as np ADF(np.random.rand(100)) # 返回的结果有ADF值、P值等
- Gensim
用来做文本主题模型的库,文本挖掘可能用到。# -*- coding:utf-8 -*- import gensim, logging logging.basicConfig(format='%(asctime)s:%(levelnames)s:%(message)s',level = logging.INFO) # logging是用来输出训练日志 # 分好词的句子,每个句子以词列表的形式输入 sentences = [['first','sentences'],['second','sentences']] # 用以上句子训练词向量模型 model = gemso.models.Word2Vec(sentences,min_count=1) print(model['sentence']) # 输出单词 sentence 的词向量