参加kaggle数据挖掘比赛,就第一个赛题泰坦尼克号的数据,学习相关数据预处理以及模型建立,本博客关注基于熊猫进行数据预处理过程。包括数据统计,数据离散化,数据关联性分析
熊猫作为pd导入 进口numpy np train_df=pd.read_csv(. ./数据/train.csv) #训练集 test_df=pd.read_csv(. ./数据/test.csv) #测试集 结合=[train_df test_df]
查看数据维度以及类型
缺失值处理
查看对象数据统计信息
数值属性离散化
计算特征与目标属性之间关系
#查看前五条数据 打印train_df.head (5) #查看每列数据类型以及南情况 打印train_df.info () #获得所有对象属性 打印train_data.describe(包括=[' O ']) .columns
#查看连续数值属性基本统计情况 打印train_df.describe () #查看对象属性数据统计情况 打印train_df.describe(包括=[' O ']) #统计单标题列各个元素对应的个数 打印train_df['标题'].value_counts () #属性列删除 train_df=train_df。下降(['名称',' PassengerId '],轴=1)
#直接丢弃缺失数据列的行 打印df4.dropna(轴=0,子集=[' col1 ']) #丢弃nan的行,指子集定查看哪几列 打印df4.dropna(轴=1)#丢弃nan的列 #采用其他值填充 数据集数据集[“小屋”]=[“小屋”].fillna (“U”) 数据集数据集['标题']=['标题'].fillna (0) #采用出现最频繁的值填充 .mode freq_port=train_df.Embarked.dropna () () [0] 数据集数据集['开始']=['开始'].fillna (freq_port) #采用中位数或者平均数填充 test_df(“费用”).fillna (test_df(“费用”).dropna () .median(),原地=True) test_df(“费用”).fillna (test_df(“费用”).dropna () .mean(),原地=True)
FareBand #创造一个新列,将连续属性表现切分成四份 train_df [' FareBand ']=pd。qcut (train_df(“费用”),4) #查看切分后的属性与目标属性生存的关系 train_df [[“FareBand”、“幸存”]]。groupby ([' FareBand '], as_index=False) .mean ()。sort_values (=癋areBand”,提升=True) #建立对象属性映射字典 title_mapping={“先生”:1、“小姐”:2,“夫人”:3,“大师”:4,“皇室”:5,“官”:6} 数据集数据集['标题']=['标题']. map (title_mapping)
<强>计算特征与目标属性之间关系强>
对象与连续目标属性之间,可以groupby均值
对象与离目标属散性之间,先将目标数值化,然后groupby均值,或者分别条形统计图
连续属性需要先切割然后再进行groupby计算,或者皮尔逊相关系数
打印train_df [[“AgeBand”、“幸存”]]。groupby ([' AgeBand '], as_index=False) .mean ()。sort_values (=癆geBand”,提升=True)
“‘ 创建df对象 ”“” s1=pd.Series ([np.nan 1, 2, 3, 4, 5]) s2=pd.Series ([np.nan, 1、2、3、4、5]) 打印s1 日期=pd.date_range(“20130101”,时间=6) 打印日期 df=pd.DataFrame (np.random.rand(4),指数=日期列=列表(“ABCD”)) #打印df df2=pd.DataFrame ({“A”: 1、 B: pd.Timestamp (“20130102”), “C”: pd.Series(1,指数=列表(范围(4)),dtype=' float32 '), “D”: np.array ([3] * 4, dtype=np.int32), “E”: pd.Categorical([‘测试’,‘火车’,‘测试’,‘火车’]), F:“foo” }) #打印df2.dtypes
df3=pd.DataFrame ({col1: s1, “col2”: s2 }) 打印df3 “‘ 2 .查看df数据 “‘ 打印df3.head(2) #查看头几条 打印df3.tail(3) #查看尾几条 打印df。指数#查看索引 打印df.info() #查看非非数据条数 打印类型(df.values) #返回二元数组 #打印df3.values 打印df.describe() #对每列数据进行初步的统计 打印df3 打印df3.sort_values (=[' col1 '],轴=0,提升=True) #按照哪几列排序 “‘ 3 .选择数据 “‘ ser_1=df3 (“col1”) 打印类型(ser_1) # pandas.core.series.Series 打印df3[0:2] #前三行 打印df3.loc [df3。指数[0]]#通过指数来访问 打印df3.loc [df3。指数[0],[' col2 ']] #通过行索引和列名来唯一确定一个位置 打印df3。iloc[1] #通过位置来访问 打印df3。iloc[[1,2], 1:2) #通过位置来访问 打印”===" 打印df3.loc [: [‘col1’,‘col2]] .as_matrix() #返回nunpy二元数组 打印类型(df3.loc [: [‘col1’,‘col2]] .as_matrix ()) “‘ 4 .布尔索引,过滤数据 “‘ 打印df3 [df3。col1祝辞;2) df4=df3.copy () df4 [' col3 ']=pd.Series ([' 1 ', ' 2 ', ' 2 ', ' 3 ', ' 1 ', ' 2 ']) 打印df4 打印df4 [df4 [' col3 '] .isin((“一”、“两”))) df4.loc [: ' col3 ']=?” 打印df4 “‘ 5 .缺失值处理,大熊猫将缺失值用南代替 “‘ 打印pd.isnull (df4) 打印df4.dropna(轴=0,子集=[' col1 ']) #丢弃nan的行,指子集定查看哪几列 打印df4.dropna(轴=1)#丢弃nan的列对熊猫进行数据预处理的实例讲解