Pandas笔记(三)

本文介绍数据的分组groupby, 排列sort,重命名rename,合成combine
数据以上一篇所介绍的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')

rename

重命名列和行:
renamed = reviews.rename(columns={'region_1':'region','region_2':'locale'})
reindexed = reviews.rename_axis('wines', axis='rows')

concat和join

组合多个dataframe:
# 上下组合
canadian_youtube = pd.read_csv("../input/youtube-new/CAvideos.csv")
british_youtube = pd.read_csv("../input/youtube-new/GBvideos.csv")
pd.concat([canadian_youtube, british_youtube])

# 左右组合,可以添加后缀isuffix, rsuffix
left = canadian_youtube.set_index(['title', 'trending_date'])
right = british_youtube.set_index(['title', 'trending_date'])
left.join(right, lsuffix='_CAN', rsuffix='_UK')
posted @   Asp1rant  阅读(47)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
历史上的今天:
2021-02-05 Angular 学习笔记 (三) - LifeCycle和ViewEncapsulation
点击右上角即可分享
微信分享提示