🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
[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)