零、准备工作

1
2
3
4
import pandas as pd
import numpy as np
data = pd.read_excel('111.xlsx')
data.head()

一、标准化

1
2
3
4
5
6
7
8
9
10
# 数据标准化
data['面积'] # 查看一下

# 计算标准化值,返回表格
(data['面积'] - data['面积'].mean())/data['面积'].std()
# 放入原表格
data['面积(标准化)'] = (data['面积'] - data['面积'].mean())/data['面积'].std()
# 确认均值是否为0,标准差是否为1,即是否标准化成功
data['面积(标准化)'].mean()
data['面积(标准化)'].std()

二、归一化

1
2
3
4
5
6
7
# 计算
(data['面积'] - data['面积'].min())/(data['面积'].max() - data['面积'].min())
# 入表
data['面积(归一化)'] = (data['面积'] - data['面积'].min())/(data['面积'].max() - data['面积'].min())
# 查看最小值是否为0,最大值是否为1
data['面积(归一化)'].min()
data['面积(归一化)'].max()

离散化

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
# 等宽离散化(人为)

# 查看一下,确认最大最小值
data['最近地铁距离'].max()
data['最近地铁距离'].min()

# 设置0-500为近,500-1000为较近,1000-2000为远
bins = [0,500,1000,2000]
# pd库提供相应分类方法
pd.cut(data['最近地铁距离'].bins = bins) # 返回表格,告知每一个是哪个区间

# 存入
data['等宽划分距离'] = pd.cut(data['最近地铁距离'],bins = bins)
# 查看每个区间都有多少值
data['等宽划分距离'].value_counts()


# 等频离散化(每组数量差不多)

# 划分三组,q=3
pd.qcut(data['最近地铁距离'],q = 3) # 自带函数
data['等频划分距离'] = pd.qcut(data['最近地铁距离'],q = 3,duplicates = 'drop') # 存入,最后这个参数可以防止数据不均导致切分时发生的重复切分引发的报错
data['等频划分距离'].value_counts()

独热编码

1
2
3
4
data['楼层']

# 独热编码函数
pd.get_dummies(data['楼层']) # 会告诉你

映射数据

1
2
3
4
5
6
7
8
# 映射函数

str(data['等宽划分距离'].iloc[0])
data['等宽划分距离'].map(lambda x:str(x)) # 使用cut得到的是区间,不是字符串,这个可以转化为字符串

# 根据字典进行映射
dis = {'(0,500]'.'近','(500,1000]'.'较近','(1000,2000]'.'远',}
data['等宽划分距离'].map(dis) # 根据字典进行替换