实用Python程序设计MOOC-第十一章数据分析和展示
[TOC]
实用Python程序设计MOOC-第十一章数据分析和展示
多维数组库numpy
numpy简介
- 多维数组库,创建多维数组很方便,可以替代多维列表
- 速度比多维列表快
- 支持向量和矩阵的各种数学运算
- 所有元素类型必须相同
1 | pip install numpy 安装 |
numpy创建数组的函数
函数 | 功能 |
---|---|
array(x) | 根据列表或元组x创建数组 |
arange(x,y,i) | 创建一维数组, 元素等价于range(x,y,i) |
linespace(x,y,n) | 创建一个由区间[x,y]的n-1等分点构成的一维数组,包含x和y |
random.randint(…) | 创建一个元素为随机整数的数组 |
zeros(n) | 创建一个元素全为0.0的长度为n数组 |
ones(n) | 创建一个元素全为1.0的长度为n数组 |
numpy创建数组示例
1 | import numpy as np #以后numpy简写为np |
numpy数组常用属性和函数
属性或函数 | 含义或功能 |
---|---|
dtype | 数组元素的类型 |
ndim | 数组是几维的 |
shape | 数组每一维的长度 |
size | 数组元素个数 |
argwhere(…) | 查找元素 |
tolist() | 转换为list |
min() | 求最小元素 |
max() | 求最大元素 |
reshape(…) | 改变数组的形状 |
flatten() | 转换成一维数组 |
1 | import numpy as np |
numpy数组元素增删
函数 | 功能 |
---|---|
append(x,y) | 若y是数组、列表或元组,就将y的元素添加进数组x得新数组。否则将y本身添加进数组x得新数组 |
concatenate(…) | 拼接多个数组或列表,”axis=0”行增加,”axis=1”列增加 |
delete(…) | 删除数组元素得新数组 |
numpy数组一旦生成,元素就不能增删。 上面函数返回一个新的数组。
numpy添加数组元素
1 | import numpy as np |
numpy删除数组元素
1 | import numpy as np |
在numpy数组中查找元素
1 | import numpy as np |
numpy数组的数学运算
1 | import numpy as np |
numpy数组的切片
numpy数组的切片是“视图”,
是原数组的一部分,而非一部分的拷贝
对视图的修改会影响原数组
1 | import numpy as np |
数据分析库pandas
pandas 简介
- 核心功能是在二维表格上做各种操作,如增删、修改、 求一列数据的和、方差、中
位数、平均数等 - 需要numpy支持
- 如果有openpyxl或xlrd或xlwt支持,还可以读写excel文档。
- 最关键的类: DataFrame,表示二维表格
1 | pip install pandas |
pandas的重要类: Series
Series是一维表格,每个元素带标签且有下标,兼具列表和字典的访问形式
1 | import pandas as pd |
切片是视图,是原来数据的一部分,修改了视图也会影响原来数据的变化。
DataFrame的构造和访问
DataFrame是带行列标签的二维表格,的每一列都是一个Series
1 | import pandas as pd |
1 | 性别 语文 数学 英语 |
DataFrame的切片和统计
1 | #DataFrame的切片: |
1 | 性别 语文 数学 英语 |
1 | df2 = df.iloc[:,0:3] #列切片(是视图),选0、 1、 2三列 |
1 | 性别 语文 数学 |
1 | df2 = df.iloc[:2,[1,3]] #行列切片,只取第一列和第三列 |
1 | 语文 英语 |
1 | df2 = df.iloc[[1,3],2:4] #取第1、 3行,第2、 3列 |
1 | 数学 英语 |
DataFrame的分析统计
1 | print("---下面是DataFrame的分析和统计---") |
1 | sort_values(....inplace=True,axis=1....) |
1 | 性别 语文 数学 英语 |
DataFrame的修改和增删
1 | print("---下面是DataFrame的增删和修改---") |
1 | >df初始 |
1 | df.drop(['体育','物理'], axis=1, inplace=True) #删除体育和物理成绩 |
1 | 性别 语文 数学 English |
1 | df.drop([df.index[i] for i in range(1,3)], axis = 0, inplace = True) |
数据分析库pandas读写excel和csv文档
用pandas读excel文档
- 需要openpyxl(对.xlsx文件)或xlrd或xlwt支持(老的.xls文件)
- 读取的每张工作表都是一个DataFrame
1 | import pandas as pd |
用pandas写excel文档
1 | df.to_excel(filename,sheet_name="Sheet1",na_rep='',........) |
- 将DataFrame对象df中的数据写入excel文档filename中的”Sheet1”工作表,NaN用’’代替。
- 会覆盖原有的filename文件
- 如果要在一个excel文档中写入多个工作表, 需要用
ExcelWrite
1 | #(接上面程序) |
Pandas不可以指定单元格的样式openxl可以
用pandas读写csv文件
1 | df.to_csv("result.csv",sep=",",na_rep='NA', |
用matplotlib进行数据展示
1 | pip install matplotlib |
绘制直方图
绘制基本直方图
1 | import matplotlib.pyplot as plt #以后 plt 等价于 matplotlib.pyplot |
绘制横向直方图
1 | #纵向 |
绘制堆叠直方图
1 | import matplotlib.pyplot as plt |
绘制对比直方图(有多组数据)
1 | import matplotlib.pyplot as plt |
绘制散点、折线图
1 | import math,random |
绘制饼图
1 | import matplotlib.pyplot as plt |
绘制热力图
1 | import numpy as np |
绘制雷达图
1 | import matplotlib.pyplot as plt |
绘制多层雷达图
1 | import matplotlib.pyplot as plt |
多子图绘制
1 | #程序中的import、汉字处理及drawRadar、 drawPie、 drawPlot函数略,见前面程序 |
词云的使用
1 | # coding=utf-8 |