打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
【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()
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

输出:

问题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']
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

输出:


END

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
pandas数据的分组与分列
Pandas 使用教程
每天五分钟Python数据分析——Pandas 数据筛选
零基础入门到精通:Python大数据与机器学习之Pandas数据分组
Pandas高级函数transform使用指南
实战篇:盘点Pandas中的factorize()函数妙用
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服