数据清洗及特征处理
查看缺失值
df.isna().sum()
df.isnull().sum()
对缺失值进行处理
df.dropna()
df.fillna()
请查看数据中的重复值
df[df.duplicated()]
对年龄进行分箱(离散化)处理
- 将连续变量Age平均分箱成5个年龄段,并分别用类别变量12345表示
df['AgeBand'] = df.cut(df['Age'], 5, labels=[1, 2, 3, 4, 5])
- 将连续变量Age划分为[0,5) [5,15) [15,30) [30,50) [50,80)五个年龄段,并分别用类别变量12345表示
df['AgeBand'] = df.cut(df['Age'], [0,5,15,30,50,80], labels=[1, 2, 3, 4, 5])
- 将连续变量Age按10% 30% 50 70% 90%五个年龄段,并用分类变量12345表示
df['AgeBand'] = df.qcut(df['Age'], [0,0.1,0.3,0.5,0.7,0.9], labels=[1, 2, 3, 4, 5])
对文本变量进行转换
- 查看文本变量名及种类
df['Cabin'].value_counts()
df['Sex'].unique()
df['Sex'].nunique()
- 将文本变量Sex, Cabin ,Embarked用数值变量12345表示
#方法一: replace
df['Sex_num'] = df['Sex'].replace(['male','female'],[1,2])
#方法二: map
df['Sex_num'] = df['Sex'].map({'male':1, 'female':2})
- 将文本变量Sex, Cabin, Embarked用one-hot编码表示
for feat in ['Cabin', 'Embarked']:
x = pd.get_dummies(df[feat], prefix=feat)
df = pd.concat([df, x], axis=1)
数据重构
- 使用concat方法:将数据train-left-up.csv和train-right-up.csv横向合并为一张表,并保存这张表为result_up
list_up = [text_left_up,text_right_up]
result_up = pd.concat(list_up,axis=1)
result_up.head()
- 使用DataFrame自带的方法join方法和append
result_up = df2.join(df4) result_up.head() result_down = df1.join(df3) result_down.head() result = result_up.append(result_down) result
- 使用Panads的merge方法和DataFrame的append方法
list_up = [text_left_up,text_right_up] result_up = pd.concat(list_up,axis=1) result_up.head()
数据可视化
数据可视化包:
matplotlib.pyplot
seabornseaborn详解
- 可视化展示泰坦尼克号数据集中不同年龄的人生存与死亡人数分布情况
facet = sns.FacetGrid(text, hue="Survived",aspect=3)
facet.map(sns.kdeplot,'Age',shade= True)
facet.set(xlim=(0, text['Age'].max()))
facet.add_legend()