part1 了解数据集基本情况
当我们面对一个很大的数据集的时候,如何快速得到他的行数与列数呢?
举个栗子,我们读取一个nhanes数据集,我们加上一个.shape,输出的结果就是他的行数和列数了。
也就是:(jupyter笔记本形式)
当我们想看他的列名分别有什么时,我们加上一个.columns
也就是:
如果想知道表格各列的数据类型:
也就是:
part2 提取某一列
在这个程序里,w , x , y , z 他们print出来是一样的。所以,要提取某一列有这么多种形式!
形式1,在数组里填写“列名”
形式2,在loc的逗号右边写“列名”
形式3,直接da.列名
形式4,iloc的逗号右边写列数,记得,是编程里的顺序,dmdeduc2在第十列,是编程顺序9
此时,他们的type全部是series,也就是一维数据。
part3 缺失值NULL
表格中会有很多缺失值,我们要来处理一下
函数1: isnull (别名isna) 和 notnull
如果isnull返回ture,说明这是一个缺失值,返回false说明没有缺失,notnull的话反之亦然。
举个栗子:我来看看第10列的0-10行里面,空值是哪个
输出:这说明第八个(也就是第九行)为空值
如果改成notnull,输出就变成这样:
函数2: .dropna()da.dropna ( axis=0, how='any', thresh=None, subset=None, inplace=False )
阿这……这么一大串是什么意思呀,别急,我们一起来看看
axis
0表示对包含缺失值的行进行删除
1表示对包含缺失值的列进行删除;
how
any表示有任何NA存在就删除所在行或列
all表示该行或列必须都是NA才删除
thresh
int整数数据类型
optional随意数据类型
subset
array-like选定列
potional所有列
inplace
True在原表上进行修改
False不在原表上进行修改
举例子:
da.dropna(how = 'all') # 传入这个参数后将只丢弃全为缺失值的那些行
da.dropna(axis = 1) # 丢弃有缺失值的列(一般不会这么做,这样会删掉一个特征)
da.dropna(axis=1,how="all") # 丢弃全为缺失值的那些列
da.dropna(axis=0,subset = ["Age", "Sex"]) # 丢弃‘Age’和‘Sex’这两列中有缺失值的
函数3: .fillna()
如果不想过滤(去除)数据,我们可以选择使用fillna()方法填充NaN.
一、不指定任何参数
1.常数填充
语法:
da.fillna(要填充的数字)
栗子:
填充前:
填充:print( df.fillna (0) )
填充后:
可以看到nan值都变成了0(怎么像整容手术的广告哈哈哈)
2. 用字典填充
填充前:
填充:(给age填充18,给phone填充888888)print(df.fillna({'Age':'18','Phone':'888888'}))
填充后:
二、指定method参数
填充前:
pad/ffill:print(df.fillna(method='ffill'))
用缺失值的前一个非缺失值去填充该缺失值
backfill/bfill:print(df.fillna(method='bfill'))
用缺失值的下一个非缺失值填充该缺失值
三、指定limit参数print(df.fillna(method='bfill',limit=1))
意思就是只填充一行
四:指定axis参数
值得注意的是,此时,0表示列,1表示行,跟我们前面提到的dropna是相反的!!!!
填充前:
填充:print(df.fillna(666,limit=1,axis=1))
填充后:(按行填充,只填充一次,填充数字为666)