天天看点

科学计算:Python 分析数据找问题,并图形化

对于记录的数据,如何用 Python 进行分析、或图形化呢?

本文将介绍 numpy, matplotlib, pandas, scipy 几个包,进行数据分析、与图形化。

Python 环境建议用 Anaconda 发行版,下载地址:

官方: https://www.anaconda.com/products/individual#Downloads

清华源: https://mirrors.tuna.tsinghua.edu.cn/anaconda/archive/

Anaconda 是一个用于科学计算的 Python 发行版,已经包含了众多流行的科学计算、数据分析的 Python 包。

可以 <code>conda list</code> 列出已有的包,会发现本文要介绍的几个包都有了:

如果已有 Python 环境,那么 pip 安装一下它们:

本文环境为: Python 3.7.4 (Anaconda3-2019.10)

本文假设了如下格式的数据 <code>data0.txt</code> :

CSV 格式:逗号分隔,读写简单, Excel 可打开。

之后,我们会一起达成如下几个目标:

CSV 数据, numpy 读取与计算

data 列数据, matplotlib 图形化

data 列数据, scipy 插值,形成曲线

timestamp 列数据, pandas 分析前后差值、每秒个数

numpy 可用 <code>loadtxt</code> 直接读取 CSV 数据,

<code>dtype=np.int32</code>: 数据类型 <code>np.int32</code>

<code>delimiter=","</code>: 分隔符 ","

<code>skiprows=1</code>: 跳过第 1 行

<code>usecols=(1)</code>: 读取第 1 列

如果读取多列,

<code>dtype</code> 说明可见: https://numpy.org/devdocs/reference/arrays.dtypes.html

numpy 计算均值、样本标准差:

只需四行,就能图形化显示了:

<code>ax.plot(x, y, ...)</code> 横坐标 <code>x</code> 取的数据下标 <code>range(len(datas))</code> 。

完整代码见文末 Gist 地址的 <code>data_plot.py</code> 。运行效果如下:

科学计算:Python 分析数据找问题,并图形化

可以读取多个文件,一起显示:

科学计算:Python 分析数据找问题,并图形化

<code>x</code>, <code>y</code> 两组数据,用 scipy 进行插值,平滑成曲线:

完整代码见文末 Gist 地址的 <code>data_interp.py</code> 。运行效果如下:

科学计算:Python 分析数据找问题,并图形化

<code>matplotlib</code> 图像化时如何配置、延迟、保存,可见代码与注释。

这儿需要读取 timestamp 列数据,

numpy 计算前后差值,

pandas 统计每秒个数,

办法:把时间戳直接变整秒数,再 pandas 统计相同值。

完整代码见文末 Gist 地址的 <code>stamp_diff.py</code> 。运行效果如下:

科学计算:Python 分析数据找问题,并图形化

<code>matplotlib</code> 图形化时怎么显示多个图表,也可见代码。

本文代码 Gist 地址: https://gist.github.com/ikuokuo/8629cc28079199c65e0eedb0d02a9e74