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()提供了从mergeesort
,heapsort
和quicksort
中选择算法的一个配置。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')
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具
2021-02-05 Angular 学习笔记 (三) - LifeCycle和ViewEncapsulation