# 数学建模中离散变量的处理——笔记二

• Age 年龄
• Sibsp 家庭关系（family relations） a、兄弟姐妹 b、丈夫妻子
• Parch 家庭关系 a、父母 b、子女 c、保姆带小孩（some children travelled only with a nanny, therefore parch=0 for them）
• Pclass 社会经济地位（A proxy for socio-economic status (SES)）
• Embarked (nominal datatype不太明白这是什么意思)
• Name (nominal datatype)
• Sex
• Ticket (that have no impact on the outcome variable. Thus, they will be excluded from analysis)
• Cabin 船舱等级
• Fare 票价
• PassengerID 乘客ID have no impact on the outcome variable. Thus, it will be excluded from analysis.
• Survival 是否存活

```X = df_train.iloc[:,:-1].values
y = df_train.iloc[:,-1].values
X
y

def simplify_ages(df):
df.Age = df.Age.fillna(-0.5)
bins = (-1,0,5,12,18,25,35,60,120)
group_names = ['Unknown','Baby','Child','Teenager','Student','Young Adult','Adult','Senior']
categories = pd.cut(df.Age,bins,labels=group_names)
df.Age = categories
return df

def simplify_cabins(df):
df.Cabin = df.Cabin.fillna('N')
df.Cabin = df.Cabin.apply(lambda x: x[0])
return df

def simplify_fares(df):
df.Fare = df.Fare.fillna(-0.5)
bins = (-1,0,8,15,31,1000)
group_names = ['Unknown','1_quartile','2_quartile','3_quartile','4_quartile']
categories = pd.cut(df.Fare,bins,labels=group_names)
df.Fare = categories
return df

def format_name(df):
df['Lname'] = df.Name.apply(lambda x: x.split(' ')[0])
df['NamePrefix'] = df.Name.apply(lambda x: x.split(' ')[1])
return df

def drop_features(df):
return df.drop(['Ticket','Name','Embarked'],axis=1)

def transform_features(df):
df = simplify_ages(df)
df = simplify_cabins(df)
df = simplify_fares(df)
df = format_name(df)
df = drop_features(df)
return df

df_train = transform_features(df_train)
df_test = transform_features(df_test)```

```pd.cut()
df.Name.apply(lambda x: x.split(' ')[0])```

###### 原文的处理方式

1、Encode labels with value between 0 and n_classes-1 2、LabelEncoder can be used to normalize labels. 3、It can also be used to transform non-numerical labels (as long as they are hashable and comparable) to numerical labels. 这三句话自己还看不太懂，直接看实际的操作方式 原数据集（数据集2）

### 转换用到的代码

```from sklearn import preprocessing

def encode_features(df_train,df_test):
features = ['Fare','Cabin','Age','Sex','Lname','NamePrefix']
df_combined = pd.concat([df_train[features],df_test[features]])

for feature in features:
le = preprocessing.LabelEncoder()
le = le.fit(df_combined[feature])
df_train[feature] = le.transform(df_train[feature])
df_test[feature] = le.transform(df_test[feature])

return df_train, df_test

df_train, df_test = encode_features(df_train,df_test)
df_train.head()
df_test.head()

###新接触到的函数
pd.concat()
help(pd.concat)```

https://www.jianshu.com/p/2e97f2bd75f8 这篇文章中也有一小部分涉及到了离散变量的处理，抽时间看这篇文章及对应的原文！

0 条评论

• ### 主成分分析、K均值聚类R语言实现小实例

数据集下载链接 https://acadgildsite.s3.amazonaws.com/wordpress_images/r/wineDataset_Kme...

• ### R语言ggplot2环形图小例子

https://www.r-graph-gallery.com/128-ring-or-donut-plot.html

• ### 用 Pandas 进行数据处理系列 二

获取行操作df.loc[3:6]获取列操作df['rowname']取两列df[['a_name','bname']] ，里面需要是一个 list 不然会报错增...

• ### Python中字段抽取、字段拆分、记录抽取

1、字段抽取 字段抽取是根据已知列数据的开始和结束位置，抽取出新的列 字段截取函数：slice(start,stop) 注意：和数据结构的访问方式一样，开始位置...

• ### Pandas进阶修炼120题，给你深度和广度的船新体验

本文为你介绍Pandas基础、Pandas数据处理、金融数据处理等方面的一些习题。

• ### Day05| 第四期-电商数据分析

疫情期间，想必我们会增加网上购物，人们的生活越来越数字化。当我们消费时，无论是线上和线下都会产生大量的交易数据，对于商家来说数字化的运营方式非常必要，从大量的交...

• ### Pandas 数据分析： 3 种方法实现一个实用小功能

与时间相关，自然第一感觉便是转化为datetime格式，这里需要注意：需要首先将两列转化为 str 类型。

• ### 使用pandas筛选出指定列值所对应的行

该方法其实就是找出每一行中符合条件的真值(true value)，如找出列A中所有值等于foo

• ### Python 数据分析初阶

这里可以单独查看其中的内容 data['nick']，计算其中的大小则使用 data['nick'].value_counts()。