当前位置:   article > 正文

Pandas四、Grouping(分组)和Sorting(排序)_pandas group sort

pandas group sort

读入要测试的文件。

  1. import pandas as pd
  2. reviews = pd.read_csv("winemag-data-130k-v2.csv", index_col=0)
  3. reviews.head()

查看部分数据:

1、找出数据集中最常见的。统计每个分组中指定列的数量。

创建一个序列(Series),他的索引是数据集中的“taster_twitter_handle”,值则是每个人写下的评论数。

  1. reviews_written = reviews.groupby('taster_twitter_handle').size()
  2. # or
  3. reviews_written = reviews.groupby('taster_twitter_handle').taster_twitter_handle.count()
  4. '''
  5. 按taster_twitter_handle列进行分组,统计每个分组的大小
  6. 第二种是 统计分组中 taster_twitter_handle的数目其实是一样的 因为分组就是按照taster_twitter_handle分的
  7. '''

 

2、创建一个序列(Series),它的索引是酒的价格(price),值则是评分(points)的最大值。要求通过价格(price)升序排序。

用于:我有一定数目的钱,那我能买的最好的酒是啥呢?

  1. best_rating_per_price = reviews.groupby('price')['points'].max().sort_index()
  2. # best_rating_per_price = reviews.groupby('price').points.max().sort_index()
  3. # 上面两个是等价的
  4. best_rating_per_price
  5. '''
  6. price
  7. 4.0 86
  8. 5.0 87
  9. 6.0 88
  10. 7.0 91
  11. 8.0 91
  12. 9.0 91
  13. 10.0 91
  14. 11.0 92
  15. 12.0 93
  16. 13.0 94
  17. 14.0 94
  18. 15.0 93
  19. 16.0 94
  20. 17.0 93
  21. 18.0 94
  22. 19.0 94
  23. 20.0 96
  24. 21.0 94
  25. 22.0 95
  26. 23.0 94
  27. 24.0 95
  28. 25.0 95
  29. 26.0 95
  30. 27.0 96
  31. 28.0 96
  32. 29.0 96
  33. 30.0 96
  34. 31.0 95
  35. 32.0 96
  36. 33.0 94
  37. ...
  38. 698.0 97
  39. 710.0 95
  40. 750.0 92
  41. 757.0 98
  42. 764.0 94
  43. 767.0 96
  44. 770.0 96
  45. 775.0 98
  46. 780.0 91
  47. 790.0 87
  48. 800.0 99
  49. 820.0 96
  50. 848.0 100
  51. 850.0 99
  52. 886.0 97
  53. 900.0 94
  54. 932.0 97
  55. 973.0 95
  56. 980.0 94
  57. 1000.0 97
  58. 1100.0 97
  59. 1125.0 94
  60. 1200.0 96
  61. 1300.0 96
  62. 1500.0 100
  63. 1900.0 98
  64. 2000.0 97
  65. 2013.0 91
  66. 2500.0 96
  67. 3300.0 88
  68. Name: points, Length: 390, dtype: int64
  69. '''

3、创建一个DataFrame,它的索引是variety,值则是酒价格的最大值和最小值。

求每一个种类的最大和最小的酒的价格。

  1. price_extremes = reviews.groupby("variety").price.agg(['min','max'])
  2. price_extremes

                                                                       

先看看 分组是什么情况:

再看看 agg函数是咋回事?

agg 方法将一个函数使用在一个数列上,然后返回一个标量的值。也就是说agg每次传入的是一列数据,对其聚合后返回标量。 
上面我们是对对一列使用两个函数(min,max)。

我们也可以对不同的列应用不同的聚合函数。

                                                       

4、创建一个变量,sorted_varieties,对上一个问题的变量price_extremes根据其最小价格,然后根据最大价格值进行降序排序。

应用:最贵酒的种类?

  1. sorted_varieties = price_extremes.sort_values(by=['min', 'max'], ascending=False)
  2. sorted_varieties

                                                    

5、创建一个序列(Series),它的索引是评价者,值则是评价者给出的评分,提示:你可能需要taster_name和points列。

  1. reviewer_mean_ratings = reviews.groupby('taster_name').points.mean()
  2. reviewer_mean_ratings
  3. '''
  4. taster_name
  5. Alexander Peartree 85.855422
  6. Anna Lee C. Iijima 88.415629
  7. Anne Krebiehl MW 90.562551
  8. Carrie Dykes 86.395683
  9. Christina Pickard 87.833333
  10. Fiona Adams 86.888889
  11. Jeff Jenssen 88.319756
  12. Jim Gordon 88.626287
  13. Joe Czerwinski 88.536235
  14. Kerin O’Keefe 88.867947
  15. Lauren Buzzeo 87.739510
  16. Matt Kettmann 90.008686
  17. Michael Schachner 86.907493
  18. Mike DeSimone 89.101167
  19. Paul Gregutt 89.082564
  20. Roger Voss 88.708003
  21. Sean P. Sullivan 88.755739
  22. Susan Kostrzewa 86.609217
  23. Virginie Boone 89.213379
  24. Name: points, dtype: float64
  25. '''

                                                   

6、创建一个Series序列,他们的索引是国家(country)和种类(variety)组成的复合索引队,然后根据酒数量进行降序排序。

先看看分组情况:

  1. country_variety_counts = reviews.groupby(['country','variety']).size().sort_values(ascending=False)
  2. country_variety_counts
  3. '''
  4. country variety
  5. US Pinot Noir 9885
  6. Cabernet Sauvignon 7315
  7. Chardonnay 6801
  8. France Bordeaux-style Red Blend 4725
  9. Italy Red Blend 3624
  10. US Syrah 3244
  11. Red Blend 2972
  12. France Chardonnay 2808
  13. Italy Nebbiolo 2736
  14. US Zinfandel 2711
  15. Portugal Portuguese Red 2466
  16. US Merlot 2311
  17. Italy Sangiovese 2265
  18. US Sauvignon Blanc 2163
  19. France Pinot Noir 1966
  20. Rosé 1923
  21. US Bordeaux-style Red Blend 1824
  22. Germany Riesling 1790
  23. US Riesling 1753
  24. Argentina Malbec 1510
  25. Spain Tempranillo 1429
  26. France Champagne Blend 1243
  27. Austria Grüner Veltliner 1234
  28. ...
  29. '''

注明:

  以上数据来自kaggle learn中的pandas教程。

pandas learn

 

 

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/161989
推荐阅读
相关标签
  

闽ICP备14008679号