专栏首页Small Code【Python】Pandas的apply函数使用示例

【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 条评论
登录 后参与评论

相关文章

  • 【TensorFlow】TensorFlow 的线性回归

    前面 有篇博文 讲了讲Ubuntu环境下安装TensorFlow,今天来说一说在TensorFlow中如何进行线性回归。

    Alan Lee
  • 【TensorFlow】TensorFlow的线性回归

    前面 有篇博文 讲了讲Ubuntu环境下安装TensorFlow,今天来说一说在TensorFlow中如何进行线性回归。 训练数据 本次使用的训练数据是美国房价...

    Alan Lee
  • 【TensorFlow】TensorFlow 的 Logistic Regression

    前面提到了使用 TensorFlow 进行线性回归以及学习率、迭代次数和初始化方式对准确率的影响,这次来谈一下如何使用 TensorFlow 进行 Logist...

    Alan Lee
  • Python3快速入门(十五)——Pan

    如果要将自定义函数或其它库函数应用于Pandas对象,有三种使用方式。pipe()将函数用于表格,apply()将函数用于行或列,applymap()将函数用于...

    py3study
  • Docker体验(二) - 自建Image

    十毛
  • 在Pypi上发表自己的Python库

    原则上安装了pip的环境都有setuptools,但并不影响你去尝试升级一下它。 pip install --upgrade setuptools

    故事尾音
  • (八十五)c#Winform自定义控件-引用区块

    GitHub:https://github.com/kwwwvagaa/NetWinformControl

    冰封一夏
  • Unity开发--网络(二)服务器使用get请求下载服务器资源

    雷潮
  • 实验5 运算符重载

    步行者08
  • LeetCode 172. Factorial Trailing Zeroes

    题解:一个数的阶乘结果的末尾的0,根据分解质因数,只能是25得到的,所以把这个数的阶乘分解质因数,看有多少个25,2显然是比5多的,所以数一数有多少个5就可以了...

    ShenduCC

扫码关注云+社区

领取腾讯云代金券