6. 比较缺失值

  1. # Pandas使用NumPy NaN(np.nan)对象表示缺失值。这是一个不等于自身的特殊对象:
  2. In[48]: np.nan == np.nan
  3. Out[48]: False
  1. # Python的None对象是等于自身的
  2. In[49]: None == None
  3. Out[49]: True
  1. # 所有和np.nan的比较都返回False,除了不等于:
  2. In[50]: 5 > np.nan
  3. Out[50]: False
  4. In[51]: np.nan > 5
  5. Out[51]: False
  6. In[52]: 5 != np.nan
  7. Out[52]: True
  1. # college_ugds_所有值和.0019比较,返回布尔值DataFrame
  2. In[53]: college = pd.read_csv('data/college.csv', index_col='INSTNM')
  3. college_ugds_ = college.filter(like='UGDS_')
  4. In[54]: college_ugds_.head() == .0019
  5. Out[54]:

6. 比较缺失值 - 图1

  1. # 用DataFrame和DataFrame进行比较
  2. In[55]: college_self_compare = college_ugds_ == college_ugds_
  3. college_self_compare.head()
  4. Out[55]:

6. 比较缺失值 - 图2

  1. # 用all()检查是否所有的值都是True;这是因为缺失值不互相等于。
  2. In[56]: college_self_compare.all()
  3. Out[56]: UGDS_WHITE False
  4. UGDS_BLACK False
  5. UGDS_HISP False
  6. UGDS_ASIAN False
  7. ...
  8. UGDS_NHPI False
  9. UGDS_2MOR False
  10. UGDS_NRA False
  11. UGDS_UNKN False
  12. Length: 9, dtype: bool
  1. # 可以用==号判断,然后求和
  2. In[57]: (college_ugds_ == np.nan).sum()
  3. Out[57]: UGDS_WHITE 0
  4. UGDS_BLACK 0
  5. UGDS_HISP 0
  6. UGDS_ASIAN 0
  7. ..
  8. UGDS_NHPI 0
  9. UGDS_2MOR 0
  10. UGDS_NRA 0
  11. UGDS_UNKN 0
  12. Length: 9, dtype: int64
  1. # 统计缺失值最主要方法是使用isnull方法:
  2. In[58]: college_ugds_.isnull().sum()
  3. Out[58]: UGDS_WHITE 661
  4. UGDS_BLACK 661
  5. UGDS_HISP 661
  6. UGDS_ASIAN 661
  7. ...
  8. UGDS_NHPI 661
  9. UGDS_2MOR 661
  10. UGDS_NRA 661
  11. UGDS_UNKN 661
  12. Length: 9, dtype: int64
  1. # 比较两个DataFrame最直接的方法是使用equals()方法
  2. In[59]: from pandas.testing import assert_frame_equal
  3. In[60]: assert_frame_equal(college_ugds_, college_ugds_)
  4. Out[60]: True

更多

  1. # eq()方法类似于==,和前面的equals有所不同
  2. In[61]: college_ugds_.eq(.0019).head()
  3. Out[61]:

6. 比较缺失值 - 图3