【Python】Pandas的apply函数使用示例

applypandas 库的一个很重要的函数,多和 groupby 函数一起用,也可以直接用于 DataFrameSeries 对象。主要用于数据聚合运算,可以很方便的对分组进行现有的运算和自定义的运算。

数据集

使用的数据集是美国人口普查的数据,可以从这里下载,里面包含了CSV数据文件和PDF说明文件,说明文件里解释了每个变量的意义。

数据大致是这个样子:

美国人口普查数据

问题

  1. 以每个州人口最多的 3 个县的人口总和为这个州人口的衡量标准,哪 3 个州人口最多?
  2. 在 2010 年至 2015 年间人口变化幅度最大的是哪个县?

分析

  1. 先按州分组,再对每个州内的县进行排序选出人口最多的 3 个县求和,作为每个州的人口数,最后排序。
  2. 对于每个县,计算 2010-2015 年的人口数的最大值和最小值,求出差值即变化幅度,再对差值进行排序找出变化幅度最大的县。

代码

问题1

census_df = pd.read_csv('census.csv')
only_county = census_df[census_df['SUMLEV'] == 50]


def top(df, n=3, column='CENSUS2010POP'):
    return df.sort_values(column, ascending=False)[:n]['CENSUS2010POP'].sum()


grouped = only_county[['STNAME', 'CTYNAME', 'CENSUS2010POP']].groupby('STNAME').apply(top)
grouped.sort_values(ascending=False)[:3].index.tolist()

输出:

问题2

census_df = pd.read_csv('census.csv')
only_county = census_df[census_df['SUMLEV'] == 50]


def get_change(row):
    pop_year = row[['POPESTIMATE2010', 
                    'POPESTIMATE2011', 
                    'POPESTIMATE2012', 
                    'POPESTIMATE2013', 
                    'POPESTIMATE2014', 
                    'POPESTIMATE2015']]
    return pop_year.max() - pop_year.min()


only_county.loc[only_county.apply(get_change, axis=1).argmax()]['CTYNAME']

输出:

END

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏申龙斌的程序人生

零基础学编程005:打印一行复利数据

问题 上次文章《集成开发环境IDE》里留了一道练习题: 如何用Python打印这篇枯燥的《复利数据表》: (1+0.01) ^ 1 = 1.01 (1+0.0...

2719
来自专栏机器之心

从七桥问题开始:全面介绍图论及其应用

选自Medium 作者:Vardan Grigoryan 机器之心编译 图论是计算机科学中最重要、最有趣的领域之一,同时也是最容易被误解的。本长文从图论最基础的...

3518
来自专栏前端笔记

【 图形游戏 Tetris 】原生 JavaScript 做小游戏

俄罗斯方块 (俄罗斯开发经典游戏) 游戏简介 《俄罗斯方块》(Tetris, 俄文:Тетрис)是一款由俄罗斯人阿列克谢·帕基特诺夫于1984年6月发明的休闲...

32110
来自专栏更流畅、简洁的软件开发方式

再论桥接模式(上)纸上谈兵

声明: 1、 这里不是讲解桥接模式,因为我觉得我没有那个实力,我现在还没有完全理解桥接模式。 2、 这里只是想把我这几天的思考、在群里的讨论整理一下,给自己...

1889
来自专栏逍遥剑客的游戏开发

UE4中程序驱动的LookAt动画

3328
来自专栏MixLab科技+设计实验室

网易新闻《娱乐圈画传》H5的动画技巧

今天看到一个非常喜欢的H5,又是网易出品的!于是,我忍不住去研究了他的实现方式,有3个值得我们学习的地方,分别是逐帧动画,多种变换叠加的css动画,还有最亮的:...

2995
来自专栏C语言及其他语言

[每日一题]C语言程序设计教程(第三版)课后习题6.9

题目描述 一球从M米高度自由下落,每次落地后返回原高度的一半,再落下。 它在第N次落地时反弹多高?共经过多少米? 保留两位小数 输入 M N 输出 它在第N次落...

2727
来自专栏C语言及其他语言

[每日一题]台球碰撞

今天这题可大有来头了,湖南省第六届大学生计算机程序设计竞赛题目,比较经典也比较有名 题目描述 在平面直角坐标系下,台球桌是一个左下角在(0,0),右上...

3416
来自专栏GIS讲堂

OpenLayers3基础教程——OL3基本概念

从本节开始,我会陆陆续续的更新有关OL3的相关文章——OpenLayers3基础教程,欢迎大家关注我的博客,同时也希望我的博客能够给大家带来一点帮助。

1183
来自专栏用户3246163的专栏

FRM知识点结构

这是我对FRM里面Learing Object的整理,一共有66个大的Learning Object。我把相关的整理在了一起,方便大家对学到的知识有个清晰的定位

1002

扫码关注云+社区