[数据分析] 教你一文掌握数据预处理
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
数据分析一定少不了数据预处理,预处理的好坏决定了后续的模型效果,今天我们就来看看预处理有哪些方法呢?
记录实战过程中在数据预处理环节用到的方法~
主要从以下几个方面介绍:
•常用方法
•N umpy部分
•P andas部分
•S klearn 部分
•处理文本数据
一、常用方法
1、生成随机数序列
randIndex = random.sample(range(trainSize, len(trainData_copy)), 5*tra inSize)
2、计算某个值出现的次数
titleSet = set(titleData)
for i in titleSet:
count = titleData.count(i)
用文本出现的次数替换非空的地方。词袋模型 Word Count
titleData = allData['title']
titleSet = set(list(titleData))
title_counts = titleData.value_counts()
for i in titleSet:
if isNaN(i):
continue
count = title_counts[i]
titleData.replace(i, count, axis=0, inplace=True)
title = pd.DataFrame(titleData)
allData['title'] = title
3、判断值是否为NaN
def isNaN(num):
return num != num
4、 Matplotlib在jupyter中显示图像
%matplotlib inline
5、处理日期
birth = trainData['birth_date']
birthDate = pd.to_datetime(birth)
end = pd.datetime(2020, 3, 5)
# 计算天数birthDay = end - birthDate
birthDay.astype('timedelta64[D]')
# timedelta64 转到 int64 trainData['birth_date'] = birthDay.dt.days
6、计算多列数的平均值等
trainData['operate_able'] = trainData.iloc[ : , 20:53].mean(axis=1) trainData['local_able'] = trainData.iloc[ : , 53:64].mean(axis=1)
7、数据分列(对列进行one-hot)
train_test = pd.get_dummies(train_test,columns=["Embarked"])
train_test = pd.get_dummies(train_test,columns = ['SibSp','Parch','Sib Sp_Parch'])
8、正则提取指定内容
df['Name].str.extract()是提取函数,配合正则一起使用
train_test['Name1'] = train_test['Name'].str.extract('.+,(.+)').str.ex tract( '^(.+?)\.').str.strip()
9、根据数据是否缺失进行处理
train_test.loc[train_test["Age"].isnull() ,"age_nan"] = 1
train_test.loc[train_test["Age"].notnull() ,"age_nan"] = 0
10、按区间分割-数据离散化
返回x所属区间的索引值,半开区间
#将年龄划分五个阶段10以下,10-18,18-30,30-50,50以上train_test['Age'] = pd.cut(train_test['Age'], bins=[0,10,18,30,50,100] ,labels=[1,2,3,4,5])
1、where索引列表
delLocal = np.array(np.where(np.array(trainData['acc_now_delinq']) == 1))
2、permutation(x) 随机生成一个排列或返回一个range
如果x是一个多维数组,则只会沿着它的第一个索引进行混洗。
import numpy as np
shuffle_index = np.random.permutation(60000)
X_train, y_train = X_train[shuffle_index], y_train[shuffle_index]
3、numpy.argmax() 返回沿轴的最大值的`索引`
返回沿轴的最大值的索引。
np.argmax(some_digit_scores)
•a : array_like; 输入数组
•axis : int, optional; 默认情况下,索引是放在平面数组中,否则沿着指定的轴。
•out : array, optional; 如果提供,结果将被插入到这个数组中。它应该是适当的形状和dtype。
4、numpy.dot(a, b, out=None) 计算两个数组的点积