#coding:utf8
import pandas as pd # 导入pandas库
import numpy as np # 导入numpy库
def choose_data(data):
#选择变量'user_id', 'time', 'model_id', 'type', 'cate', 'brand',选取time在2016-02-01及以后的数据(包含2016-02-01)且type=6,数据类型如下:
# user_id sku_id time model_id type cate brand
# 0 266079 138778 2016-01-31 23:59:02 NaN 1 8 403
# 1 266079 138778 2016-01-31 23:59:03 0.0 6 8 403
# 2 200719 61226 2016-01-31 23:59:07 NaN 1 8 30
# 3 200719 61226 2016-01-31 23:59:08 0.0 6 8 30
# 4 263587 72348 2016-01-31 23:59:08 NaN 1 5 159
########## Begin ##########
data_time=pd_datetime[date.time]
########## End ##########
return data
def sample_data(data):
#使用pd.DataFrame.sample函数进行随机抽样,不放回的随机抽取5000个样本,数据结构如下:
# user_id sku_id time model_id type cate brand
# 0 266079 138778 2016-01-31 23:59:02 NaN 1 8 403
# 1 266079 138778 2016-01-31 23:59:03 0.0 6 8 403
# 2 200719 61226 2016-01-31 23:59:07 NaN 1 8 30
# 3 200719 61226 2016-01-31 23:59:08 0.0 6 8 30
# 4 263587 72348 2016-01-31 23:59:08 NaN 1 5 159
########## Begin ##########
data=data.sample(5000)
########## End ##########
return data
def clear_data(df):
#根据提示补全下列操作,请在已有的代码上添加操作,不要改动原有的变量名,案例数据结构如下:
# col1 col2 col3 col4
# 0 -1.055712 -0.196175 -0.813023 -0.806857
# 1 0.972878 NaN -1.722135 -0.638893
# 2 0.444641 -0.189607 -0.199307 3.496211
# 3 0.273065 -1.970887 0.954170 0.823823
# 4 0.729248 -1.036644 1.398436 NaN
# 5 -0.323439 0.208351 -0.429920 -0.175628
########## Begin ##########
#直接删除缺失值样本,直接在下面补全代码实现要求的功能,例如nan_result_pd1 = df.dropna()
nan_result_pd1 = df.dropna()
# 用后面的值替换缺失值
nan_result_pd2 = df.fillna()
# 用前面的值替换缺失值
nan_result_pd3 = df
# 用0替换缺失值
nan_result_pd4 = df.fillna(0)
# 用不同值替换不同列的缺失值,col2的缺失值使用1填充,col4的缺失值使用2来填充
nan_result_pd5 = df.fillna[{'col2':1,'col4':2}]
# 用平均数代替,选择各自列的均值替换缺失值
nan_result_pd6 = df
########## End ##########
return nan_result_pd1,nan_result_pd2,nan_result_pd3,nan_result_pd4,nan_result_pd5,nan_result_pd6
def clear_unnormal_data(df):
#异常值处理,这里认为当连续的变量值在2.2个标准差外算作异常值,并删除异常值
####################数据##########
# col1 col2
# 0 1 12
# 1 200 17
# 2 3 31
# 3 5 53
# 4 2 22
# 5 12 32
# 6 13 43
##################################
########## Begin ##########
for i in df.columns:
df_col=df[i]
grade=(df_col - df_col,mean()) / df_col.std()
df[i] = grade.abs() > 2.2
df=df[df.sum(axis=1)==0]
########## End ##########
return df
#coding:utf8
import pandas as pd # 导入pandas库
from sklearn.preprocessing import OneHotEncoder,LabelEncoder # 导入库
import numpy as np
from sklearn import preprocessing
#df数据框的数据结构如下:
# id sex level score mark
#0 3566841 male high 1 3
#1 6541227 Female low 2 3
#2 3512441 Female middle 3 2
#3 3566842 male high 4 1
#4 3566843 Female low 5 2
#5 3566844 Female middle 6 5
#6 3566845 male high 3 6
#7 3566846 Female low 5 7
#8 3566847 Female middle 6 9
#类型变量数据转换
def to_normal(df,cols=['sex','level']):
"""把上面数据中df['sex','level']的类型数据转换成0-1编码,编码数据命名规则要求,"原始变量名"+"_"+类型变量,例如sex_Famle"""
########## Begin ##########
data=df[['sex','level']]
df=pd.get_dummies(data)
########## End ##########
return df
def cut_bins(df,col='score'):
########## Begin ##########
#对score变量进行等频分箱(每箱的样本量相同),分成3箱,箱从小到大使用1,2,3作为箱标签,在df数据上新增一列'cut_bins_1'来存储数据
df["cut_bins_1"]=pd.qcut(df["score"],3,# 4等分
labels=[1,2,3])
#对score变量进行等距分箱(每箱的组距相同),分成3箱,箱从小到大使用1,2,3作为箱标签,在df数据上新增一列'cut_bins_2'来存储数据
df["cut_bins_2"]=pd.cut(df["score"],3,# 4等分
labels=[1,2,3])
########## End ##########
return df
#数据标准化
def StandardScaler(df,col=['score','mark']):
########## Begin ##########
#对df['score','mark']进行zscore_scaler标准化后,得到data1
# df=df[['score','mark']]
# z_scaler= preprocessing.StandardScaler()
# data1 = z_scaler.fit_transform(df)
#对df['score','mark']进行minmax_scaler标准化,得到data2
# m_scaler = preprocessing.MinMaxScaler()
# data2 = m_scaler.fit_transform(df)
df=df[['score','mark']]
zscore_scaler = preprocessing.StandardScaler()
data1 = zscore_scaler.fit_transform(df)
#对df['score','mark']进行minmax_scaler标准化,得到data2
minmax_scaler = preprocessing.MinMaxScaler()
data2 = minmax_scaler.fit_transform(df)
########## End ##########
return data1,data2 #对标准化后的数据输出,例如return data1,data2
if __name__=='__main__':
print('sucess')
版权声明:本文为m0_53208849原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。