数据分析

滚动窗口

基础算法是基于滚动窗口(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
计算某个值在当前序列中的百分比的位置