数据分析
滚动窗口
基础算法是基于滚动窗口(rolling window)模式。窗口滚动过数据,然后计算出窗口内数据的平均值。
- 中值滤波
- 中心思想就是逐项的遍历信号,并用相邻信号的中值替换当前项。这种方法可以使得滤波处理非常快速,而且对一维数据集合和两维数据集合都适用。
matplotlib
参数
动态配置参数
执行过程中,可以通过两种方式运行参数:
-
使用参数字典 rcParams
import matplotlib as mpl mpl.rcParams['lines.linewidth']=2 mpl.rcParams['lines.color']='r'
-
使用
matplotlib.rc()
函数修改import matplotlib as mpl mpl.rc('lines', linewidth=2, color='r')
若想重置动态修改后的配置参数,可以调用 matplotlib.rcdefaults()
将配置重置。
永久配置参数
配置永久的参数,可以避免一些重复配置,针对不同的影响范围,可以通过调整配置文件的位置来分别配置。
分类
- 项目级
- 当前目录下新增文件 matplotlibrc ,仅影响目录下的 matplotlib 的配置。
- 用户级
- $HOME/.matplotlib/matplotlibrc ,当前用户下的都按这个配置文件控制。
- 安装级
- site-packages 目录下,所有调用的模块都会按此配置执行,但是如果使用的是虚拟环境(conda/pdm/virtualvenv)等,则仅是项目下配置。
如果不清楚配置文件的地址,可以使用命令获取对应的位置:
import matplotlib as mpl
print(mpl.get_configdir())
配置项
- axes
- 设置坐标轴边界和表面的颜色、坐标刻度值大小和网格的显示
- backend
- 设置目标输出 TkAgg 和 GTKAgg
- figure
- 控制 dpi 、边界颜色、图形大小和子区(subplot)设置
- font
- 字体集(font family)、字体大小和样式设置
- grid
- 设置网格颜色和线型
- legend
- 设置图例和其中文本的显示
- line
- 设置线条(颜色、线型、宽度等)和标记
- patch
- 填充 2D 空间的图形对象,如多边形和圆。控制线宽、颜色和抗锯齿设置
- savefig
- 可以对保存的图形进行单独设置。例如设置渲染文件背景为白色
- text
- 设置字体颜色、文本解析等
- verbose
- 设置 matplotlib 在执行期间信息输出,如 silent/helpful/debug 和 debug-annoying
- xticks/yticks
- 为 x、y 轴的主刻度和次刻度设置颜色、大小、方向,以及标签的大小
- autoscale
- 设置是否自动缩放坐标轴
- xlim/ylim
- 手动设置坐标轴范围
常用方法
- figure()
- 创建新的图表
- subplot()
subplot(231)
是指把图表分成 2 × 3 的网络,也可以使用subplot(2,3,1)
,通过添加axisbg=(r,b,g)
设置坐标轴的背景色- axvline/axhline
- 会根据给定的 x 和 y 值相应地绘制出相对于坐标轴的水平线和垂直线
- axhspan\axvspan
- 添加一个跨坐标轴的水平带,xmin/ymin ,xmax/ymax 指定了水平带的宽度。
- grid
- 切换网格显示状态,
which
指定绘制的网格刻度类型(major,minor,both),axis
指定绘制哪组网络线(both,x,y)
图表
bar
主要用来显示正确的数据,用于可视化数据的分布统计。
- barh 则表示横向的柱状图
- 设置参数
bottom=y
可以将第二个柱状图和前一个连接起来形成堆叠柱状图
-
参数
bins : 表示一定间隔下数据点的垂直矩形
range : bin 的范围,当 bins 参数为序列时,此参数无效,范围外的值将被忽略,默认为 None
normed : 如果为 True ,直方图将进行归一化处理,形成概率密度,默认为 False
histtype : 默认为 bar 类型的直方图,默认为 bar - barstacked: 多种数据的堆叠直方图 - step: 创建未填充的线型图 - stepfilled: 创建默认填充的线形图
align : 用户 bin 边界之间矩形条的居中设置,默认为 mid 也可以选择 left 和 right
color : 指定直方图的颜色
orientation : 默认为垂直直方图,设置为 horizontal 创建水平直方图
hatch : 可以用来填充不同的图形
-
误差条形图
误差条形图来可视化数据集合的测量不确定度或者指出错误。误差条可以简单的表示误差偏离数据集合的情况,可以显示一个标准差、标准误差、或者 95% 的置信区间。
width : 给定误差条的宽度,默认 0.8
bottom : 如果指定了 bottom ,其值会加到高度中,默认为 None
edgecolor : 指定误差条的颜色
linewidth : 误差条边界宽度,可以设为 None 和 0 (此时误差条边界不显示)
orientation : 有 vertical 和 horizontal 两个值
xerr/yerr : 用于在柱状图上生成误差条
boxplot
可以创建条线图,图中的箱体从下四分位数延伸到上四分位数,并带有一条中值线。
- 最小值
- 数据集合的最小值
- 第二四分位数
- 其以下为数据集合中较低的 25% 数据
- 中值
- 数据集合的中值
- 第三四分位数
- 其以上为数据集合中较高的 25% 数据
- 最大值
- 给定数据集合的最大值
scatter
- 散点图可以展示数据的分布
pie
饼图描述数值的比例关系,每个扇区的弧长大小为其所表示的数量比例。
- autopct
- 格式化绘制在圆弧中的标签,可以是一个格式化的字符串或者是一个可调用对象
- startangle
- 默认从 x 轴开始逆时针排列,如果设置为 90 ,则从 y 轴开始
scatter
散点图标记两个变量相关关系的图。通常有自变量和应变量两个数据。通常可以用在拟合函数之前绘制,来识别数据的关联。
- color
- 颜色
- marker
- 设置点状标记,默认为 circle
- alpha
- 透明度
- edgecolors
- 标记的边界颜色
- label
- 图例框
fill_between
可以为设置的区域设置对应的填充色
- x
- x 定点
- y1/y2
- 条件的值
- where
- 设定的条件来填充曲线,可以是布尔值,也可以是表达式
图表信息设置
刻度器
刻度是图形的一部分,locator_params
- 刻度定位器
- 指定刻度所在的位置
- 刻度格式器
- 指定刻度显示的样式
- 主刻度、次刻度
- 默认不显示次刻度,主刻度和次刻度可以被独立指定位置和格式化
日期变换
- matplotlib.dates.date2num()
- 日期转数字
- matplotlib.dates.num2date()
- 数字转日期
- maptlotlib.dates.drange()
- 日期的序列
图例
legend(bbox_to_anchor=(0., 1.02, 1., .102), loc=3,
ncol=3, mode="expand", borderaxespad=0)
- legend
- 增加图例图标
ncol=3
: 设置列数,位置为 lower left 。bbox_to_anchor
: 起始位置(0.0, 1.02, 1, 0.102),分别为起始位置(0., 1.02),宽度 1 和 高度 .102 。mode
:expand
表示扩展到整个坐标轴区域borderaxespad
: 指定了坐标轴和图例边界之间的间距
annotate("important value", (55,20), xycoords='data',
xytext=(5, 38),
arrowprops=dict(arrowstyle='->'))
- annotate
- 显示一个指标器图标,可以在 xy 坐标位置数点添加一个字符器描述
xycoord
: data 指定注解和数据使用相同的坐标第xytext
: 注解文本的起始位置通过此参数指定arrowprops
: 字典中定义了很多箭头属性,用 arrowstyle 来指定箭头网格
ax.spines['bottom'].set_position(('data', 0))
ax.spines['left'].set_position(('data', 0))
- ax.spines.set_position()
- 把轴线移到位置 (0,0)
numpy
图像映射内存
image = numpy.memmap(filename, dtype=numpy.uint8, shape=(375,500))
如果想做边缘检测、图像去噪,或者轮廓查找,可以从 scikit 工具中查找相应的算法。
可以看 scikit 的示例库学习相应的内容: https://scikit-imagw.org/docs/dev/auto_examples/
离散数据处理
- convolve
- 返回两个一维序列的离散线性卷积
- linspace
- 生成一个给定间隔的等距数字序列
- ones
- 定义了一个所有元素值为 1 的序列或者矩阵,可以用它来生成用于求平均值的窗口
scipy
计算序列中条值的百分位
from scipy.stats import percentileofscore
- percentileofscore
- 计算某个值在当前序列中的百分比的位置