《Python数据分析与展示》课程笔记

第0周 Python基本语法元素

conda :
一个工具,用于包管理和环境管理,其中:包管理与pip类似,管理Python第三方库环境管理能够允许用户使用不同版本Python,并能灵活切换
anaconda :一个集合,包括conda、某版本Python、一批第三方库等
conda将工具、第三方库、Python版本、conda都当作包,同等对待

第1周 数据分析之表示

单元1 NumPy库入门

一维数据 :由对等关系的有序或无序数据构成,采用线性方式组织
列表和数组 :一组数据的有序结构
列表:数据类型可以不同
数组:数据类型相同
二维数据 :由多个一维数据构成,是一维数据的组合形式
多维数据 :由一维或二维数据在新维度上扩展形成
高维数据 :仅利用最基本的二元关系展示数据间的复杂结构 键值对
数据维度的Python表示 :数据维度是数据的组织形式
一维数据:列表和集合类型
[3.1398, 3.1349, 3.1376] 有序
{3.1398, 3.1349, 3.1376} 无序
二维数据:列表类型
多维数据:列表类型
高维数据:字典类型或数据表示格式:JSON、XML和YAML格式
NumPy的数组对象:ndarray
NumPy是一个开源的Python科学计算基础库,是SciPy、Pandas等数据处理或科学计算库的基础。整合C/C++/Fortran代码的工具(运算速度快),线性代数、傅里叶变换、随机数生成等功能。
轴(axis): 保存数据的维度;秩(rank):轴的数量
ndarray对象的属性:
《Python数据分析与展示》课程笔记
ndarray数组的创建方法 :
(1)从Python中的列表、元组等类型创建ndarray数组 x = np.array(list/tuple)
(2)使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等
《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
(3)使用NumPy中其他函数创建ndarray数组
《Python数据分析与展示》课程笔记
ndarray数组的变换:
对于创建后的ndarray数组,可以对其进行维度变换和元素类型变换 a = np.ones((2,3,4), dtype=np.int32)
ndarray数组的维度变换:
《Python数据分析与展示》课程笔记
ndarray数组的类型变换: new_a = a.astype(new_type)
ndarray数组向列表的转换: ls = a.tolist()
NumPy一元函数: 对ndarray中的数据执行元素级运算的函数
《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
NumPy二元函数:
《Python数据分析与展示》课程笔记

单元2 数据存取与函数

数据的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,读入属性将分别写入不同变量

CSV只能有效存储一维和二维数组
np.savetxt() np.loadtxt() 只能有效存取一维和二维数组
多维数据的存取

    a.tofile(frame, sep='', format='%s')
    • frame  : 文件、字符串
    • sep : 数据分割字符串,如果是空串,写入文件为二进制
    • format : 写入数据的格式
    p.fromfile(frame, dtype=float, count=‐1, sep='')
    • frame  : 文件、字符串
    • dtype : 读取的数据类型
    • count  : 读入元素个数,‐1表示读入整个文件
    • sep : 数据分割字符串,如果是空串,写入文件为二进制

该方法需要读取时知道存入文件时数组的维度和元素类型, a.tofile()np.fromfile()
需要配合使用,可以通过元数据文件来存储额外信息。
NumPy的便捷文件存取

    np.save(fname, array) 或 np.savez(fname, array)
    • fname : 文件名,以.npy为扩展名,压缩扩展名为.npz
    • array  : 数组变量
    np.load(fname)
    • fname : 文件名,以.npy为扩展名,压缩扩展名为.npz

NumPy的随机数函数: np.random.*
《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
NumPy的统计函数: np.*
《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
NumPy的梯度函数:
np.gradient(f) 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度

单元3 实例1 图像的手绘效果

PIL库: (PIL,Python Image Library),是一个具有强大图像处理能力的第三方库。在命令行下的安装方法: pip install pillow
from PIL import Image :Image是PIL库中代表一个图像的类(对象)
图像的数组表示: im = np.array(Image.open("D:/pycodes/beijing.jpg")); print(im.shape, im.dtype)
图像是一个三维数组,维度分别是高度、宽度和像素RGB值

第2周 数据分析之展示

单元4 Matplotlib库入门

Matplotlib库介绍 :Python优秀的数据可视化第三方库。Matplotlib库由各种可视化类构成,内部结构复杂,受Matlab启发。 matplotlib.pyplot 是绘制各类可视化图形的命令子库,相当于快捷方式: import matplotlib.pyplot as plt
plt.plot() 只有一个输入列表或数组时,参数被当作Y轴,X轴以索引自动生成
plt.savefig() 将输出图形存储为文件,默认PNG格式,可以通过dpi修改输出质量
plt.plot(x,y) 当有两个以上参数时,按照X轴和Y轴顺序绘制数据
plt.subplot(3,2,4)及plt.subplot(324) 在全局绘图区域中创建一个分区体系,并定位到一个子绘图区域
pyplot的plot()函数

    plt.plot(x, y, format_string, **kwargs)
    ∙ x  : X轴数据,列表或数组,可选
    ∙ y  : Y轴数据,列表或数组
    ∙ format_string: 控制曲线的格式字符串,可选,由颜色字符、风格字符和标记字符组成
    ∙ **kwargs : 第二组或更多(x,y,format_string)
    # 当绘制多条曲线时,各条曲线的x不能省略

《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
pyplot的文本显示
《Python数据分析与展示》课程笔记

单元5 Matplotlib基础绘图函数示例

《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记

单元6 实例2:引力波的绘制

第3周 数据分析之概要

单元7 Pandas库入门

Pandas库介绍

Pandas 是Python第三方库,提供高性能易用数据类型和分析工具
import pandas as pd
Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用

Pandas库的理解

两个数据类型: Series , DataFrame
基于上述数据类型的各类操作:基本操作、运算操作、特征类操作、关联类操作
《Python数据分析与展示》课程笔记

Pandas库的Series类型

Series类型由一组数据及与之相关的数据索引组成
《Python数据分析与展示》课程笔记
Series类型可以由如下类型创建:
• Python列表,index与列表元素个数一致
• 标量值,index表达Series类型的尺寸
• Python字典,键值对中的“键”是索引,index从字典中进行选择操作
• ndarray,索引和数据都可以通过ndarray类型创建
• 其他函数,range()函数等
Series类型包括index和values两部分,操作类似ndarray类型和Python字典类型。
Series类型的操作类似ndarray类型:
• 索引方法相同,采用[]
• NumPy中运算和操作可用于Series类型
• 可以通过自定义索引的列表进行切片
• 可以通过自动索引进行切片,如果存在自定义索引,则一同被切片
Series类型的操作类似Python字典类型:
• 通过自定义索引访问
• 保留字in操作
• 使用.get()方法

Pandas库的DataFrame类型

DataFrame类型由共用相同索引的一组列组成
《Python数据分析与展示》课程笔记
DataFrame类型可以由如下类型创建:
• 二维ndarray对象
• 由一维ndarray、列表、字典、元组或Series构成的字典
• Series类型
• 其他的DataFrame类型
《Python数据分析与展示》课程笔记
注:由字典创建时字典的key会作为列索引。
DataFrame是二维带“标签”数组,基本操作类似Series,依据行列索引。

Pandas库的数据类型操作

重新索引: .reindex(index=None, columns=None, …) 能够改变或重排Series和DataFrame索引
《Python数据分析与展示》课程笔记
索引类型: Series和DataFrame的索引是Index类型,Index对象是不可修改类型
《Python数据分析与展示》课程笔记
删除指定索引对象: .drop() 能够删除Series和DataFrame指定行或列索引

Pandas库的数据类型运算

算术运算法则
算术运算根据行列索引,补齐后运算,运算默认产生浮点数
补齐时缺项填充NaN (空值)
二维和一维、一维和零维间为广播运算
采用+ ‐ * /符号进行的二元运算产生新的对象
数据类型的算术运算
《Python数据分析与展示》课程笔记
注:fill_value参数替代NaN,替代后参与运算
不同维度间为广播运算,一维Series默认在轴1参与运算
使用运算方法可以令一维Series参与轴0运算
比较运算法则
比较运算只能比较相同索引的元素,不进行补齐
二维和一维、一维和零维间为广播运算
采用> < >= <= == !=等符号进行的二元运算产生布尔对象
注:同维度运算,尺寸一致;不同维度,广播运算,默认在1轴

单元小结

Series = 索引 + 一维数据
DataFrame = 行列索引 + 二维数据
理解数据类型与索引的关系,操作索引即操作数据

单元8 Pandas数据特征分析

数据的排序

.sort_index(axis=0, ascending=True) 在指定轴上根据索引进行排序,默认升序
.sort_values() 在指定轴上根据数值进行排序,默认升序

    Series.sort_values(axis=0, ascending=True)
    DataFrame.sort_values(by, axis=0, ascending=True)
    #  by:axis轴上的某个索引或索引列表

NaN统一放到排序末尾

数据的基本统计分析

基本的统计分析函数
适用于Series和DataFrame类型:
《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
适用于Series类型:
《Python数据分析与展示》课程笔记

数据的累计统计分析

累计统计分析函数
适用于Series和DataFrame类型,累计计算:
《Python数据分析与展示》课程笔记
适用于Series和DataFrame类型,滚动计算(窗口计算):
《Python数据分析与展示》课程笔记

数据的相关分析

《Python数据分析与展示》课程笔记
《Python数据分析与展示》课程笔记
相关分析函数: 适用于Series和DataFrame类型
《Python数据分析与展示》课程笔记

《Python数据分析与展示》课程笔记

上一篇:Python数据分析笔记


下一篇:前端JS面试题汇总 Part 3 (宿主对象与原生对象/函数调用方式/call与apply/bind/document.write)