conda :
一个工具,用于包管理和环境管理,其中:包管理与pip类似,管理Python第三方库环境管理能够允许用户使用不同版本Python,并能灵活切换
anaconda :一个集合,包括conda、某版本Python、一批第三方库等
conda将工具、第三方库、Python版本、conda都当作包,同等对待
一维数据 :由对等关系的有序或无序数据构成,采用线性方式组织
列表和数组 :一组数据的有序结构
列表:数据类型可以不同
数组:数据类型相同
二维数据 :由多个一维数据构成,是一维数据的组合形式
多维数据 :由一维或二维数据在新维度上扩展形成
高维数据 :仅利用最基本的二元关系展示数据间的复杂结构 键值对
数据维度的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对象的属性:
ndarray数组的创建方法 :
(1)从Python中的列表、元组等类型创建ndarray数组 x = np.array(list/tuple)
(2)使用NumPy中函数创建ndarray数组,如:arange, ones, zeros等
(3)使用NumPy中其他函数创建ndarray数组
ndarray数组的变换:
对于创建后的ndarray数组,可以对其进行维度变换和元素类型变换 a = np.ones((2,3,4), dtype=np.int32)
ndarray数组的维度变换:
ndarray数组的类型变换: new_a = a.astype(new_type)
ndarray数组向列表的转换: ls = a.tolist()
NumPy一元函数: 对ndarray中的数据执行元素级运算的函数
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,读入属性将分别写入不同变量
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.*
NumPy的统计函数: np.*
NumPy的梯度函数:
np.gradient(f) 计算数组f中元素的梯度,当f为多维时,返回每个维度梯度
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值
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不能省略
pyplot的文本显示
Pandas 是Python第三方库,提供高性能易用数据类型和分析工具
import pandas as pd
Pandas基于NumPy实现,常与NumPy和Matplotlib一同使用
两个数据类型: Series
, DataFrame
基于上述数据类型的各类操作:基本操作、运算操作、特征类操作、关联类操作
Series类型由一组数据及与之相关的数据索引组成
Series类型可以由如下类型创建:
• Python列表,index与列表元素个数一致
• 标量值,index表达Series类型的尺寸
• Python字典,键值对中的“键”是索引,index从字典中进行选择操作
• ndarray,索引和数据都可以通过ndarray类型创建
• 其他函数,range()函数等
Series类型包括index和values两部分,操作类似ndarray类型和Python字典类型。
Series类型的操作类似ndarray类型:
• 索引方法相同,采用[]
• NumPy中运算和操作可用于Series类型
• 可以通过自定义索引的列表进行切片
• 可以通过自动索引进行切片,如果存在自定义索引,则一同被切片
Series类型的操作类似Python字典类型:
• 通过自定义索引访问
• 保留字in操作
• 使用.get()方法
DataFrame类型由共用相同索引的一组列组成
DataFrame类型可以由如下类型创建:
• 二维ndarray对象
• 由一维ndarray、列表、字典、元组或Series构成的字典
• Series类型
• 其他的DataFrame类型
注:由字典创建时字典的key会作为列索引。
DataFrame是二维带“标签”数组,基本操作类似Series,依据行列索引。
重新索引: .reindex(index=None, columns=None, …)
能够改变或重排Series和DataFrame索引
索引类型: Series和DataFrame的索引是Index类型,Index对象是不可修改类型
删除指定索引对象: .drop()
能够删除Series和DataFrame指定行或列索引
算术运算法则
算术运算根据行列索引,补齐后运算,运算默认产生浮点数
补齐时缺项填充NaN (空值)
二维和一维、一维和零维间为广播运算
采用+ ‐ * /符号进行的二元运算产生新的对象
数据类型的算术运算
注:fill_value参数替代NaN,替代后参与运算
不同维度间为广播运算,一维Series默认在轴1参与运算
使用运算方法可以令一维Series参与轴0运算
比较运算法则
比较运算只能比较相同索引的元素,不进行补齐
二维和一维、一维和零维间为广播运算
采用> < >= <= == !=等符号进行的二元运算产生布尔对象
注:同维度运算,尺寸一致;不同维度,广播运算,默认在1轴
Series = 索引 + 一维数据
DataFrame = 行列索引 + 二维数据
理解数据类型与索引的关系,操作索引即操作数据
.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类型:
适用于Series类型:
累计统计分析函数
适用于Series和DataFrame类型,累计计算:
适用于Series和DataFrame类型,滚动计算(窗口计算):
相关分析函数: 适用于Series和DataFrame类型