导图社区 python学习基础上
这是一篇关于python学习基础上的思维导图。您是否真正了解random库?您是否全面了解了Python?次导图将Python基础知识点依次罗列,从0开始学习,使您真正意义上学会Python,学懂Python!
编辑于2021-05-25 16:41:52Python 机器学习基础
Python 程序设计
程序设计概要
①什么是程序,程序设计?
②如何进行一次程序设计?
①选择一门合适的计算机语言
计算机语言的分类
机器语言
机器语言是机器能直接识别的程序语言或指令代码,无需经过翻译,每一操作码在计算机内部都有相应的电路来完成它,或指不经翻译即可为机器直接理解和接受的程序语言或指令代码。机器语言指令是一种二进制代码,由操作码和操作数两部分组成
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。汇编语言编译器有MASM、NASM、TASM、GAS、FASM、RADASM等,但大都不具备调试功能
高级语言
高级语言(High-level programming language)是一种独立于机器,面向过程或对象的语言。高级语言是参照数学语言而设计的近似于日常会话的语言。本次课所学习的Python就是这样一门高级语言
②按照一定的步骤进行设计
程序设计六大步骤
③程序设计时应该遵守什么规范?
《Python参考手册》
程序与程序设计语言
①复习:什么是程序,什么是程序设计
②认识本次课程序设计语言:Python
Python语言特点
Python是一个怎么样的高级语言?
Python集成开发环境
①什么是集成开发环境,为什么需要集成开发环境
②掌握:Pycharm\jupyter\spyder
Python语言基本语法
思考:Python作为高级语言,其实就像我们学数学一样,需要从最基础的“+-*/”开始学习,相当于最底层的逻辑
①基本字符、标识符、关键字
基本字符可以理解为构成Python语言最基础的符号,相当于英语的ABC。而标识符其实最大的作用就是起到一个让别人看到,就懂的作用,通常用来对变量命名,比如df = pd.read_csv(),这个df就算是一个标识符。而关键字就是Python内置的一些有作用的词,比如if,False等
②对象和数据类型
①什么是对象,有哪些对象种类:Python是一门面向对象的语言,我简单地可以认为所谓对象,就是一个被创建并储存在内存中的一些东西,他们是客观存在的
②Python的数据类型有哪些,又有哪些规则?
简单数据类型(数字)
简单数据类型其实可以理解为对单个的,独立的一个对象进行界定,在Python中有①整型int②浮点型float③复数complex④布尔类型bool等多中
整形int
5
浮点型float
5.15
复数complex
5.14j
布尔类型bool
True
序列对象
序列对象顾名思义就是有序的一系列的对象的组合
字符串str
'hello world'
元组tuple
('hello','world')
元组其实相当于一个只读列表
列表list
['hello','world']
其他类型
集合类型set
字典类型dict
考察点
①各种对象如何被创造和更改?
②各种对象的差别和适用范围?
③各种对象之间的转化?
④序列对象如何被提取
③可变对象与不可变对象
可变对象:可变对象的值可以被修改。list、dict、set等
考察点:如何进行修改?
不可变对象:一旦创建其值就不能被改变。int、float、str、tuple等
③表达式和语句
表达式
概念:数据对象和运算符按照一定的规则写出的式子,描述计算过程。这一点很好理解,就像数学中的y=x+1,这就是一种表达式,x和y就是数据对象,+和=就是运算符
运算符
考察点:不同运算符的规则与应用
表达语句
概念:说白了就是用来表达的一句话,只不过是用高级语言写的
简单语句
考察点:简单语句的书写规则,注释的应用
复合语句
考察点:复杂语句的组成与书写逻辑 PPT中第二讲20页有语句实例
④赋值语句
概念:说白了就是给一个变量赋值,其基本语法为:<变量> = <表达式>
三种类型:连续赋值、同步赋值、复合赋值
考察点:如何进行赋值
⑤字符串
概念:字符串或串(String)是由数字、字母、下划线组成的一串字符。
创建字符串:创建一个字符串变量(关键点是引号)——通过连接操作获取字符串——通过print获取带引号的字符串
获取字符串
获取字符(考察点):直接用下标切取
获取子串(考察点):通过起、始、步长的下标方式切取
⑥输入、输出语句
输入语句
考察点:①通过input函数输入语句 ②通过int()\float()等函数对数据类型进行转换(通常是字符串转数字)
输出语句
考察点:①通过print()函数输出语句 ②多个变量同时输出与组合 ③格式化函数的用法:即%s%的用法与format函数的用法
⑦模块和函数系统
概念:模块可以理解为是工具包,分为内置的工具包和外置的工具包
考察点:①通过import、from xx import xx等导入方法的使用 ②对某一个模块或者函数系统整体性的了解。比如import matplotlib\import matplotlib.pyplot as plt等形式的差别
程序的控制结构
程序的结构化流程控制
结构类型:三种基本结构
顺序结构
特点:可以理解为自上而下的,一条一条对代码进行执行
例题:已知一个圆的半径,求其内切正五边形的面积
程序包:math
被用到的函数或功能:float、input、math.sin、math.pi、math.tan、format
选择结构
特点:类似于英语中的条件状语从句
一般结构形式
if XX
例题:求一个整数的绝对值,当这个整数小于零的时候需要处理,取它的相反值。其它情况都不需要作处理
if + else
例题:判断一个点在圆内还是圆外。
if + elif +else
例题:根据任意一个实数x的取值,决定y的值为-1、0和1。
循环结构
特点:用同一个逻辑对某一个目标进行不断地处理
一般结构形式
while XX:
例题:total=0i=0while i<=100: total=total+i i=i+1print("1~100的累加和为:{}".format(total))
for <var> in <sequnence>:
例题:S=0for i in range(1,101): S=S+iprint("1~100的累加和为:{}".format(S))
特殊结构示例
return、break与continue语句的辨析
break:直接结束本次循环,且退出循环
continue:结束本次循环,并重新开始下一轮循环
return:return 语句就是讲结果返回到调用的地方,并把程序的控制权一起返回
else语句的使用:s=0for i in range(5): x=int(input("输入一个正整数:")) if x<0 : print("{}不是正整数".format(x)) break else: s=s+xelse: print("5个正整数的和为:{}".format(s))
try——except——finally
基本思路:简单程序——三种基本结构组合,复杂程序——三种基本结构嵌套
三种基本结构的特点
一个出口
一个入口
结构中每一部分都有机会被执行
结构中不存在死循环
程序的模块化设计
认识模块化设计
什么是模块化设计:模块是指提供特定功能的相对独立的单元。
举例:生活中的活动板房,每一个房间就是一个模块,或者智能手机中的不同的APP
模块化设计思想:模块化设计的基本思想:对产品进行功能分析的基础上,将产品分成若干个功能模块,再将预制好的模块进行组装,形成最终的产品。
模块的特点:独立、抽象、互换、灵活
模块化开发的一般过程:”逐步递进的思想“。在模块化设计中,运用自顶向下,逐步细化的分析方法分层设计,得到功能独立的模块再以功能块为单位进行程序设计,实现其求解算法。
函数的定义与调用
什么是函数:python中的函数更像是一个实现某种功能的模块,一个被定义的函数是由其底层代码构成的,正如上一章节中讲到的程序基本结构的特征中的一个出口和一个入口,函数就是我们在入口处输入一些参数,然后返回我们一些结果
函数的基本构成
函数名称
形参
定义函数的语法(底层逻辑)
例子:math.pi(x)中math.pi就是函数名称,x是形参,计算pi的底层逻辑代码就是语法
函数的调用
有返回值的函数调用:有时候出口得到的结构会是一个返回值,此时需要通过某种方法去接收返回值
赋值语句:将返回值赋值给一个变量
z=gcd( 28,70)
表达式语句:将返回值作为表达式的一个数值,继续参与运算
print(gcd(28,70)*gcd(26,65))
作为参数实参
z=gcd(gcd(28,70),21)
无返回值的函数调用
print函数和pause函数的调用,仅仅执行一个输出操作
实例展示
见PPT
Python 数据分析处理
批量数据的算法设计
为什么要单独将批量数据提出:因为在python的实际运用过程中,针对批量数据的处理才是常态,虽然第一章节中对数据进行了初步的认识,但是对每一种数据结构的应用还不足,因此,在Python数据分析处理的第一部分,需要重新认识数据结构
组合数据类型
元组和列表
序列:序列是字符串,列表,元组的统称,他们都可以通过索引得到每一个元素---默认索引值总是从零开始---可以通过切片的方法得到一个范围内的元素的集合
考察点:序列的函数方法
列表
列表的创建
L = []的直接创建
for X in Y的创建方法
列表的序列操作
联接:通过+号,将两个列表的表项连接为一个列表
复制:通过*号与数学相乘,将列表的内容进行复制。注意:无论是连接还是复制,都是对列表的内容进行操作,所谓列表的内容,就是两个逗号之间的那个符号
索引:下标访问[5],嵌套结构访问[5][5],切片访问[2:5]
元组
元组的创建:T=()
元组的序列操作(与列表一致)
其他功能(序列的函数操作,见ppt)
序列函数
逻辑判断
遍历
列表和元组、字符串根本区别:列表是可变对象,每一个数据项可以视为一个变量,通过下标访问修改变量的值,所以列表元素可以读取,可以修改,元组和字符串的元素是不能通过下标访问修改的
列表和元组的批量数据算法设计实例:见PPT
字典与集合
集合
集合的创建
可变集合
S = {},利用标识符直接创建,每一项用逗号分隔
S = set()的创建方法
不可变集合
FS = frozenset()的创建方法
特别说明:①创建一个空集合必须用S = set()而不是 S={},因为{}是用来创建一个空字典的。②因为集合中所有元素必须可hash,所以可变对象(set、list、dict)不能作为集合的元素
集合的应用
列表去重复工作:因为集合要求内部元素只能出现一次,所以利用这个特点可以通过列表创造集合来对列表去重。L2=list(set(L1))
集合运算:集合运算与高中学习的运算法则一致,运算符号见PPT
集合对象的方法(function):见ppt或者网上可查
实例操作:利用random函数在集合中生成随机数,见ppt
字典
字典的创建
字面量 创建字典:dic = ['key' : 'value']。说明:与集合类似,字典是无序的,字典中键值对的顺序与定义时的顺序可以是不一样的。使用空的花括号可以创建一个空的字典。字典的键值必须使用不可变对象,但是字典的值可以使用可变对象或不可变对象。一般,应该使用简单的对象为键。
利用d = dict(key = value)。注意:使用dict()函数创建字典对键值对的要求比使用{}来创建字典的键值对的要求更严格,键名key必须是一个标识符,而不能是表达式
字典的访问
访问的中心思想是通过键访问,一般有三种访问方式:d[key]d[key]=valuedel d[key]
字典的应用
字典对象的方法(function):ppt或者网上可查
实例操作:统计文字频率,见ppt
文件
文件
概念:这里提到的文件不是平时所认识的文件夹,而是泛指一切存在于计算机中,不同格式的储存信息的有序集合
文件目录
绝对路径文件名:绝对路径文件名就是这个文件所处的绝对位置,不会发生改变的
相对路径文件名:相对路径文件名是一个执行的程序的当前路径下的文件名,我们在编写程序处理数据的过程中比较多使用相对路径
访问文件的流程:打开文件——读写文件——关闭文件
文件的基本操作(基于内置简单工具包)
打开文件:以txt文本文件为例,使用open函数打开一个文件,f = open(file,mode = 'r',coding = none),其中file代表文件名,mode代表打开文件的方式(有七种,见ppt),coding是文件的编码方式,默认为none。注意:①open函数不具有创造文件夹的功能。②使用r原生字符串可以避免转义字符的出现)
关闭文件:f.close方法
with语句的使用
疑惑:with语句的特点与优缺点?with语句具有联系上下文的特点。with语句在到达语句末尾时,会自动关闭文件,即便出现异常,也会正常关闭文件。使用with语句操作文件,不需要调用close函数关闭文件。
句型:with open(file,mode = 'r'....) as f:
从文件中读取数据
利用函数:对于文本文件,有三种内置函数。建议运行代码进行辨析
f.read(size)返回一个字符串,内容为长度为size的文本。参数size表示读取的数量,可以省略。如果省略size参数,则表示读取文件所有内容,作为一个字符串返回。
f.readline(),返回一个字符串,内容为文件当前一行的文本。
f.readlines(),返回一个列表,列表的数据项为一行的文本 [line1,line2,...lineN]。再通过循环操作可以逐行访问列表中每一行的内容。
迭代循环读取数据,文本文件对象也是可迭代对象,也可以使用for循环语句遍历所有的行。语法: for line in f:
不同方法读取文件实例:见ppt,出现了需要自主补充的一个模块方法,sys模块的argv()方法。①直接读取某个文件②通过三种方法(readline,readlines,for循环为读取的文件加行号)
将数据写入文件
直接写入(不需要被接收),f.write('hello')
带有换行符的写入,f.write('hello\nhello\n')
文件中的内容定位
f.read()的特点:f.read() 读取之后,文件指针到达文件的末尾,如果再来一次f.read()将会发现读取的是空内容,如果想再次读取全部内容,必须将定位指针移动到文件开始
定位函数:f.seek(offset, from_what)。from_what值为 0 表示自文件起始处开始,1 表示自当前文件指针位置开始,2 表示自文件末尾开始。 *from_what* 可以忽略,其默认值为零,此时从文件头开始。offset表示从from_what再移动一定量的距离。
数据文件访问的程序设计
为什么要对数据文件的访问进行程序设计?——因为有时候访问的数据文件是海量的数据,并且可能拥有不同德格式,本次教学中以txt文本文件为例进行讲解。
补充函数:lambda函数
从文件中读取批量数值数据
读取思路:Python按文本读入文本文件中的数据,进行处理前,要按数据本身的含义,进行相应的类型转换。只要数据之间分隔的符号是一样的,例如空格、逗号、制表位等,都可以先使用read函数全部读取到一个字符串变量,再使用字符串变量的split函数分裂数据,最后修改数据的数据类型。如果数据之间分隔符号有规律但有多种,可以逐层分裂数据。
算法设计与程序实现(参考ppt),我们在“写代码”的过程中,不要一股脑地开始写,需要先进行算法设计,然后将算法设计的模块进行带吗话
疑惑点:读取出来的数据是什么样子的数据格式呢?是列表、字符串还是?对于这种问题,选择type()函数进行查看是最好的方式。
从文件中读取批量结构数据
什么是结构数据?所谓的结构数据,也就是一个数据由若干个不同属性的成员构成。比如四川省概况,就分为了人口、区位、人均GDP等。通常来说,我们可以考虑以嵌套列表的形式对结构数据进行存储。[[],[],[],[],...,[]]
示例:使用循环迭代访问数据文件data5.txt。 L=[]with open("data5.txt") as f: # 打开并将文件储存为f for line in f: # 读取f的每一行 line=line.split(",") # 将每一行的数据以,分割 for i in range(3,len(line)): # 计算一共有多少个数据 line[i]=int(line[i]) # 将每个数据int化 L.append(line) # 通过append将每一个数据放入一个新的列表print(L)
输出列表数据到文件
一维数值数据输出示例(见ppt第八讲)
方法一:循环迭代访问列表,每读一个数据,转换为字符串对象,写入到文件。
方法二:循环迭代访问列表,构造输出字符串对象。最后一次写入到文件。
文件输入输出程序综合示例(ppt的42页)
numpy数据分析模块
什么是Numpy?NumPy是Python的一个扩充程序库。支持高级大量的维度数组与矩阵运算,此外也针对数组运算提供大量的数学函数库。
主要包括
一个强大的N维数组对象Array
比较成熟的array优先的函数库
有利于
数组的算数和逻辑运算
傅里叶变换和用于图形操作
与线性代数有关的操作
用于整合C/C++和Fortran代码的工具包
实用的线性代数、傅里叶变换和随机数生成函数
Numpy的Ndarray对象
什么是Ndarray对象?Numpy的底层是一个Ndarray结构,该结构可以生成N维数组对象。类似于pandas的底层是dataframe
特点:ndarray 对象是用于存放同类型元素的多维数组
ndarray 内部由以下内容组成:指针:一个指向数据的指针。dtype:数据类型。Shape:表示各维度大小的元组。(相当于是一个什么维度的矩阵)Stride:一个跨度元组,指为了前进到当前维度下一个元素需要"跨过"的字节数。
相关术语
轴(axis):每一维数组称为一个轴
秩(rank):秩是描述轴的数量,即数组的维数。一维数组的秩为1,二维数组的秩为2,依此类推。
相关函数
创建ndarray:array函数的使用。numpy.array(object, dtype=None, copy=True, order=None, subok=False, ndmin = 0) 各项参数ppt可查,其中比较重要的是order,c为行,f为列方向,object是指数据或嵌套的数列,所以创建array的作用实际上是将一个现存的数组变为ndarray格式,比如列表和嵌套列表。
ndarray.shape:返回一个元组,元组的长度是维度的数目,即ndim(秩)注意,这是对于ndarray这个数据结构的方法,而不是numpy的方法。其次,ndarray.shape和ndarray.reshape函数可以调整数据大小。 rearr = arr.reshape(3,2)与arr.shape = (3,2)具有相同的效果
numpy.empty(shape,dtype = float, order = 'C'。创建一个指定形状(shape)、数据类型(dtype)且未初始化的数组(空数组)。dtype = np.int(不能直接输入为int,指令不同)
numpy.zeros(shape,dtype = float,order = ‘C’)。创建指定大小的数组,以0填充)
numpy.ones(shape,dtype = float,order = ‘C’)创建指定形状的数组,数组元素以 1来填充。
能创建序列的函数
range()函数:range(start, stop[, step]),其功能是根据[start,stop) 范围以及step设定的步长,生成一个序列。计数不包括stop。例如:arr1=range(0,5,1)
Numpy .arrange()函数:函数形式:arange([start,] stop[, step,], dtype=None),其功能是根据[start,stop)范围以及step设定的步长,生成一个ndarray。
linspace()函数numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)scalar是序列的起始点, stop是序列的结束点, num是在[start,stop]范围内生成的样本数。例如:arr=numpy.linspace(1, 5, 10)
区别:arrange函数可以以小数为步长,而linspace则是可以生成指定个数的序列
示例:见ppt的《一定要加油》
数组的切片和迭代
切片
什么是切片?切片是指对数据序列对象取一部分的操作,前面介绍过字符串、列表、元组都支持切片语法。ndarray数组与其他数据序列类似,也可以进行索引、切片和迭代。
二维或多维数组的切片:对ndarray进行切片操作与一维数组相同,用索引标记切片的起始和终止位置。因为 ndarray可以是多维数组,在进行切片时,通常需要设定每个维度上的切片位置
迭代
迭代与循环?遍历与递归?循环(loop),指的是在满足条件的情况下,重复执行同一段代码。比如,while语句。 迭代(iterate),指的是按照某种顺序逐个访问列表中的每一项。比如,for语句。 遍历(traversal),指的是按照一定的规则访问树形结构中的每个节点,而且每个节点都只访问一次。 递归(recursion),指的是一个函数不断调用自身的行为。比如,以编程方式输出著名的斐波纳契数列。
迭代方式:①for循环迭代 ②迭代器对象numpy.nditer,如for x in np.nditer(a): print(x)
Numpy的计算
条件运算
①常见的比较大小运算可以在Numpy中实现:num[num<0.5]=0
②where函数实现查找操作。where函数格式如下: where(condition, x if true, y if false) 根据条件表达式condition的值返回特定的数组。当条件为真时返回x数组,条件为假时返回y数组。
统计运算:由numpy的统计函数实现,可查ppt和网,格式就是numpy.max()等
基本数组运算
Pandas数据分析模块
什么是pandas?Pandas(Python Data Analysis Library)是Python的一个数据分析包,是基于NumPy的一种工具,为了解决数据分析任务而创建的。
Pandas的三种数据结构
series(一维数组):与NumPy中一维的ndarray类似。数据结构接近Python中的List列表,数据元素可以是不同的数据类型。(ndarray要求是相同的)
series的创建:pd.Series(data, index) data表示数据值。思考点:data应该放什么类型的数据?index应该放什么类型的数据?列表,元组,一维数组? index是索引,缺省情况下会自动创建一个0到N-1(N为数据的长度)的整数型索引。
例子1:import pandas as pd s = pd.Series([1,3,5,6])
例子2:自定义索引的序列:s2=pd.Series([3.4,0.8,2.1,0.3,1.5],range(5,10)) s3=pd.Series({'Longitude':39,'Latitude':116,'Temperature':23} s3["City"]="Beijing" s3['Temperature']+=2
series的访问:与列表等数组的访问方法一样
series的修改:通过赋值语句访问并修改
series的函数
简单举例:默认索引时: s = pd.Series([1,3,5,6]) s.sum() 设置了索引时: s3=pd.Series({'Longitude':39,'Latitude':116,'Temperature':23}) s3.mean()
Dataframe(二维数组):DataFrame可以理解成Series的容器,其内部的每项元素都可以看作一个Series。DataFrame是重要的数据结构,在机器学习中经常使用。 (可以视为计量中的面板数据)
dataframe的创建:基本方法是DataFrame([data, index, columns, dtype, copy])
例1:import pandas as pd dict1 = {'col1':[1,2,5,7],'col2':['a','b','c','d']} # 第一列为1257,第二列为abcd,默认序号 df = pd.DataFrame(dict1)
例2(有列表创建):lista = [1,2,5,7] listb = ['a','b','c','d'] df = pd.DataFrame({'col1':lista,'col2':listb})
例3(由二维数组创建):a = pd.DataFrame([[1,0.1,5],[2,0.5,6],[4,0.8,5]],columns = ["t1", "t2", "pl"])
例4(从csv或者excel直接读取):data = pd.read_csv('dataH.txt',sep = ' ') # pd.read_csv函数的具体的参数网上可查
dataframe的访问:
通过索引访问: 列方向索引:对DataFrame进行索引,可以获取其中的一个或多个列,注意:列方向为名称(key)索引。data['Ht'] 行方向索引:行方向可以使用行号索引: data[0:3] 简单过滤 data[data['Wt']<60]
loc函数切片:loc()函数是按索引名抽取指定行列的数据,格式: <DataFrame对象>.loc[<行索引名或行索引名列表>,<列索引名或列索引名列表>]
例子:data.loc[[5,6],['Ht','Wt']] 意思为,抽取第5,6行和Ht,Wt列的数据
iloc函数切片:按位置访问抽取方法,同样有行列两个参数,可以是下标值,可以是列表、还可以是切片
例子:data.iloc[[5,6],[0,1]] 如果是切片: data.iloc[5:10,[0,1]] 或 data.iloc[5:10,:2]
dataframe的修改
方法与结果:修改dataframe中的某个值——通过赋值语句修改数据,可以修改指定行、列的数据,还可以把要修改的数据查询筛选出来,或重新赋值。
例子:df1=pd.DataFrame(np.arange(16).reshape(4,4), index=['BJ','SH','GZ','SZ'], columns=['小白兔','小白免','小熊猫','小能猫']) df1['小白兔']['GZ']=44 df1['小熊猫']=44 # 辨析这两个44的修改结果
dataframe的描述统计
简单举例:#求和 import pandas as pd df1 = pd.read_csv('dataH.txt',sep = ' ') #指明分隔符 df1 df1.sum() 等于 df1.sum(axis=0) df1.sum(axis=1)
Panel(三维数组):可以理解为DataFrame的容器,其内部的每项元素都可以看作一个DataFrame。 (通常是作为容器的存在而不直接使用)
注:python中没有数组这个数据结构,但是通常把列表看作数组,[[],[]],比如这是一个二维数组
Pandas的汇总和描述性统计计算
函数名 功能说明 count 统计数据值的数量,不包括NA值。 describe 对Series、DataFrame的列计算汇总统计。 min,max 计算最小值、最大值 argmin,argmax 计算最小值、最大值的索引位置 idxmin,idxmax 计算最小值、最大值的索引值 sum 计算总和 mean 计算平均值 median 返回中位数 var 计算样本值的方差 std 计算样本值的标准差 cumsum 计算样本值的累计和 diff 计算一阶差分 注意:numpy和pandas求方差存在差异,原因是numpy 的std()函数 和 pandas 的std() 函数的默认参数ddof是不同的。ddof参数表示标准偏差类型,numpy中ddof默认是0,计算的是总体标准偏差;在pandas中ddof的值默认是1,计算的是样本标准偏差*。 注意:有些函数只能使用在series上,不能使用在dataframe上,需要分辨清楚。
Matplotlib可视化模块
认识matplotliab:Matplotlib是Python的一个基本2D绘图库,它提供了很多参数,可以通过参数控制样式、属性等,生成跨平台的出版质量级别的图形。 使用Matplotlib,能让复杂的工作变得容易,可以生成直方图、条形图、散点图、曲线图等。Matplotlib可用于Python scripts、Python、IPython、Jupyter notebook、web应用服务器等。
图表的基本结构
图表的结构一般包括:画布、图表标题、绘图区、x轴(水平轴)和y轴(垂直轴)、图例等基本元素。x轴和y轴有最小刻度和最大刻度,也包括轴标签和网格线。
Matplotlib绘图思路:Matplotlib在Figures(画布)上绘制数据图。 每个Figure可以包含一个或多个Axes(轴)。轴指定了点的区域。 在轴上创建图形:最简单方法是使用Axes.plot在轴上绘制一些数据图形。
Matplotlib.pyplot绘图模块: matplotlib.pyplot是完成绘图工作的函数的集合。 包含常用的方法有: 1、整体设置:figure, add_subplot, Subplots,plot,show等。 2、访问各子图的subplot等 3、设置图表参数的title,legend,text, xlabel,ylabel等。 4、图表形状:plot,scatter,hist,pie等。 5、Matplotlib还可以使用该imshow()功能显示图像。
Matplotlib绘图流程: 创建figure——创建axes——在axes上plot——(非开发环境下):show
例1:绘制空白图表 import matplotlib.pyplot as plt fig=plt.figure() ax1=fig.add_subplot(2,2,1) ax2=fig.add_subplot(2,2,2)
例2:在多个plot上画图 import numpy as np import matplotlib.pyplot as pltfig,axes=plt.subplots(2,1) plt.subplot(2,1,1) x = np.linspace(-10, 10, 100) #列举出一百个数据点 y = np.sin(x) #计算出对应的y pl.plot(x, y, marker="o")
wordcloud词云可视化工具
认识wordcloud:词云图worldcloud,也叫文字云,是对文本中出现频率较高的“关键词”数据给予视觉差异化的展现。词云图突出展示高频高质的数据信息,凸显出数据中所包含的文本的主旨。可以用于快速显示数据中的文本频率。
例1:使用matplotlib显示统计结果。 #导入wordcloud模块和matplotlib模块 from wordcloud import WordCloud import matplotlib.pyplot as plt #读取一个txt文件 f = open(r'texten.txt','r').read() #生成词云 wordcloud=WordCloud(background_color="white",width=1000,height=860,margin=2 ).generate(f) #显示词云图片 plt.imshow(wordcloud) plt.axis("off") plt.show() #保存图片 wordcloud.to_file('test.png')
例2:使用指定的图片显示统计结果 from wordcloud import WordCloud,ImageColorGenerator import matplotlib.pyplot as plt from scipy.misc import imread text = open('total.txt','r').read() #读入背景图片 bg_pic = imread('1.png') wordcloud = WordCloud(mask=bg_pic,background_color='white',font_path = "STSONG.ttf",scale=1.5).generate(text) image_colors = ImageColorGenerator(bg_pic) plt.imshow(wordcloud) plt.axis('off') plt.show() wordcloud.to_file('test.jpg')
Python 机器学习