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')
上一篇:算法-位运算


下一篇:Python | BitMap算法及其实现