Python数据分析与展示_Numpy_Matplotlib_Pandas

一、 Python数据分析与展示

掌握表示、清洗、统计和展示数据的能力

在这里插入图片描述

主题思想

与一组数据相关的那些事儿:如何理解一组数据表达的含义
在这里插入图片描述

摘要:有损地提取数据特征的过程

在这里插入图片描述

内容组织

  • 全课程包括:8个内容单元,共12个单元
  • 全课程总长4周,每周3个单元
  • 每周包含一个实战型实例

编辑工具

  • 使用Anaconda IDE集成开发工具
  • 需要理解和掌握如下工具的使用:
    • conda
    • Spyder
    • IPython

实例

  • 实例1:图像的手绘效果

  • 实例2:引力波的绘制

  • 实例3:房价趋势的关联因素分析

  • 实例4:股票数据的趋势分析曲线

  • 坐标系的绘制

  • 饼图的绘制

  • 直方图的绘制

  • 极坐标图的绘制

  • 散点图的绘制

二、Anaconda IDE 的基本使用

Anaconda

https://www.anaconda.com/
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

包管理和环境管理工具:conda

conda: 一个工具,用于包管理和环境管理,其中:
包管理与pip类似,管理Python第三方库
环境管理能够允许用户使用不同版本Python,并能灵活切换

anaconda:一个集合,包括conda、某版本Python、一批第三方库等

conda将工具、第三方库、Python版本、conda都当作包,同等对待

Win平台: cmd,执行 conda ‐‐version 获取conda版本
执行 conda update conda 升级conda
在这里插入图片描述
在这里插入图片描述

编程工具:Spyder

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

交互式编程环境:IPython

在这里插入图片描述
在这里插入图片描述

%run的命令
在这里插入图片描述
%魔术命令
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

三、NumPy库入门

在这里插入图片描述

数据的维度

从一个数据到一组数据

在这里插入图片描述

维度:一组数据的组织形式

在这里插入图片描述

一维数据

一维数据由对等关系的有序或无序数据构成,采用线性方式组织
在这里插入图片描述

对应列表、数组和集合等概念

列表和数组

一组数据的有序结构

区别
列表:数据类型可以不同
在这里插入图片描述

数组:数据类型相同

在这里插入图片描述

二维数据

二维数据由多个一维数据构成,是一维数据的组合形式

表格是典型的二维数据

其中,表头是二维数据的一部分

在这里插入图片描述

多维数据

多维数据由一维或二维数据在新维度上扩展形成

在这里插入图片描述

高维数据

高维数据仅利用最基本的二元关系展示数据间的复杂结构
在这里插入图片描述

数据维度的Python表示

数据维度是数据的组织形式

在这里插入图片描述

数据维度的Python表示

数据维度是数据的组织形式

在这里插入图片描述

NumPy的数组对象:ndarray

NumPy

NumPy是一个开源的Python科学计算基础库,包含:

  • 一个强大的N维数组对象 ndarray

  • 广播功能函数

  • 整合C/C++/Fortran代码的工具

  • 线性代数、傅里叶变换、随机数生成等功能

NumPy是SciPy、Pandas等数据处理或科学计算库的基础

NumPy的引用

在这里插入图片描述

N维数组对象:ndarray

在这里插入图片描述

在这里插入图片描述

ndarray是一个多维数组对象,由两部分构成:

  • 实际的数据
  • 描述这些数据的元数据(数据维度、数据类型等)

ndarray数组一般要求所有元素类型相同(同质),数组下标从
0开始

ndarray实例

在这里插入图片描述

ndarray对象的属性

在这里插入图片描述

ndarray实例

在这里插入图片描述

ndarray数组的元素类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
ndarray为什么要支持这么多种元素类型?
对比:Python语法仅支持整数、浮点数和复数3种类型

  • 科学计算涉及数据较多,对存储和性能都有较高要求
  • 对元素类型精细定义,有助于NumPy合理使用存储空间并优化性能
  • 对元素类型精细定义,有助于程序员对程序规模有合理评估

非同质的ndarray对象

在这里插入图片描述

ndarray数组的创建

ndarray数组的创建方法

  • 从Python中的列表、元组等类型创建ndarray数组
  • 使用NumPy中函数创建ndarray数组,如:arange, ones, zeros 等
  • 从字节流(raw bytes)中创建ndarray数组
  • 从文件中读取特定格式,创建ndarray数组
    在这里插入图片描述

(1)从Python中的列表、元组等类型创建ndarray数组
在这里插入图片描述

2)使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等

在这里插入图片描述
在这里插入图片描述

2)使用NumPy中函数创建ndarray数组,如:arange, ones, zeros
在这里插入图片描述

3)使用NumPy中其他函数创建ndarray数组
在这里插入图片描述
在这里插入图片描述

ndarray数组的变换

在这里插入图片描述

ndarray数组的维度变换

在这里插入图片描述

a = np.ones((2,3,4), dtype=np.int32)

在这里插入图片描述

a = np.ones((2,3,4), dtype=np.int32)
在这里插入图片描述
ndarray数组的维度变换

a = np.ones((2,3,4), dtype=np.int32)
在这里插入图片描述
ndarray数组的类型变换
new_a = a.astype(new_type )

在这里插入图片描述
astype()方法一定会创建新的数组(原始数据的一个拷贝),即使两个类型一致

ndarray数组向列表的转换
ls = a.tolist()
在这里插入图片描述

ndarray数组的操作

数组的索引和切片

索引:获取数组中特定位置元素的过程
切片:获取数组元素子集的过程

一维数组的索引和切片:与Python的列表类似

在这里插入图片描述
多维数组的索引:

在这里插入图片描述
多维数组的切片:
在这里插入图片描述
在这里插入图片描述

ndarray数组的运算

数组与标量之间的运算

数组与标量之间的运算作用于数组的每一个元素
在这里插入图片描述

NumPy一元函数

对ndarray中的数据执行元素级运算的函数
在这里插入图片描述
在这里插入图片描述

NumPy一元函数实例
在这里插入图片描述

NumPy二元函数

v
NumPy二元函数实例
在这里插入图片描述

单元小结

NumPy库入门
在这里插入图片描述

四、数据存取与函数

在这里插入图片描述

数据的CSV文件存取

在这里插入图片描述

np.savetxt(frame, array, fmt='%.18e', delimiter=None)

  • frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件

  • array : 存入文件的数组

  • fmt : 写入文件的格式,例如:%d %.2f %.18e

  • delimiter : 分割字符串,默认是任何空格
    在这里插入图片描述
    在这里插入图片描述
    np.loadtxt(frame, dtype=np.float, delimiter=None, unpack=False)

  • frame : 文件、字符串或产生器,可以是.gz或.bz2的压缩文件

  • dtype : 数据类型,可选

  • delimiter : 分割字符串,默认是任何空格

  • unpack : 如果True,读入属性将分别写入不同变量
    在这里插入图片描述
    在这里插入图片描述

多维数据的存取

a.tofile(frame, sep='', format='%s')
frame : 文件、字符串
sep : 数据分割字符串,如果是空串,写入文件为二进制
format : 写入数据的格式

在这里插入图片描述
在这里插入图片描述
np.fromfile(frame, dtype=float, count=‐1, sep='')
frame : 文件、字符串
dtype : 读取的数据类型
count : 读入元素个数,‐1表示读入整个文件
sep : 数据分割字符串,如果是空串,写入文件为二进制
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

np.save(fname, array) 或 np.savez(fname, array)
fname : 文件名,以.npy为扩展名,压缩扩展名为.npz
array : 数组变量
np.load(fname)
fname : 文件名,以.npy为扩展名,压缩扩展名为.npz
在这里插入图片描述

NumPy的随机数函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

NumPy的统计函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

NumPy的梯度函数

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单元小结

在这里插入图片描述
在这里插入图片描述

五、 实例1:图像的手绘效果

在这里插入图片描述

图像的数组表示

在这里插入图片描述
在这里插入图片描述
PIL
PIL, Python Image Library
PIL库是一个具有强大图像处理能力的第三方库
在命令行下的安装方法: pip install pillow
from PIL import Image
Image是PIL库中代表一个图像的类(对象)
在这里插入图片描述
在这里插入图片描述

图像的变换

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

“图像的手绘效果”实例分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

“图像的手绘效果”实例编写

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述


from PIL import Image
import numpy as np

a = np.asarray(Image.open('./beijing.jpg').convert('L')).astype('float')

depth = 10. 						# (0-100)
grad = np.gradient(a)				#取图像灰度的梯度值
grad_x, grad_y = grad 				#分别取横纵图像梯度值
grad_x = grad_x*depth/100.
grad_y = grad_y*depth/100.
A = np.sqrt(grad_x**2 + grad_y**2 + 1.)
uni_x = grad_x/A
uni_y = grad_y/A
uni_z = 1./A

vec_el = np.pi/2.2 					# 光源的俯视角度,弧度值
vec_az = np.pi/4. 					# 光源的方位角度,弧度值
dx = np.cos(vec_el)*np.cos(vec_az) 	#光源对x 轴的影响
dy = np.cos(vec_el)*np.sin(vec_az) 	#光源对y 轴的影响
dz = np.sin(vec_el) 				#光源对z 轴的影响

b = 255*(dx*uni_x + dy*uni_y + dz*uni_z) 	#光源归一化
b = b.clip(0,255)

im = Image.fromarray(b.astype('uint8')) 	#重构图像
im.save('./beijingHD.jpg')


六、Matplotlib库入门

在这里插入图片描述

Matplotlib库的介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

pyplot的plot()函数

plt.plot(x, y, format_string, **kwargs)

x : X轴数据,列表或数组,可选
y : Y轴数据,列表或数组
format_string: 控制曲线的格式字符串,可选
**kwargs : 第二组或更多(x,y,format_string)

当绘制多条曲线时,各条曲线的x不能省略

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

plt.plot(x, y, format_string, **kwargs)

  • **kwargs : 第二组或更多(x,y,format_string)
    • color : 控制颜色, color=‘green’
    • linestyle : 线条风格, linestyle=‘dashed’
    • marker : 标记风格, marker=‘o’
    • markerfacecolor: 标记颜色, markerfacecolor=‘blue’
    • markersize : 标记尺寸, markersize=20

pyplot的中文显示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pyplot的文本显示

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pyplot的子绘图区域

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单元小结

在这里插入图片描述
在这里插入图片描述

七、Matplotlib基础绘图函数示例

在这里插入图片描述

pyplot基础图表函数概述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

pyplot饼图的绘制

在这里插入图片描述
在这里插入图片描述

pyplot直方图的绘制

在这里插入图片描述
在这里插入图片描述

pyplot极坐标图的绘制

在这里插入图片描述
在这里插入图片描述

pyplot散点图的绘制

在这里插入图片描述

单元小结

在这里插入图片描述

实例2:引力波的绘制

“引力波的绘制”实例介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
http://python123.io/dv/grawave.html

http://python123.io/dv/H1_Strain.wav

http://python123.io/dv/L1_Strain.wav

http://python123.io/dv/wf_template.txt

“引力波的绘制”实例编写

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

引力波的绘制实例代码

import numpy as np
import matplotlib.pyplot as plt
from scipy.io import wavfile

rate_h, hstrain= wavfile.read(r"H1_Strain.wav","rb")
rate_l, lstrain= wavfile.read(r"L1_Strain.wav","rb")
#reftime, ref_H1 = np.genfromtxt('GW150914_4_NR_waveform_template.txt').transpose()
reftime, ref_H1 = np.genfromtxt('wf_template.txt').transpose() #使用python123.io下载文件

htime_interval = 1/rate_h
ltime_interval = 1/rate_l
fig = plt.figure(figsize=(12, 6))

# 丢失信号起始点
htime_len = hstrain.shape[0]/rate_h
htime = np.arange(-htime_len/2, htime_len/2 , htime_interval)
plth = fig.add_subplot(221)
plth.plot(htime, hstrain, 'y')
plth.set_xlabel('Time (seconds)')
plth.set_ylabel('H1 Strain')
plth.set_title('H1 Strain')

ltime_len = lstrain.shape[0]/rate_l
ltime = np.arange(-ltime_len/2, ltime_len/2 , ltime_interval)
pltl = fig.add_subplot(222)
pltl.plot(ltime, lstrain, 'g')
pltl.set_xlabel('Time (seconds)')
pltl.set_ylabel('L1 Strain')
pltl.set_title('L1 Strain')

pltref = fig.add_subplot(212)
pltref.plot(reftime, ref_H1)
pltref.set_xlabel('Time (seconds)')
pltref.set_ylabel('Template Strain')
pltref.set_title('Template')
fig.tight_layout()

plt.savefig("Gravitational_Waves_Original.png")
plt.show()
plt.close(fig)

八、Pandas库入门

Pandas库的介绍

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pandas库的Series类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pandas库的DataFrame类型

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pandas库的数据类型操作

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Pandas库的数据类型运算

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单元小结在这里插入图片描述

九、Pandas数据特征分析

数据的排序

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据的基本统计分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据的累计统计分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

数据的相关分析

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

单元小结

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值