4. 串联DataFrame方法

  1. # 使用isnull方法将每个值转变为布尔值
  2. In[30]: movie = pd.read_csv('data/movie.csv')
  3. movie.isnull().head()
  4. Out[30]:

4. 串联DataFrame方法 - 图1

  1. # 使用sum统计布尔值,返回的是Series
  2. In[31]: movie.isnull().sum().head()
  3. Out[31]: color 19
  4. director_name 102
  5. num_critic_for_reviews 49
  6. duration 15
  7. director_facebook_likes 102
  8. dtype: int64
  1. # 对这个Series再使用sum,返回整个DataFrame的缺失值的个数,返回值是个标量
  2. In[32]: movie.isnull().sum().sum()
  3. Out[32]: 2654
  1. # 判断整个DataFrame有没有缺失值,方法是连着使用两个any
  2. In[33]: movie.isnull().any().any()
  3. Out[33]: True

原理

  1. # isnull返回同样大小的DataFrame,但所有的值变为布尔值
  2. In[34]: movie.isnull().get_dtype_counts()
  3. Out[34]: bool 28
  4. dtype: int64

更多

  1. # movie数据集的对象数据包含缺失值。默认条件下,聚合方法min、max、sum,不会返回任何值。
  2. In[35]: movie[['color', 'movie_title', 'color']].max()
  3. Out[35]: Series([], dtype: float64)
  1. # 要让pandas强行返回每列的值,必须填入缺失值。下面填入的是空字符串:
  2. In[36]: movie.select_dtypes(['object']).fillna('').max()
  3. Out[36]: color Color
  4. director_name Étienne Faure
  5. actor_2_name Zubaida Sahar
  6. genres Western
  7. ...
  8. movie_imdb_link [http://www.imdb.com/title/tt5574490/?ref_=fn_t...](http://www.imdb.com/title/tt5574490/?ref_=fn_t...)
  9. language Zulu
  10. country West Germany
  11. content_rating X
  12. Length: 12, dtype: object</pre>