数据清洗基于python的pandas库的学习笔记

数据清洗基于python的pandas库的学习笔记,第1张

数据清洗基于python的pandas库的学习笔记

基于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) #不保存列名

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/4655659.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-06
下一篇 2022-11-06

发表评论

登录后才能评论

评论列表(0条)

保存