赞
踩
读入要测试的文件。
- import pandas as pd
- reviews = pd.read_csv("winemag-data-130k-v2.csv", index_col=0)
- reviews.head()
查看部分数据:
创建一个序列(Series),他的索引是数据集中的“taster_twitter_handle”,值则是每个人写下的评论数。
- reviews_written = reviews.groupby('taster_twitter_handle').size()
- # or
- reviews_written = reviews.groupby('taster_twitter_handle').taster_twitter_handle.count()
- '''
- 按taster_twitter_handle列进行分组,统计每个分组的大小
- 第二种是 统计分组中 taster_twitter_handle的数目其实是一样的 因为分组就是按照taster_twitter_handle分的
- '''
用于:我有一定数目的钱,那我能买的最好的酒是啥呢?
- best_rating_per_price = reviews.groupby('price')['points'].max().sort_index()
- # best_rating_per_price = reviews.groupby('price').points.max().sort_index()
- # 上面两个是等价的
- best_rating_per_price
- '''
- price
- 4.0 86
- 5.0 87
- 6.0 88
- 7.0 91
- 8.0 91
- 9.0 91
- 10.0 91
- 11.0 92
- 12.0 93
- 13.0 94
- 14.0 94
- 15.0 93
- 16.0 94
- 17.0 93
- 18.0 94
- 19.0 94
- 20.0 96
- 21.0 94
- 22.0 95
- 23.0 94
- 24.0 95
- 25.0 95
- 26.0 95
- 27.0 96
- 28.0 96
- 29.0 96
- 30.0 96
- 31.0 95
- 32.0 96
- 33.0 94
- ...
- 698.0 97
- 710.0 95
- 750.0 92
- 757.0 98
- 764.0 94
- 767.0 96
- 770.0 96
- 775.0 98
- 780.0 91
- 790.0 87
- 800.0 99
- 820.0 96
- 848.0 100
- 850.0 99
- 886.0 97
- 900.0 94
- 932.0 97
- 973.0 95
- 980.0 94
- 1000.0 97
- 1100.0 97
- 1125.0 94
- 1200.0 96
- 1300.0 96
- 1500.0 100
- 1900.0 98
- 2000.0 97
- 2013.0 91
- 2500.0 96
- 3300.0 88
- Name: points, Length: 390, dtype: int64
- '''
求每一个种类的最大和最小的酒的价格。
- price_extremes = reviews.groupby("variety").price.agg(['min','max'])
- price_extremes
先看看 分组是什么情况:
再看看 agg函数是咋回事?
agg 方法将一个函数使用在一个数列上,然后返回一个标量的值。也就是说agg每次传入的是一列数据,对其聚合后返回标量。
上面我们是对对一列使用两个函数(min,max)。
我们也可以对不同的列应用不同的聚合函数。
应用:最贵酒的种类?
- sorted_varieties = price_extremes.sort_values(by=['min', 'max'], ascending=False)
- sorted_varieties
- reviewer_mean_ratings = reviews.groupby('taster_name').points.mean()
- reviewer_mean_ratings
- '''
- taster_name
- Alexander Peartree 85.855422
- Anna Lee C. Iijima 88.415629
- Anne Krebiehl MW 90.562551
- Carrie Dykes 86.395683
- Christina Pickard 87.833333
- Fiona Adams 86.888889
- Jeff Jenssen 88.319756
- Jim Gordon 88.626287
- Joe Czerwinski 88.536235
- Kerin O’Keefe 88.867947
- Lauren Buzzeo 87.739510
- Matt Kettmann 90.008686
- Michael Schachner 86.907493
- Mike DeSimone 89.101167
- Paul Gregutt 89.082564
- Roger Voss 88.708003
- Sean P. Sullivan 88.755739
- Susan Kostrzewa 86.609217
- Virginie Boone 89.213379
- Name: points, dtype: float64
- '''
先看看分组情况:
- country_variety_counts = reviews.groupby(['country','variety']).size().sort_values(ascending=False)
- country_variety_counts
- '''
- country variety
- US Pinot Noir 9885
- Cabernet Sauvignon 7315
- Chardonnay 6801
- France Bordeaux-style Red Blend 4725
- Italy Red Blend 3624
- US Syrah 3244
- Red Blend 2972
- France Chardonnay 2808
- Italy Nebbiolo 2736
- US Zinfandel 2711
- Portugal Portuguese Red 2466
- US Merlot 2311
- Italy Sangiovese 2265
- US Sauvignon Blanc 2163
- France Pinot Noir 1966
- Rosé 1923
- US Bordeaux-style Red Blend 1824
- Germany Riesling 1790
- US Riesling 1753
- Argentina Malbec 1510
- Spain Tempranillo 1429
- France Champagne Blend 1243
- Austria Grüner Veltliner 1234
- ...
- '''
注明:
以上数据来自kaggle learn中的pandas教程。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。