-16

数据来自美国人口普查局。县是美国各州的政治和地理分区。该数据集包含 2010 年至 2015 年美国各县和州的人口数据。

哪个州的县最多?(提示:仔细考虑 sumlevel 键!你也需要这个来解决未来的问题......)

我无法从代码中提取县名。请帮忙

我的代码:

import pandas as pd
import numpy as np
census_df = pd.read_csv('census.csv')
census_df.head()
def answer_five():
    return census_df.groupby('STNAME').COUNTY.sum().max()



answer_five()
4

9 回答 9

2

这是对我有用的答案:

def answer_five():
    return census_df.groupby(["STNAME"],sort=False).sum()["COUNTY"].idxmax()

第一部分创建聚合 df

census_df.groupby(["STNAME"],sort=False).sum()

第二部分需要你需要的col

["COUNTY"].idxmax()

并返回与最大索引对应的值,请在此处查看

于 2017-01-20T22:12:49.297 回答
2

只是对整个代码的更正。

首先,根据消息来源,SUMLEV50 表示该行是一个县。两种方法来回答这个问题。

思考过程(就像在 Excel 中一样):您想计算每个州组中“县行”的数量。首先,您创建掩码/条件以选择所有SUMLEV == 50(“县行”)。然后将它们分组STNAME。然后用于.size()计算每个分组中的行数。

# this is it!
def answer_five():
    mask = (census_df.SUMLEV == 50)
    max_index = census_df[mask].groupby('STNAME').size().idxmax()
    return max_index

# not so elegant
def answer_five():
    census_df['Counts'] = 1
    mask = (census_df.SUMLEV == 50)
    max_index = census_df[mask].groupby('STNAME')['Counts'].sum().idxmax()
    return max_index

不客气。https://pandas.pydata.org/pandas-docs/stable/generated/pandas.core.groupby.GroupBy.size.html

于 2018-03-05T16:19:19.183 回答
2

实际上,您可以只计算州一级的数字,而不是查看县的详细信息。

这应该有效:

census_df[census_df['SUMLEV']==50].groupby(['STNAME']).size().idxmax()
于 2019-03-24T02:46:00.050 回答
1
def answer_five():
    new_df = census_df[census_df['SUMLEV'] == 50]
    x = new_df.groupby('STNAME')
    return x.count()['COUNTY'].idxmax()


answer_five()
于 2020-04-12T16:17:26.133 回答
0

正是从.max()toidxmax()返回正确的值STNAME而不是大整数。

于 2018-02-25T18:52:53.963 回答
0

我们也可以使用sum()函数来做这个问题

def answer_five():
  return census_df.groupby(["STNAME"]).sum()["COUNTY"].idxmax()

使用sum()它将汇总 COUNTY 列中的所有值,我们可以从中申请idxmax()找到县数最多的州。

于 2019-02-19T11:59:24.110 回答
0

def answer_five():
    county = census_df[census_df['SUMLEV']==50]
    county = county.groupby(['STNAME']).count()

    return county['SUMLEV'].idxmax(axis=0)

answer_five()

于 2019-02-19T22:41:32.850 回答
0
import pandas as pd
def answer_five():
    df=census_df.groupby(['STNAME'])
    df=df.sum();
    fd=df['COUNTY'].max()
    df=df[df['COUNTY']==fd]
    return df.index[0]
answer_five()
于 2020-06-09T13:33:55.530 回答
-1
def answer_five():
    return census_df.groupby('STNAME')['CTYNAME'].count().idxmax()
于 2017-03-25T21:21:22.537 回答