[TOC]
*****
pandas使用numpy.nan来代表缺失值。缺失值不代表没有值,它本身就是某种类型的值。PYTHON中一般用None代表没有值,这与nan是两回事。缺失值不会被程序计算。处理的方式:
1. 删除含有缺失值的行
2. 填充缺失值
![](https://img.kancloud.cn/d5/e5/d5e5e6fcc3c340942bac26565e1f53a2_325x247.png)
### 1.4.1. 检测缺失值,返回布尔值
有几种方式检测数据值是否为空或缺失
```
pd.isnull(a)
```
![](https://img.kancloud.cn/8f/77/8f774567e14b04c7608ac4d0b5d53dea_152x137.png)
![](https://img.kancloud.cn/5a/46/5a46c45d6c03d7d9f8751324e97e30de_181x190.png)
![](https://img.kancloud.cn/17/ae/17aecfe40ca073e1e6a62823c8011f24_234x363.png)
![](https://img.kancloud.cn/e8/9c/e89c62c0edad8c5464297d112de955a5_220x358.png)
![](https://img.kancloud.cn/f2/3d/f23d0cdcb8625b30898241d80f737585_264x301.png)
判断数据框中的每个数据是否为空
![](https://img.kancloud.cn/d4/91/d4917f875490fdbec6b5ae7c6f538be7_651x271.png)
### 1.4.2. 删除与填充
对于missing value可以删除行或填充缺失值
```
#根据二维数组构建dataFrame,用list('ABCD')构建四个列
df_test = pd.DataFrame([[np.nan, 2, np.nan, 0], [3, 4, np.nan, 1],
[np.nan, np.nan, np.nan, 5]],
columns=list('ABCD'))
```
![](https://img.kancloud.cn/9b/a1/9ba164a192be58cfd76c5821913bd77b_192x156.png)
```
axis=0按行删除,行里有nan类型数据就删除整行
df_test.dropna(axis = 0)
```
![](https://img.kancloud.cn/6d/90/6d901f83a88a7dfef1c4f607a320814f_160x52.png)
任意一列有nan值,删除整列
![](https://img.kancloud.cn/d6/44/d6447d6f06246cc3b4010caa95b9e3b3_270x200.png)
#如果某列上的值全是nan,则删除该列
df_test.dropna(axis = 1,how = "all")
![](https://img.kancloud.cn/37/db/37db01ee5c8e314d6b79a86a89a5344f_281x147.png)
#按行删除,每行与b列相交的数据值为nan,则删除该行
df_test.dropna(axis = 0,subset=['B'])
**填充缺失值**
df.fillna(value=None, method=None, axis=None, inplace=False, limit=None, downcast=None, **kwargs)
![](https://img.kancloud.cn/92/c2/92c2f38d686f1af4e74642ae3eb545b4_647x99.png)
* backfill:根据后面的值填充缺失值
* bfill根据前面的值填充缺失值
现在有例子:
![](https://img.kancloud.cn/9d/33/9d338c0549507f696867fda1f7ddd082_232x159.png)
a.fillna(value=10)
![](https://img.kancloud.cn/21/e0/21e0a621ed4f79b92e6b0af691a48290_179x136.png)
*****
用后面的值填充 backfill/bfill
![](https://img.kancloud.cn/8f/fa/8ffa95d3bc58e7ac9ceab7812358288b_294x188.png)
*****
用前面一个最近的有效值填充 pad/ffill
![](https://img.kancloud.cn/97/4b/974b31bb517e64555acf2fde4d817483_267x185.png)
*****
将birth_city和birth_state两列的缺失值替换为other和something
df.fillna({"birth_city":"other","birth_state":"something"})
![](https://img.kancloud.cn/2b/c9/2bc93ec92334dffa41168b972c15731f_924x248.png)
### 1.4.3. Missing value的计算
![](https://img.kancloud.cn/b5/67/b567e8bbbcee07a57a0d3d39b9862cf3_231x167.png)
**注意**
nan之间不能比较
*****
a是series,nan+3仍然是nan
![](https://img.kancloud.cn/5c/a0/5ca0f6df1220dad736a3e0c2108ddffb_214x362.png)
nan不参与任何数学计算,求和 求平均数都不参与
![](https://img.kancloud.cn/eb/06/eb06837218ba53dc31208b52115aa517_125x161.png)
- 第五节 Pandas数据管理
- 1.1 文件读取
- 1.2 DataFrame 与 Series
- 1.3 常用操作
- 1.4 Missing value
- 1.5 文本数据
- 1.6 分类数据
- 第六节 pandas数据分析
- 2.1 索引选取
- 2.2. 分组计算
- 2.3. 表联结
- 2.4. 数据透视与重塑(pivot table and reshape)
- 2.5 官方小结图片
- 第七节 NUMPY科学计算
- 第八节 python可视化
- 第九节 统计学
- 01 单变量
- 02 双变量
- 03 数值方法
- 第十节 概率
- 01 概率
- 02 离散概率分布
- 03 连续概率分布
- 第一节 抽样与抽样分布
- 01抽样
- 02 点估计
- 03 抽样分布
- 04 抽样分布的性质
- 第十三节 区间估计
- 01总体均值的区间估计:𝝈已知
- 02总体均值的区间估计:𝝈未知
- 03总体容量的确定
- 04 总体比率