第1关:缺失值—中位数填充缺失值
# -*- coding: utf-8 -*-
def fill_median(data):
"""填充数据中的缺失值
参数:
data - pandas.dataframe格式,原始数据
返回值:
processed_data - 填充后的数据
"""
processed_data = data
# 请在此添加实现代码 #
#********** Begin *********#
processed_data = data.fillna(data.median())
#或者processed_data = processed_data.fillna(processed_data.median())
#********** End ***********#
return processed_data
第2关:离散化
# -*- coding: utf-8 -*-
import pandas as pd
def discretization(data):
"""对连续型数据离散化
0-17 -> 0
18-44 -> 1
45-59 -> 2
60- -> 3
参数:
data - pandas.dataframe格式,原始数据中的一列
返回值:
processed_data - 离散化后的数据
"""
processed_data = data
# 请在此添加实现代码 #
#********** Begin *********#
bins = [0,17,44,59,120]
labels = ['0','1','2','3']
processed_data = pd.cut(data,bins,labels=labels)
#********** End ***********#
return processed_data
第3关:规范化—最小最大规范化
# -*- coding: utf-8 -*-
def minmax_normalization(data):
"""对给定的某一列数据进行0—1规范化
参数:
data - pandas.dataframe格式,原始数据集中的某一列数据
返回值:
normalized_data - 0-1规则化后的数据
"""
normalized_data = data
# 请在此添加实现代码 #
#********** Begin *********#
normalized_data = (data-data.min())/(data.max()-data.min())
#********** End ***********#
return normalized_data
第4关:相关性检验—皮尔森(Pearson)系数
# -*- coding: utf-8 -*-
import numpy as np
def pearson(data_x, data_y):
"""计算某一属性列与类别的相关性
参数:
data_x - pandas.dataframe格式,原始数据集中的某一列数据
data_y - pandas.dataframe格式,原始数据集中的类别
返回值:
value - pearson系数
"""
value = 0
# 请在此添加实现代码 #
#********** Begin *********#
#方法一
XMean = np.mean(data_x)
YMean = np.mean(data_y)
#标准差
XSD = np.std(data_x)
YSD = np.std(data_y)
#z分数
ZX = (data_x-XMean)/XSD
ZY = (data_y-YMean)/YSD
#相关系数
value = np.sum(ZX*ZY)/(len(data_x))
#方法二:直接算
n = len(data_x)
sum_xy = np.sum(np.sum(data_x*data_y))
sum_x = np.sum(np.sum(data_x))
sum_y = np.sum(np.sum(data_y))
sum_x2 = np.sum(np.sum(data_x*data_x))
sum_y2 = np.sum(np.sum(data_y*data_y))
value = (n*sum_xy-sum_x*sum_y)/np.sqrt((n*sum_x2-sum_x*sum_x)*(n*sum_y2-sum_y*sum_y))
#********** End ***********#
return ("%.4f" % value)