熊猫功能操作

时间:2017-01-09 14:28:25

标签: python pandas pandas-datareader

数据来自美国人口普查局。县是美国各州的政治和地理分支。该数据集包含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()

9 个答案:

答案 0 :(得分:2)

以下是对我有用的答案:

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

第一部分创建聚合df

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

第二部分需要你需要的颜色

["COUNTY"].idxmax()

并返回与max对应的索引值,检查here

答案 1 :(得分:1)

只需更正整个代码。

首先,根据来源,50 SUMLEV表示该行是一个县。有两种方法可以解答这个问题。

思考过程(在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

答案 2 :(得分:1)

def answer_five():
    new_df = census_df[census_df['SUMLEV'] == 50]
    x = new_df.groupby('STNAME')
    return x.count()['COUNTY'].idxmax()


answer_five()

答案 3 :(得分:0)

.max()idxmax()的更改会返回STNAME的正确值,而不是大整数。

答案 4 :(得分:0)

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

def answer_five():

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

使用sum(),它将对COUNTY列中的所有值求和,我们可以从中应用idxmax()来找到县数最高的州。

答案 5 :(得分:0)


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

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

answer_five()

答案 6 :(得分:0)

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

这应该可行:

census_df[census_df['SUMLEV']==50].groupby(['STNAME']).size().idxmax()

答案 7 :(得分: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()

答案 8 :(得分:-1)

n = 10