关键词:
首先,读取文件。
import pandas as pd
import datetime
df = pd.read_excel('sport.xlsx')
df['birthday'] = df['birthday'].astype('datetime64')
df
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
0 | 1001 | 董国建 | 34 | 男 | 马拉松 | 1987-03-16 |
1 | 1002 | 苏炳添 | 31 | 男 | 百米 | 1989-08-29 |
2 | 1003 | 彭建华 | 24 | 男 | 马拉松 | 1996-12-18 |
3 | 1004 | 张德顺 | 25 | 女 | 马拉松 | 1996-02-21 |
4 | 1005 | 焦安静 | 25 | 女 | 马拉松 | 1995-09-03 |
5 | 1006 | 葛曼棋 | 24 | 女 | 百米 | 1997-10-13 |
6 | 1007 | 吴智强 | 27 | 男 | 百米 | 1994-04-13 |
7 | 1008 | 谢震业 | 28 | 男 | 百米 | 1993-08-17 |
8 | 1009 | 梁小静 | 24 | 女 | 百米 | 1997-04-07 |
9 | 1010 | 韦永丽 | 30 | 女 | 百米 | 1991-10-11 |
10 | 1011 | 仁青东知布 | 20 | 男 | 马拉松 | 2000-10-15 |
11 | 1012 | 张新艳 | 27 | 女 | 马拉松 | 1994-02-01 |
1. 排序
df = df.sort_values(by='birthday',ascending=True)
df
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
0 | 1001 | 董国建 | 34 | 男 | 马拉松 | 1987-03-16 |
1 | 1002 | 苏炳添 | 31 | 男 | 百米 | 1989-08-29 |
9 | 1010 | 韦永丽 | 30 | 女 | 百米 | 1991-10-11 |
7 | 1008 | 谢震业 | 28 | 男 | 百米 | 1993-08-17 |
11 | 1012 | 张新艳 | 27 | 女 | 马拉松 | 1994-02-01 |
6 | 1007 | 吴智强 | 27 | 男 | 百米 | 1994-04-13 |
4 | 1005 | 焦安静 | 25 | 女 | 马拉松 | 1995-09-03 |
3 | 1004 | 张德顺 | 25 | 女 | 马拉松 | 1996-02-21 |
2 | 1003 | 彭建华 | 24 | 男 | 马拉松 | 1996-12-18 |
8 | 1009 | 梁小静 | 24 | 女 | 百米 | 1997-04-07 |
5 | 1006 | 葛曼棋 | 24 | 女 | 百米 | 1997-10-13 |
10 | 1011 | 仁青东知布 | 20 | 男 | 马拉松 | 2000-10-15 |
2. 分组筛选
2.1. 分组后,筛选每组最后一条记录
方法一,使用tail()。
df1 = df.groupby('sport', as_index=False).tail(1)
df1
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
5 | 1006 | 葛曼棋 | 24 | 女 | 百米 | 1997-10-13 |
10 | 1011 | 仁青东知布 | 20 | 男 | 马拉松 | 2000-10-15 |
方法二,取倒数第一个,使用nth(-1)。
#取分组后倒数第一条记录
df2 = df.groupby('sport', as_index=False).nth(-1)
df2
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
5 | 1006 | 葛曼棋 | 24 | 女 | 百米 | 1997-10-13 |
10 | 1011 | 仁青东知布 | 20 | 男 | 马拉松 | 2000-10-15 |
2.2. 分组后,筛选每组倒数第二条记录
#取分组后倒数第二条记录
df3 = df.groupby('sport', as_index=False).nth(-2)
df3
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
2 | 1003 | 彭建华 | 24 | 男 | 马拉松 | 1996-12-18 |
8 | 1009 | 梁小静 | 24 | 女 | 百米 | 1997-04-07 |
2.3. 分组后,筛选每组首条记录
df4 = df.groupby('sport', as_index=False).head(1)
df4
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
0 | 1001 | 董国建 | 34 | 男 | 马拉松 | 1987-03-16 |
1 | 1002 | 苏炳添 | 31 | 男 | 百米 | 1989-08-29 |
2.4. 分组后,筛选每组前两条记录(top2)
df5 = df.groupby('sport', as_index=False).head(2)
df5
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
0 | 1001 | 董国建 | 34 | 男 | 马拉松 | 1987-03-16 |
1 | 1002 | 苏炳添 | 31 | 男 | 百米 | 1989-08-29 |
9 | 1010 | 韦永丽 | 30 | 女 | 百米 | 1991-10-11 |
11 | 1012 | 张新艳 | 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
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
0 | 1002 | 苏炳添 | 31 | 男 | 百米 | 1989-08-29 |
1 | 1007 | 吴智强 | 27 | 男 | 百米 | 1994-04-13 |
2 | 1008 | 谢震业 | 28 | 男 | 百米 | 1993-08-17 |
3 | 1010 | 韦永丽 | 30 | 女 | 百米 | 1991-10-11 |
4 | 1001 | 董国建 | 34 | 男 | 马拉松 | 1987-03-16 |
5 | 1004 | 张德顺 | 25 | 女 | 马拉松 | 1996-02-21 |
6 | 1005 | 焦安静 | 25 | 女 | 马拉松 | 1995-09-03 |
7 | 1012 | 张新艳 | 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
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
0 | 1001 | 董国建 | 34 | 男 | 马拉松 | 1987-03-16 |
11 | 1012 | 张新艳 | 27 | 女 | 马拉松 | 1994-02-01 |
4 | 1005 | 焦安静 | 25 | 女 | 马拉松 | 1995-09-03 |
3 | 1004 | 张德顺 | 25 | 女 | 马拉松 | 1996-02-21 |
2 | 1003 | 彭建华 | 24 | 男 | 马拉松 | 1996-12-18 |
10 | 1011 | 仁青东知布 | 20 | 男 | 马拉松 | 2000-10-15 |
2.7. 分组后,使用Filter筛选
filter函数是用来筛选其中全体组的(既每个组的全体),传入的值应当是布尔标量,如果这个组有一个不满足条件,整个组都被过滤掉了
df8 = df.groupby('sport', as_index=False).filter(lambda x: (x.age>20).all())
df8
id | name | age | Gender | sport | birthday | |
---|---|---|---|---|---|---|
1 | 1002 | 苏炳添 | 31 | 男 | 百米 | 1989-08-29 |
5 | 1006 | 葛曼棋 | 24 | 女 | 百米 | 1997-10-13 |
6 | 1007 | 吴智强 | 27 | 男 | 百米 | 1994-04-13 |
7 | 1008 | 谢震业 | 28 | 男 | 百米 | 1993-08-17 |
8 | 1009 | 梁小静 | 24 | 女 | 百米 | 1997-04-07 |
9 | 1010 | 韦永丽 | 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(标准差)、百分位数、中位数等。数据框概览可... 查看详情