数据标准化是指让所有数据等比例缩放,使之落入特定区间便于计算与分析,常用的有0-1标准化,公式为:
代码实现如下:
# -*- coding: utf-8 -*-
import pandas as pd
df = pd.read_csv(r"/Users/herenyi/Downloads/4/4.14/data.csv",encoding = 'UTF-8');
df['normalization'] = (df.score-df.score.min())/(df.score.max()-df.score.min())
数据分组是指对要分析的数据对象,按照一定的数据区间进行分组,以用来研究内部规律和信息。主要由pandas.cut(x,bins,right=True,labels=None)函数来实现,常用的四个参数分别为要分组的数据集x,bins代表分组的划分数组,right代表每个分组右边是否闭合,默认闭合以及labels为分组的自定义标签。
首先还是读取文件和确定分组。
df = pd.read_csv(r"/Users/herenyi/Downloads/4/4.15/data.csv", sep='|',encoding= 'UTF-8');
bins = [min(df.cost)-1, 20, 40, 60, 80, 100, max(df.cost)+1];
然后开始最基础的分组,结果如下:
pd.cut(df.cost, bins)
Out[115]:
0 (1, 20]
1 (1, 20]
2 (60, 80]
3 (1, 20]
4 (80, 100]
5 (1, 20]
6 (80, 100]
7 (60, 80]
8 (1, 20]
9 (40, 60]
10 (20, 40]
11 (1, 20]
12 (60, 80]
13 (80, 100]
14 (1, 20]
Name: cost, dtype: category
Categories (6, object): [(1, 20] < (20, 40] < (40, 60] < (60, 80] < (80, 100] < (100, 101]]
如果右边不包括,则:
pd.cut(df.cost, bins, right=False)
Out[116]:
0 [1, 20)
1 [1, 20)
2 [60, 80)
3 [20, 40)
4 [80, 100)
5 [1, 20)
6 [100, 101)
7 [60, 80)
8 [1, 20)
9 [40, 60)
10 [20, 40)
11 [1, 20)
12 [60, 80)
13 [80, 100)
14 [1, 20)
Name: cost, dtype: category
Categories (6, object): [[1, 20) < [20, 40) < [40, 60) < [60, 80) < [80, 100) < [100, 101)]
传入分组标签:
labels = ['20以下', '20到40', '40到60', '60到80', '80到100', '100以上']
pd.cut(df.cost, bins, right=False, labels=labels)
Out[119]:
0 20以下
1 20以下
2 60到80
3 20到40
4 80到100
5 20以下
6 100以上
7 60到80
8 20以下
9 40到60
10 20到40
11 20以下
12 60到80
13 80到100
14 20以下
Name: cost, dtype: category
Categories (6, object): [20以下 < 20到40 < 40到60 < 60到80 < 80到100 < 100以上]