Data preprocessing

本文最后更新于:2022年3月26日 凌晨

Pandas

pandas是一个非常强大的用于数据分析的python第三方库,通常会用import pandas as pd来导入。

安装:pip install pandas

1
2
3
4
5
6
7
8
# 使用绝对/相对路径访问csv文件
file_path = './data.csv'
# 读取数据并将数据存储在名为 data 的 DataFrame 中
data = pd.read_csv(file_path)
# 输出数据摘要
data.describe()
# 输出head
data.head

例如data里面有"A"、“B”、"C"这些列,想要提取出其中的BC两列:

1
2
feature_names = ["B", "C"]
X = data[feature_names]

Matplotlib

Matplotlib是个比较常用的Python绘图工具,官网:https://matplotlib.org/

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
import matplotlib.pyplot as plt
import numpy as np
import matplotlib

# 设置自定义字体
font = matplotlib.font_manager.FontProperties(fname="SourceHanSansSC-Light.otf")

# 生成 x y 数据
x = np.arange(1, 11)
y = 2 * x + 5

# plot
plt.title("Test", fontproperties=font)
plt.xlabel("x 轴", fontproperties=font)
plt.ylabel("y 轴", fontproperties=font)

plt.plot(x, y, linewidth=2.0)

# 交互式的展示图表
plt.show()

# 保存图片,同时可以设置DPI
plt.savefig("test.png", dpi=150)

Min-max feature scaling

最小-最大特征缩放,可以把数据的范围带入到[0,1][0,1],这也称为基于单位的归一化:

X=XXminXmaxXminX^{\prime}=\frac{X-X_{\min }}{X_{\max }-X_{\min }}

或者把数据的范围带入到[a,b][a,b]

X=a+(XXmin)(ba)XmaxXminX^{\prime}=a+\frac{\left(X-X_{\min }\right)(b-a)}{X_{\max }-X_{\min }}

这种缩放的缺点是,如果存在异常数据,会对缩放结果造成较大的影响。

sklearn.preprocessing.MinMaxScaler()

Standard score

z=xμσz=\frac{x-\mu}{\sigma}

其中,μ\mu 为总体的平均值,σ\sigma 为总体的标准差。

在数据量较大的情况下,少量的异常数据对平均值的影响较小。

sklearn.preprocessing.StandardScaler()

Pearson correlation coefficient

皮尔逊相关系数,对于两组样本{x1,x2,,xn}\{x_1, x_2, \dots, x_n\}{y1,y2,,yn}\{y_1, y_2, \dots, y_n\},可以计算它们的样本相关系数rxyr_{x y}

rxy=nxiyixiyinxi2(xi)2nyi2(yi)2r_{x y}=\frac{n \sum x_{i} y_{i}-\sum x_{i} \sum y_{i}}{\sqrt{n \sum x_{i}^{2}-\left(\sum x_{i}\right)^{2}} \sqrt{n \sum y_{i}^{2}-\left(\sum y_{i}\right)^{2}}}

样本相关系数的范围在[1,1][-1, 1]之间,0<rxy<10<r_{x y}<1时表示正相关,反之表示负相关。

SciPy:

1
2
3
4
5
6
7
8
from scipy.stats import pearsonr
print(pearsonr([1, 2, 3], [4, 5, 6]))
# (0.9999999999999998, 1.3415758552508151e-08)
# Return:
# r: float
# Pearson's correlation coefficient.
# p-value: float
# Two-tailed p-value.