接上文:薛钦亮的python教程(六)站在前人的肩膀上——模块和包的使用
本文集中了几种python初学者最常用的包的简单介绍和线上资源。
由于篇幅有限,本文不对任意一个包详细介绍,只介绍最核心常用的基本操作,所以会显得有点杂,另外,本文会给出所有提到的包的详细文档,可以具体去查看。
本文提到的包,在大部分环境下,在命令行中使用pip install一下即可。例如:
pip install numpy
numpy的核心概念是ndarray
,别名array,也即python中的多维数组,我将介绍array的创建、访问和索引。在用这个包之前,需要先熟练掌握list的基本用法,包括创建和访问。
最常用的生成数组的方法是,用一个List/Tuple来初始化numpy.array,类型可以自动识别,也可以通过dtype手动指定。
import numpy as np #一般缩写为np
a = np.array([1,2,4,5,6])
b = np.array([[3,4,6],[8,4,2]]) #如果高于一维,则每一个维度长度须保持一致
c = np.array([[2,7,8],[2,3,7],[2,6,3]],dtype = complex)
另一种非常重要的创建方法是arange,用法同python内置的range函数,但生成的是一个ndarray对象。
d = np.arange(5,10)
array([5, 6, 7, 8, 9])
数组的另一个重要属性是形状(shape)。获取形状的方法如下
print(b.shape)
结果为
(2, 3)
可以用reshape函数重置形状。
b.reshape(3,2)
结果为
array([[3, 4],
[6, 8],
[4, 2]])
简单来讲,这种数组适用于矩阵的基本运算规律,矩阵可以用T
来获取其转置,满足四则运算和矩阵的乘积(可以用@
符号)。
print(b*2)
print(b.T)
print(b @ b.T)
array([[ 6, 8, 12],
[16, 8, 4]])
array([[3, 8],
[4, 4],
[6, 2]])
array([[61, 52],
[52, 84]])
array访问元素同list创建的高维数组,通过中括号和下标方式即可,此处不多赘述。
array的切片和索引操作同list,最多可以有三个参数,分别为:start, stop, step,每个之间用(:)分隔。
start:起始范围,默认为从0开始。
stop:终止范围,但不包括stop本身。
step:步长,默认为1,可以指定为非0整数(负数是允许的)。
如果要指定高维数组的切片,可以用(,)分隔每个维度。
举个例子:
e = np.arange(25).reshape(5,5) #创建一个5*5的方阵
print(e[2:4,1:])
array([[11, 12, 13, 14],
[16, 17, 18, 19]])
更多操作见:菜鸟教程、numpy中文文档、numpy英文官方文档。
pandas是数据分析最基础的入门库,核心概念是Series(一维)、DataFrame(二维,此处参考一下Excel的样子)。二维的DataFrame在效果上可以看作多个一维的Series构成,所以下面主要讲Dataframe。
最常用的场景是读取一个csv文件或者xlsx文件并分析,下面列举最主要的一些操作。
import pandas as pd
data = pd.read_csv("path/demo.csv")
data2 = pd.read_excel("path/demo.xlsx")
data.head(5) #查看前5行,不填的话默认为5
data.tail(5) #查看后5行,不填的话默认为5
data.columns #获取列名
data.index #获取行索引
data['A'] #获取名称为A的一列,返回类型为Series
data['B'][0] #获取名称为B的一列的第一个元素
data[1:5] #截取第2行至第5行(行从0开始标号)
data.iloc[3:5, 0:2] #按行列位置索引,前面为行,后面为列
更多操作见:pandas中文教程(w3cschool)、pandas中文文档、pandas官方英文文档。
这个包的主要功能是数据可视化,可以用于绘制各种图表。在想要使用图表时,一般都是当场查教程,从网上搜索一个出来改一改,所以基本无需记忆和系统学习。
这里举一个最通用的例子来说明matplotlib中最常用的子包pyplot的用法。
import numpy as np
import matplotlib.pyplot as plt
x = np.arange(0, 5, 0.1)
y = np.sin(x)
plt.xlabel('X')
plt.ylabel('Y')
plt.title('y=Sin(x)')
plt.plot(x, y, color='red')
plt.show()
我们一般简写pyplot为plt,这个可以理解为一个交互式的画图对象,有条形图、直方图、柱状图、饼图、散点图、箱型图以及各种复合图。图上的线、点、柱等可以修改颜色、样式等,图可以添加标题、图例、标签、坐标、网格等,具体有需要时使用搜索引擎即可,我觉得无需系统学习。
详细教程见:matplotlib中文示例、matplotlib英文官方文档、matplotlib菜鸟教程。
这个包同样用于数据可视化,只是更加美观,种类更多。同样地,这个包无需系统学习,需要的时候自行搜索即可,这里提供几个比较好的参考文档。
seaborn英文官方文档、seaborn快速教程。
这个包是机器学习入门必备,初学者在不掌握任何模型的数学原理的情况下,可以用这个包来快速构建一个机器学习项目,并且这个包涵盖了从数据到模型到评测的全流程,是一个非常庞大的包。
同样地,由于这个包非常庞大,我们无法掌握所有细节,因此要用到相关模型时再去搜索相关代码,然后当一个代码的搬运工是省时省力的办法。
下面举一个粗浅的例子来说明流程。
'''用线性回归模型实现多元回归'''
from sklearn import linear_model
X = [[0, 0], [1, 1], [2, 2]] #一组多元自变量
Y = [0, 1, 2] #一组因变量
reg = linear_model.LinearRegression() #创建模型
reg.fit(X, Y) #训练
print(reg.coef_) #打印参数
z = [[3,3]] #一组待预测变量
result = reg.predict(z) #预测结果
print(result)
上面代码虽少,但涵盖了数据获取,模型构建,模型训练,预测新数据(机器学习的目的)等关键过程,体现了机器学习的核心思想,即通过积累的数据和计算机强大的算力去构建模型,帮助人们在新的情形下做出判断。如果要使用其他模型,框架也大致相同,只需要更换引入的模型即可。
如果学习这个模块有困难,没关系,因为机器学习的内容本身就很庞大了,我们只要掌握基本的思想和方法即可,有限的精力不应该投入机械的学习中。
详细请看:sklearn英文官方文档、sklearn中文文档(不全)、sklearn中文文档(需要关注一个公众号可以解锁全文)。
本文应该是系列教程中最杂的一篇,通过对这些包的介绍和了解,读者最应该掌握的能力其实是搜索和自学能力。希望大家在python的道路上越走越远,不断进步。