数据预处理与特征工程练习要求(数据挖掘的前期处理工作——提高数据质量)
1. 使用文件qunar_freetrip.csv和Narrativedata.csv进行数据预处理。
2. 使用文件digit recognizor.csv做特征选择和降维。
3. 代码要尽可能多加注释。
0- 准备工作
#0
#导入所需要的库
import pandas as pd
import numpy as np
from sklearn import preprocessing
from sklearn.model_selection import train_test_split
from sklearn.preprocessing import StandardScaler,MinMaxScaler
from sklearn.impute import SimpleImputer
import matplotlib.pyplot as plt
from sklearn.model_selection import cross_val_score
from sklearn.feature_selection import VarianceThreshold
1- 数据预处理(1)
#1
#1.1 读取数据,使用Narrativedata.csv(泰坦尼克号数据)进行数据预处理
data1 = pd.read_csv(r"C:\Users\Desktop\Narrativedata.csv",index_col=0)
data1.head()
#观察数据,是个分类数据集,表头分别是年龄、性别、舱门和是否存活,其中是否存活是一个标签数据
结果:
Age Sex Embarked Survived
0 22.0 male S No
1 38.0 female C Yes
2 26.0 female S Yes
3 35.0 female S Yes
4 35.0 male S No
#1.2 info看一下数据的信息
data1.info()
#可以观察到,一共有891条数据,年龄Age却只有714条,缺失的较多,如果都删除肯定不行,浪费了数据;
#但可以观察到Embarked只缺失了2条数据,对于缺失得比较少的,可以删除处理,如果是大量缺失就需要进行填补
结果:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 891 entries, 0 to 890
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 Age 714 non-null float64
1 Sex 891 non-null object
2 Embarked 889 non-null object
3 Survived 891 non-null object
dtypes: float64(1), object(3)
memory usage: 34.8+ KB
#1.3 填补年龄Age缺失数据
data1.loc[:,"Age"]=data1.loc[:,"Age"].fillna(data1.loc[:,"Age"].median()) #用中位数进行填补,需要把属性列的中位数求出来,fillna来填补空缺
data1.dropna(axis