python - 寻找多个县之间最大的人口差异?

标签 python arrays pandas

我正在用 python 学习 pandas,但似乎无法完成这个问题。有 6 个人口列,POPESTIMATE2010 到 POPESTIMATE 2016,我需要找到这些年之间人口变化最大的县。 (例如,如果 5 年期间的县人口为 100、120、80、105、100、130,则该期间的最大变化将为 |130-80| = 50。)

到目前为止,我所做的是设法将数据操作成数组和列表,但我不确定哪个更能解决这个问题:

import numpy as np
def answer_seven():
    sumlev = census_df.SUMLEV.values == 50
    data = census_df[['POPESTIMATE2010', 'POPESTIMATE2011','POPESTIMATE2012','POPESTIMATE2013','POPESTIMATE2014','POPESTIMATE2015', 'CTYNAME']].values[sumlev]
    s = pd.Series(data[:, 0], [data[:, 1], data[:, 2], data[:, 3], data[:, 4], data[:, 5], data[:, 6]], dtype=np.int64)
return data
answer_seven()

返回数据时的输出:

array([[54660, 55253, 55175, ..., 55290, 55347, 'Autauga County'],
   [183193, 186659, 190396, ..., 199713, 203709, 'Baldwin County'],
   [27341, 27226, 27159, ..., 26815, 26489, 'Barbour County'],
   ..., 
   [21102, 20912, 20989, ..., 20903, 20822, 'Uinta County'],
   [8545, 8469, 8443, ..., 8316, 8328, 'Washakie County'],
   [7181, 7114, 7065, ..., 7185, 7234, 'Weston County']], dtype=object)

当我返回 s 列表时,我得到一个列表:

55253   55175   55038   55290   55347   Autauga County         54660
186659  190396  195126  199713  203709  Baldwin County        183193
27226   27159   26973   26815   26489   Barbour County         27341
22733   22642   22512   22549   22583   Bibb County            22861
57711   57776   57734   57658   57673   Blount County          57373
10629   10606   10628   10829   10696   Bullock County         10887
20673   20408   20261   20276   20154   Butler County          20944
117768  117286  116575  115993  115620  Calhoun County        118437
33993   34075   34153   34052   34123   Chambers County        34098
26080   26023   26084   25995   25859   Cherokee County        25976
43739   43697   43795   43921   43943   Chilton County         43665
13593   13543   13378   13289   13170   Choctaw County         13841
25570   25144   25116   24847   24675   Clarke County          25767
13670   13456   13467   13538   13555   Clay County            13880
14971   14921   15028   15072   15018   Cleburne County        14973
50448   51173   50755   50831   51211   Coffee County          50177
54443   54472   54471   54480   54354   Colbert County         54514
13121   12996   12875   12662   12672   Conecuh County         13208
11348   11195   11059   10807   10724   Coosa County           11758
38060   37818   37830   37888   37835   Covington County       37796
13896   13951   13932   13948   13963   Crenshaw County        13853
80469   80374   80756   81221   82005   Cullman County         80473
50109   50324   49833   49501   49565   Dale County            50358
43178   42777   42021   41662   41131   Dallas County          43803
71387   70942   70869   71012   71130   DeKalb County          71142
80012   80432   80883   81022   81468   Elmore County          79465
38213   38034   37857   37784   37789   Escambia County        38309
104236  104235  103852  103452  103057  Etowah County         104442
17062   16960   16857   16842   16759   Fayette County         17231
31729   31648   31507   31592   31696   Franklin County        31734
                                                               ...  

我查看了多个论坛帖子,但找不到真正与此相关的内容。我知道最好的方法是创建一个“最高”列和一个“最低”列,然后找到差异最大的县,但我不知道如何找到一个值的最大值/最小值大批。非常感谢您的帮助!

最佳答案

我认为这应该可以解决您的问题

temp = census_df[census_df['SUMLEV'] == 50].set_index('CTYNAME')
yrs = ['POPESTIMATE2010','POPESTIMATE2011','POPESTIMATE2012','POPESTIMATE2013', 'POPESTIMATE2014', 'POPESTIMATE2015']
res = temp.loc[:,yrs].max(axis=1) - temp.loc[:,yrs].min(axis=1)
res.idxmax()

关于python - 寻找多个县之间最大的人口差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41878666/

相关文章:

python - 如何在使用带有 request.post 方法的文件参数上传文件时应用压缩

python - 是否有 Python 到 Whitespace 语言转换器?

python - Python中没有所有元素重复的组合

javascript - 如何引用存储在数组中的变量而不是其值?

javascript - 通过将对象数组与数组进行比较来创建新数组

python - Pandas 如何选择行具有最大值的列?

python - 如何在 matplotlib 中添加一条平行于 y 轴的线?

c - 为什么程序可以得到正确的输入,但根据数组打印出错误的答案?

python - 根据值或列表的变化切片 python 数据框

python - 如何选择列标题中的 nan