import pandas as pd
reviews = pd.read_csv("./winemag-data-130k-v2.csv", index_col=0)
pd.set_option("display.max_rows", 5)
我们可以将同样类型的东西group起来,并且计算出数量
reviews.groupby('points').points.count()
points
80 397
81 692
...
99 33
100 19
Name: points, Length: 21, dtype: int64
我们可以使用summary function来处理资料,例如说可以取得group後的min
reviews.groupby('points').price.min()
points
80 5.0
81 5.0
...
99 44.0
100 80.0
Name: price, Length: 21, dtype: float64
可以用apply来处理groupby後的资料
reviews.groupby('winery').apply(lambda df: df.title.iloc[0])
winery
1+1=3 1+1=3 NV Rosé Sparkling (Cava)
10 Knots 10 Knots 2010 Viognier (Paso Robles)
...
àMaurice àMaurice 2013 Fred Estate Syrah (Walla Walla V...
Štoka Štoka 2009 Izbrani Teran (Kras)
Length: 16757, dtype: object
可以利用lambda来取出group中,point最大的值
reviews.groupby(['country', 'province']).apply(lambda df: df.loc[df.points.idxmax()])
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
另外一个可以值得一提的function是agg()
可以利用这个函式取得summary的function
reviews.groupby(['country']).price.agg([len, min, max])
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
有效的利用groupby可以对资料做很多有力的处理
一般来说看到的都是single-label index
但是由於groupby可以group多个feature,因此会产生multi-indexs
countries_reviewed = reviews.groupby(['country', 'province']).description.agg([len])
countries_reviewed
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
mi = countries_reviewed.index
type(mi)
pandas.core.indexes.multi.MultiIndex
可以利用reset_index()
方法将MultiIndex转为SingleIndex
countries_reviewed.reset_index()
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
reset index完了之後,可以用sort_values
根据len
这个column做排序
countries_reviewed = countries_reviewed.reset_index()
countries_reviewed.sort_values(by='len')
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
sort_values
也能倒转排序,将参数ascending
设为False
countries_reviewed.sort_values(by='len', ascending=False)
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
若要根据index
做排序,可以使用sort_index()
函式
countries_reviewed.sort_index()
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
sort
也可以一次排序多个column
countries_reviewed.sort_values(by=['country', 'len'])
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
<<: Day 29 利用transformer自己实作一个翻译程序(十一) Decoder layer
>>: [Day28]Laravel Eloquent ORM
0x1 前言 是的,要继续写 Webhook 时却发现,Day 0x4 ~ 0x6 写的函数的都没有...
说到了 controller 就不得不说一下 API,简单来说就是负责建立客户所需的内容和产生所需回...
今天要介绍的是我另外一个也经常用的聚合方式,是Metrics底下的Scripted Metric 今...
基本语法 就让我们从大家学程序语言第一个程序码「Hello world!」开始讲起吧! #inclu...
<input id="phone" type="number&q...