基于kaggle上泰坦尼克数据处理笔记
import pandas as pd
读取csv文件 pd.read_csv('文件名')
.shape 返回一个元组(行,列) 一般用.shape[0]查看数据行数
.append(file,ignore_index = True) 将两个数据集并列起来,并忽视其原来表的序列号统一整合。
.isnull() 将空缺的数返回Ture,而不空缺的返回False 可以与sum() 一起用便于快速整合缺失值的数量。
.fillna(值) 用于填充缺失值
列如:
full['Age']=full['Age'].fillna( full['Age'].mean() )
full['Fare'] = full['Fare'].fillna( full['Fare'].mean() )
map函数的用法
map(function,iterator) 为啥可以用function我是有点蒙
今天用到的地方
(1)
sex_mapDict={'male':1,
'female':0}
full['Sex']=full['Sex'].map(sex_mapDict)
首先构造一个字典,再用字典key值去匹配替换,这个还可以理解
(2)
def getTitle(name):
str1=name.split( ',' )[1] #Mr. Owen Harris
str2=str1.split( '.' )[0]#Mr
#strip() 方法用于移除字符串头尾指定的字符(默认为空格)
str3=str2.strip()
return str3
titleDf['Title'] = full['Name'].map(getTitle)
第二个碰到的用法是读取Name列的字符串,然后用方法把Name里面想要的字段读取出来,默认传入Name列的每一行去执行?有点疑惑这种map调用方法的办法。
需要把一列的数据从字符形式换成神经网络能够理解的形式,一般的方法是构建一个新列,然后链接到后面,然后删除原来的列
embarkedDf = pd.DataFrame()
embarkedDf = pd.get_dummies( full['Embarked'] , prefix='Embarked' )
full = pd.concat([full,embarkedDf],axis=1)
full.drop('Pclass',axis=1,inplace=True)
pd.DataFrame() 构建了一个空列表 .get_dummies生成对应类别的列 简而言之就是把Embarked中值的不同分成不同的列并用0,1的方式来表达这个数的是否存在 prefix就是对列进行前缀的添加
.drop(列或者行名,axis,inplace) 若是删除列 axis = 1 若是删除行 axis = 0 inplace默认为False 表示不对其删除后做保存
lambda函数的用法 将一个单独的变量变成函数使用的形式
full[ 'Cabin' ] = full[ 'Cabin' ].map( lambda x : x[0] )
其中lambda x :x[0] 就是构造了一个读取x的第一个字母的函数
例如
x = lambda c : c[0]
print(x('asdafwassff'))
#输出结果为a
其形式一般为 lambda x : 表达式
与map连用的另一种
familyDf[ 'FamilySize' ] = full[ 'Parch' ] + full[ 'SibSp' ] + 1
familyDf[ 'Family_Single' ] = familyDf[ 'FamilySize' ].map( lambda s : 1 if s == 1 else 0 )
familyDf[ 'Family_Small' ] = familyDf[ 'FamilySize' ].map( lambda s : 1 if 2 <= s <= 4 else 0 )
familyDf[ 'Family_Large' ] = familyDf[ 'FamilySize' ].map( lambda s : 1 if 5 <= s else 0 )
数据显示省略问题
pd.set_option('display.max_rows', 10)#显示10行
pd.set_option('display.max_columns', None)#显示全部列
.corr(method=person) person是相关系数来衡量两个数据集合是否在一条线上面,即针对线性数据的相关系数计算,针对非线性数据便会有误差。
spearman:非线性的,非正太分析的数据的相关系数 kendall:用于反映分类变量相关性的指标,即针对无序序列的相关系数,非正太分布的数据
.loc[0:50,' '] 0到50行 ‘ ’对应列
保存为csv文件 df.to_csv(path)
df.to_csv(‘path/Result1.csv’,index=0) #不保存行索引
df.to_csv(‘path/Result.csv’,header=0) #不保存列名