pandas高级数据分析快速入门之数据筛选——分组排序筛选实践笔记(代码片段)

肖永威 肖永威     2023-01-13     318

关键词:

首先,读取文件。

import pandas as pd
import datetime
df = pd.read_excel('sport.xlsx')
df['birthday'] = df['birthday'].astype('datetime64')
df
idnameageGendersportbirthday
01001董国建34马拉松1987-03-16
11002苏炳添31百米1989-08-29
21003彭建华24马拉松1996-12-18
31004张德顺25马拉松1996-02-21
41005焦安静25马拉松1995-09-03
51006葛曼棋24百米1997-10-13
61007吴智强27百米1994-04-13
71008谢震业28百米1993-08-17
81009梁小静24百米1997-04-07
91010韦永丽30百米1991-10-11
101011仁青东知布20马拉松2000-10-15
111012张新艳27马拉松1994-02-01

1. 排序

df = df.sort_values(by='birthday',ascending=True)
df
idnameageGendersportbirthday
01001董国建34马拉松1987-03-16
11002苏炳添31百米1989-08-29
91010韦永丽30百米1991-10-11
71008谢震业28百米1993-08-17
111012张新艳27马拉松1994-02-01
61007吴智强27百米1994-04-13
41005焦安静25马拉松1995-09-03
31004张德顺25马拉松1996-02-21
21003彭建华24马拉松1996-12-18
81009梁小静24百米1997-04-07
51006葛曼棋24百米1997-10-13
101011仁青东知布20马拉松2000-10-15

2. 分组筛选

2.1. 分组后,筛选每组最后一条记录

方法一,使用tail()。

df1 = df.groupby('sport', as_index=False).tail(1)
df1
idnameageGendersportbirthday
51006葛曼棋24百米1997-10-13
101011仁青东知布20马拉松2000-10-15

方法二,取倒数第一个,使用nth(-1)。

#取分组后倒数第一条记录
df2 = df.groupby('sport', as_index=False).nth(-1)
df2
idnameageGendersportbirthday
51006葛曼棋24百米1997-10-13
101011仁青东知布20马拉松2000-10-15

2.2. 分组后,筛选每组倒数第二条记录

#取分组后倒数第二条记录
df3 = df.groupby('sport', as_index=False).nth(-2)
df3
idnameageGendersportbirthday
21003彭建华24马拉松1996-12-18
81009梁小静24百米1997-04-07

2.3. 分组后,筛选每组首条记录

df4 = df.groupby('sport', as_index=False).head(1)
df4
idnameageGendersportbirthday
01001董国建34马拉松1987-03-16
11002苏炳添31百米1989-08-29

2.4. 分组后,筛选每组前两条记录(top2)

df5 = df.groupby('sport', as_index=False).head(2)
df5
idnameageGendersportbirthday
01001董国建34马拉松1987-03-16
11002苏炳添31百米1989-08-29
91010韦永丽30百米1991-10-11
111012张新艳27马拉松1994-02-01

2.5. 按条件筛选分组

df6 = df.groupby('sport', as_index=False).apply(lambda x: x.loc[x.loc[x['age']>24].index]).reset_index(drop=True)
df6
idnameageGendersportbirthday
01002苏炳添31百米1989-08-29
11007吴智强27百米1994-04-13
21008谢震业28百米1993-08-17
31010韦永丽30百米1991-10-11
41001董国建34马拉松1987-03-16
51004张德顺25马拉松1996-02-21
61005焦安静25马拉松1995-09-03
71012张新艳27马拉松1994-02-01

2.6. 分组后,按组筛选

第一步,建立分组。

df_grouped = df.groupby('sport', as_index=False)
df_grouped
<pandas.core.groupby.generic.DataFrameGroupBy object at 0x000001F2B7102518>

第二步,分组后,按组筛选数据。

df7 = df_grouped.get_group('马拉松')
df7
idnameageGendersportbirthday
01001董国建34马拉松1987-03-16
111012张新艳27马拉松1994-02-01
41005焦安静25马拉松1995-09-03
31004张德顺25马拉松1996-02-21
21003彭建华24马拉松1996-12-18
101011仁青东知布20马拉松2000-10-15

2.7. 分组后,使用Filter筛选

filter函数是用来筛选其中全体组的(既每个组的全体),传入的值应当是布尔标量,如果这个组有一个不满足条件,整个组都被过滤掉了


df8 = df.groupby('sport', as_index=False).filter(lambda x: (x.age>20).all())
df8
idnameageGendersportbirthday
11002苏炳添31百米1989-08-29
51006葛曼棋24百米1997-10-13
61007吴智强27百米1994-04-13
71008谢震业28百米1993-08-17
81009梁小静24百米1997-04-07
91010韦永丽30百米1991-10-11

pandas高级数据分析快速入门之四——数据可视化篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之五——机器学习特征工程篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之五——机器学习特征工程篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之六——机器学习预测分析篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之三——数据挖掘与统计分析篇(代码片段)

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之一——python开发环境篇

Pandas高级数据分析快速入门之一——Python开发环境篇Pandas高级数据分析快速入门之二——基础篇Pandas高级数据分析快速入门之三——数据挖掘与统计分析篇Pandas高级数据分析快速入门之四——数据可视化篇Pandas高级数据分析快速... 查看详情

pandas高级数据分析快速入门之数据编辑——删除行与列(代码片段)

在高级数据分析过程中,数据删除操作也是常用的数据编辑操作。本文总结了常用的行、列数据删除操作快速入门方法。首先,读取Excel或csv文件,用于演练删除操作。importpandasaspddf=pd.read_excel('sport.xlsx')dfidna... 查看详情

pandas高级数据分析快速入门之工具使用——jupyter导出pdf问题

JupyterNotebooks提供导出多种文件格式的功能,其中,导出PDF比较重要,如下图所示菜单:“文件->下载->PDFviaLatex(.pdf)”。首次执行(Windows10环境),出现如下错误。500:InternalServerError错误:nbconvertfailed 查看详情

快速入门pandas进行数据挖掘数据分析[多维度排序数据筛选分组计算透视表](代码片段)

1.快速入门python,python基本语法Python使用缩进(tab或者空格)来组织代码,而不是像其他语言比如R、C++、Java和Perl那样用大括号。考虑使用for循环来实现排序算法:forxinlist_values:ifx<10:small.append(x)else:bigger.append(x)标量类型2.3,4,null,... 查看详情

快速入门pandas进行数据挖掘数据分析[多维度排序数据筛选分组计算透视表](代码片段)

1.快速入门python,python基本语法Python使用缩进(tab或者空格)来组织代码,而不是像其他语言比如R、C++、Java和Perl那样用大括号。考虑使用for循环来实现排序算法:forxinlist_values:ifx<10:small.append(x)else:bigger.append(x)标量类... 查看详情

pandas高级数据分析快速入门——全过程综述及案例集锦

...,企业必须高度重视并大力投入。1.概述1.1.Pandas高级数据分析知识体系基于Pandas高级数据分析,知识技能包括:数据的读写、表内操作、表间操作(例如关系型数据库表关联,Excelsheet关联等)、 查看详情

第3天sql快速入门-高级查询(sql小虚竹)

回城传送–》《32天SQL筑基》文章目录零、前言一、练习题目二、SQL思路计算函数:SQL16查找GPA最高值初始化数据解法计算函数:SQL17计算男生人数以及平均GPA初始化数据解法分组查询:SQL18分组计算练习题初始化数据解法分组查... 查看详情

pandas经典用法:数据筛选之iloc和loc

Pandas是一套用于Python的快速、高效的数据分析工具。它可以用于数据挖掘和数据分析,同时也提供数据清洗功能。本篇目录如下:一、iloc1.定义iloc索引器用于按位置进行基于整数位置的索引或者选择。2.语法df.iloc[rowselect... 查看详情

第3天sql快速入门-高级查询(sql小虚竹)(代码片段)

回城传送–》《32天SQL筑基》文章目录零、前言一、练习题目二、SQL思路计算函数:SQL16查找GPA最高值初始化数据解法计算函数:SQL17计算男生人数以及平均GPA初始化数据解法分组查询:SQL18分组计算练习题初始化数据... 查看详情

pandas入门(代码片段)

Pandas入门(3)文章目录Pandas入门(3)一.数据重塑和轴向旋转1.层次化索引①Series的层次化索引②通过unstack方法将Series变成一个DataFrame③DataFrame的层次化索引④将豆瓣电影数据处理成多索引结构2.轴向旋转二.数据分组,分组运算Gro... 查看详情

python数据分析pandas入门------十分钟入门pandas(代码片段)

Python数据分析基础一、导入常用库二、创建对象三、查看数据四、选取五、通过标签选取六、通过位置选取七、布尔索引八、赋值九、缺失值处理十、运算与统计十一、Apply函数的作用十二、频数统计十三、字符串方法十四、合... 查看详情

pandas之入门(代码片段)

pandas入门由于最近公司要求做数据分析,pandas每天必用,只能先跳过numpy的学习,先学习大Pandas库Pandas是基于Numpy构建的,让以Numpy为中心的应用变得更加简单pandas的数据结构介绍Series由一组数据以及一组数据标签即索引组成import... 查看详情

python数据分析pandas之分组统计透视表(代码片段)

Python数据分析pandas之分组统计透视表数据聚合统计Padans里的聚合统计即是应用分组的方法对数据框进行聚合统计,常见的有min(最小)、max(最大)、avg(平均值)、sum(求和)、var()、std(标准差)、百分位数、中位数等。数据框概览可... 查看详情