数据处理之数据标准化和数据分组

数据标准化

数据标准化是指让所有数据等比例缩放,使之落入特定区间便于计算与分析,常用的有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以上]

你可能感兴趣的:(数据处理)