<>本周我们一起来了解一下:
* python库的导入
* 数据分析常用python库:
* Numpy,
* SciPy,
* Matplotlib,
* pandas,
* StatsModels,
* scikit-learn,
* keras
* python库的导入
前两周我们练习了python的部分自带功能,但是,仅仅依靠python自带功能是远远不够数据分析的,更不用提软件工程开发。
总有一些软件爱好者和开发者愿意贡献他们的劳动成果,这些贡献出来的python库实现了通用功能,比如统计计算,绘图等,越来越多的人贡献自己的知识完善这些库,以至于使python越来越强大。我们把这个群体叫做“开源社区”“开源贡献者”。
因此,我们需要导入第三方开发的python库,库也可叫做包,或者模块。
<>import语句用于导入python
## math库用于数学运算 import math math.sin(0) math.sin(math.pi/2)
<>自定义库的名称
import math as m m.sin(0)
<>导入库中的特定函数
from math import exp as e e(2)
<>导入库中的所有函数
from math import * exp(2) sin(pi/2)
<>第三方库的下载安装
pip install ***
easy_install ***
conda install ***
# 安装numpy库 pip install numpy
* 数据分析常用python库:
* Numpy,
由于python没有自带的数组类型,如果用列表list处理数组和矩阵,运算效率很低。
Numpy专门用于数组和矩阵运算,它的高效主要因为两个因素:
(1) 用c语言编写,c语言接近系统底层,执行效率高
(2) numpy会安排一块地址连续的内存空间,内存寻址效率高
pip install numpy # 下载并安装numpy conda install numpy # 同上 import numpy as np #
命名numpy为np a = np.array([2,0,1,5]) # 创建数组 print(a) # 输出a print(a[:3]) #
对a切片,输出前三个元素 print(a.min()) # 输出a中的最小元素 a.sort() # 对a的元素进行排序 b =
np.array([[1,2,3],[4,5,6]]) # 创建二维数组 print(b*b) # 计算数组的元素平方 2. SciPy,
其实numpy的数组运算还不是真正的矩阵运算,因为如上面的例子,两个numpy数组相乘,其实只是对应元素乘积。SciPy则默认矩阵的运算规则。 #
求解非线性方程组 # 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]) print(result) # 定积分 from scipy import integrate def g(x):
return (1-x**2)**0.5 # 被积函数 (1-x^2)^0.5 pi_2, err = integrate.quad(g, -1, 1) #
pi_2是积分结果,err是误差 print(pi_2, pi_2*2) 3. Matplotlib,
matplotlib是python流行的可视化库。该库擅长二维图形。
import numpy as np import matplotlib.pyplot as plt 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$') plt.xlabel('Time(s)') plt.ylabel('volt')
plt.title('A Simple Example') plt.ylim(0,2.2) plt.legend() plt.show() 4. pandas,
pandas的命名来自于面板数据panel data和数据分析data analysis的组合。
AQR Capital Management公司在2008年开发成功,2009年开源。
pandas是数据分析的常用工具,但是我们未必能就记住所有命令,一旦有不清楚的功能,可以搜索百度或查阅相关工具书。
# 安装pandas pip install pandas # 安装excel读写工具库 pip install xlrd xlwt # 使用pandas
import numpy as np import pandas as pd s = pd.Series([1,2,3], index =
['a','b','c']) # 序列s d = pd.DataFrame([[1,2,3],[4,5,6]], columns=['a','b','c'])
# 数据框(表)d d2 = pd.DataFrame(s) # 转换s为数据框,保存到d2 d.head() d.describe()
d.to_excel('data.xls') # 保存为xls文件 pd.read_excel('data.xls') # 读取xls文件
d.to_csv('data.csv') # 保存为csv pd.read_csv('data.csv') #读取csv 5. StatsModels,
statsmodel用于统计分析
# 进行时间序列的ADF平稳性检验 from statsmodels.tsa.stattools import adfuller as ADF #
导入ADF检验函数 import numpy as np ADF(np.random.rand(100)) # 生成100个随机数数组,返回平稳性检验结果
6. scikit-learn,
简称sklearn,是机器学习的python库。大部分的机器学习任务都能用sklearn完成。
# 鸢尾花数据训练SVM模型 from sklearn import datasets # 导入sklearn自带数据集 iris =
datasets.load_iris() # 鸢尾花数据集调用.load_iris(),保存为iris print(iris.data.shape) #
查看数据集大小 print(iris['target_names']) print(iris['feature_names']) #(150, 4)
#['setosa' 'versicolor' 'virginica'] #['sepal length (cm)', 'sepal width (cm)',
'petal length (cm)', 'petal width (cm)'] 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]]) # 输入一组鸢尾花参数进行判断 #array([0]) 7. keras
keras专门用于人工神经网络计算。现有的几个人工神经网络库有:pytorch,tensorflow,sklearn,theano
keras曾经与tensorflow合并,由于tensorflow库的模块调用比较混乱,导致了keras逐渐与tensorflow脱离依赖关系。
<>提交方式
命名为:Python常用库_班级_学号_姓名.ipynb,可以发到我邮箱