1. 计算布尔值统计信息

  1. # 读取movie,设定行索引是movie_title
  2. In[2]: pd.options.display.max_columns = 50
  3. In[3]: movie = pd.read_csv('data/movie.csv', index_col='movie_title')
  4. movie.head()
  5. Out[3]:

1. 计算布尔值统计信息 - 图1

  1. # 判断电影时长是否超过两小时
  2. In[4]: movie_2_hours = movie['duration'] > 120
  3. movie_2_hours.head(10)
  4. Out[4]: movie_title
  5. Avatar True
  6. Pirates of the Caribbean: At World's End True
  7. Spectre True
  8. The Dark Knight Rises True
  9. Star Wars: Episode VII - The Force Awakens False
  10. John Carter True
  11. Spider-Man 3 True
  12. Tangled False
  13. Avengers: Age of Ultron True
  14. Harry Potter and the Half-Blood Prince True
  15. Name: duration, dtype: bool
  1. # 有多少时长超过两小时的电影
  2. In[5]: movie_2_hours.sum()
  3. Out[5]: 1039
  1. # 超过两小时的电影的比例
  2. In[6]: movie_2_hours.mean()
  3. Out[6]: 0.21135069161920261
  1. # 用describe()输出一些该布尔Series信息
  2. In[7]: movie_2_hours.describe()
  3. Out[7]: count 4916
  4. unique 2
  5. top False
  6. freq 3877
  7. Name: duration, dtype: object
  1. # 实际上,dureation这列是有缺失值的,要想获得真正的超过两小时的电影的比例,需要先删掉缺失值
  2. In[8]: movie['duration'].dropna().gt(120).mean()
  3. Out[8]: 0.21199755152009794

原理

  1. # 统计False和True值的比例
  2. In[9]: movie_2_hours.value_counts(normalize=True)
  3. Out[9]: False 0.788649
  4. True 0.211351
  5. Name: duration, dtype: float64

更多

  1. # 比较同一个DataFrame中的两列
  2. In[10]: actors = movie[['actor_1_facebook_likes', 'actor_2_facebook_likes']].dropna()
  3. (actors['actor_1_facebook_likes'] > actors['actor_2_facebook_likes']).mean()
  4. Out[10]: 0.97776871303283708