1. 程式人生 > 其它 >Pandas筆記(三)

Pandas筆記(三)

本文介紹資料的分組groupby和排列sort,
資料以上一篇所介紹的wine資料為例

groupby

參考:https://zhuanlan.zhihu.com/p/101284491
以taster_twitter_handle建立一個分組並按照每個taster_twitter_handle的名稱建立一個統計個數的Series:

group_by_taster_twitter_handle = reviews.groupby('taster_twitter_handle')
reviews_written = group_by_taster_twitter_handle.taster_twitter_handle.count()
print(reviews_written)

以price建立分組並按照從小到大排序,值為其評分

best_rating_per_price = reviews.groupby('price')['points'].max().sort_index()

建立一個基於country和variety的複合分組:

country_variety = reviews.groupby(['country', 'variety'])

agg聚合資料:
將資料按照variety分組並建立基於points資料的最小,最大列:

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

結果:

              min    max
variety                 
Abouriou     15.0   75.0
Agiorgitiko  10.0   66.0
Aglianico     6.0  180.0
Aidani       27.0   27.0
Airen         8.0   10.0
...           ...    ...
Zinfandel     5.0  100.0
Zlahtina     13.0   16.0
Zweigelt      9.0   70.0
Çalkarası    19.0   19.0
Žilavka      15.0   15.0
[707 rows x 2 columns]

sort

參考:https://www.yiibai.com/pandas/python_pandas_sorting.html
Pandas有兩種排序方式,它們分別是按標籤sort_index和按實際值sort_values
sort_index
使用sort_index()方法,通過傳遞axis引數和排序順序,可以對DataFrame進行排序。 預設情況下,按照升序對行標籤進行排序。通過傳遞axis引數值為0或1,可以對列標籤進行排序。 預設情況下,axis = 0,逐行排列。

import pandas as pd
import numpy as np

unsorted_df = pd.DataFrame(np.random.randn(10,2),index=[1,4,6,2,3,5,9,8,0,7],columns = ['col2','col1'])
sorted_df=unsorted_df.sort_index(axis=1)
print (sorted_df)

sort_values
像索引排序一樣,sort_values()是按值排序的方法。它接受一個by引數,它將使用要與其排序值的DataFrame的列名稱。

import pandas as pd
import numpy as np

unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by='col1')

sort_values()提供了從mergeesortheapsortquicksort中選擇演算法的一個配置。Mergesort是唯一穩定的演算法。

import pandas as pd
import numpy as np

unsorted_df = pd.DataFrame({'col1':[2,1,1,1],'col2':[1,3,2,4]})
sorted_df = unsorted_df.sort_values(by='col1' ,kind='mergesort')