Python常用库

本周我们一起来了解一下:

  1. python库的导入
  2. 数据分析常用python库:
    1. Numpy,
    2. SciPy,
    3. Matplotlib,
    4. pandas,
    5. StatsModels,
    6. scikit-learn,
    7. keras
  3. 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
  1. 数据分析常用python库:
    1. 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,可以发到我邮箱

你可能感兴趣的:(python,python)