薛钦亮的python教程(七)飞速上手python常用包和操作

人生苦短,我爱python

  • 一、numpy
  • 二、pandas
  • 三、matplotlib
  • 四、seaborn
  • 五、sklearn

接上文:薛钦亮的python教程(六)站在前人的肩膀上——模块和包的使用

本文集中了几种python初学者最常用的包的简单介绍和线上资源。
由于篇幅有限,本文不对任意一个包详细介绍,只介绍最核心常用的基本操作,所以会显得有点杂,另外,本文会给出所有提到的包的详细文档,可以具体去查看。
本文提到的包,在大部分环境下,在命令行中使用pip install一下即可。例如:

pip install numpy

一、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]])

薛钦亮的python教程(七)飞速上手python常用包和操作_第1张图片
更多操作见:菜鸟教程、numpy中文文档、numpy英文官方文档。

二、pandas

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

这个包的主要功能是数据可视化,可以用于绘制各种图表。在想要使用图表时,一般都是当场查教程,从网上搜索一个出来改一改,所以基本无需记忆和系统学习。
这里举一个最通用的例子来说明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()

薛钦亮的python教程(七)飞速上手python常用包和操作_第2张图片

我们一般简写pyplot为plt,这个可以理解为一个交互式的画图对象,有条形图、直方图、柱状图、饼图、散点图、箱型图以及各种复合图。图上的线、点、柱等可以修改颜色、样式等,图可以添加标题、图例、标签、坐标、网格等,具体有需要时使用搜索引擎即可,我觉得无需系统学习
详细教程见:matplotlib中文示例、matplotlib英文官方文档、matplotlib菜鸟教程。

四、seaborn

先来欣赏一下seaborn的绘图。
薛钦亮的python教程(七)飞速上手python常用包和操作_第3张图片

这个包同样用于数据可视化,只是更加美观,种类更多。同样地,这个包无需系统学习,需要的时候自行搜索即可,这里提供几个比较好的参考文档。
seaborn英文官方文档、seaborn快速教程。

五、sklearn

这个包是机器学习入门必备,初学者在不掌握任何模型的数学原理的情况下,可以用这个包来快速构建一个机器学习项目,并且这个包涵盖了从数据到模型到评测的全流程,是一个非常庞大的包。

同样地,由于这个包非常庞大,我们无法掌握所有细节,因此要用到相关模型时再去搜索相关代码,然后当一个代码的搬运工是省时省力的办法。
下面举一个粗浅的例子来说明流程。

'''用线性回归模型实现多元回归'''
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的道路上越走越远,不断进步。

你可能感兴趣的:(python从入门到入土,可视化,python,机器学习,人工智能,编程语言)