Pandas数据分析学习打卡(一):Nullable缺失数据
Pandas第一天的学习内容是关于缺失数据,下面是一些个人认为比较重要的内容:
1.首先就是判定是否为缺失类型的isna()和notna()方法,返回的是布尔类型,可以直接对DataFrame对象使用。可以通过这个方法直接查看df中有缺失值的行:
df[df['需要查看的列'].isna()]
2.三种缺失符号代表缺失值,分别是numpy.nan(不等于任何值,甚至不等于自己)、None(可以等于自身)、NaT(可以看作针对时间序列的numpy.nan)
3.关于Nullable的运算,可以分成逻辑运算和算术运算。逻辑运算里有个原则是不依赖Nullable数据的话就可以得到结果,我的理解是把Nullable数据换成其它任意正常值仍然可以得到一样的结果,那就是不依赖,不知道对不对哈。算术运算的话,除了pd.NA ** 0和1 ** pd.NA的结果是1,其它的都是NA。在乘法运算中,NA为1;加法里NA被当做0;使用累计函数和groupby方法时,缺失值自动略过。还有个convert_dtypes方法,可以在读取数据的把数据转换成Nullable数据类型,方便统一处理。
4.对NA的处理,资料里讲到了fillna()填充、dropna()剔除和interpolate()插值,有一些细节,这里不展开了。
接下来是问题和练习题:
【问题一】如何删除缺失值占比超过25%的列?
思路:用isna和notna方法统计出各列的缺失值占比,取出index,在用drop函数删除,代码如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({
'col1': ['a', 'b', np.nan, np.nan, 'e']\
, 'col2': range(5, 10), 'col3