Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/284.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 功能操作_Python_Pandas_Pandas Datareader - Fatal编程技术网

Python 功能操作

Python 功能操作,python,pandas,pandas-datareader,Python,Pandas,Pandas Datareader,数据来自美国人口普查局。县是美国各州的政治和地理分区。该数据集包含2010年至2015年美国各县和州的人口数据 哪个州的县最多?(提示:仔细考虑SUMLIVER键!你也需要这个,用于将来的问题……) 我无法从代码中提取县名。请帮忙 我的代码: import pandas as pd import numpy as np census_df = pd.read_csv('census.csv') census_df.head() def answer_five(): return cens

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

哪个州的县最多?(提示:仔细考虑SUMLIVER键!你也需要这个,用于将来的问题……)

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

我的代码:

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()

以下是对我有效的答案:

def answer_five():
    return census_df.groupby(["STNAME"],sort=False).sum()["COUNTY"].idxmax()
第一部分创建聚合df

census_df.groupby(["STNAME"],sort=False).sum()
第二部分是你需要的颜色

["COUNTY"].idxmax()

并使用max返回索引对应的值,检查从
.max()
idxmax()
的更改将返回
STNAME
的正确值,而不是大整数。

只是对整个代码的更正

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

思维过程(如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

不客气

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

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

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

实际上,您只需在州一级计算数字,而无需查看县的详细信息


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

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

answer_five()

这应该是可行的:

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

这个问题不包括任何样本数据或任何过滤数据的尝试,此外,这个问题看起来像是家庭作业,所以你需要显示更多的努力。你只是复制你的家庭作业练习吗?答案似乎是可以确认这是一个作业问题。发布Courserva作业违反Coursera荣誉代码。别这样,我觉得这不对。根据[co-est2015-alldata.pdf][1],COUNTY是FIPS代码,它是一个变量int。根据代码和解释,我相信您将这些int相加,可以>=1,这不是一对1的关系。如果SUMLEV=50,这里应该发生的是+=1。[1] :虽然此代码可以回答问题,但提供有关其如何和/或为什么解决问题的附加上下文将提高答案的长期价值。请不要仅将代码作为答案发布,还要解释代码的作用以及它如何解决问题。有解释的答案通常质量更高,更容易吸引选票。简单易行
census_df[census_df['SUMLEV']==50].groupby(['STNAME']).size().idxmax()
def answer_five():
    new_df = census_df[census_df['SUMLEV'] == 50]
    x = new_df.groupby('STNAME')
    return x.count()['COUNTY'].idxmax()


answer_five()
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()