2017-01-09 134 views
-13

數據來自美國人口普查局。縣是美國各州的政治和地理分區。該數據集包含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() 
+2

這個問題不包括任何示例數據或任何嘗試過濾數據,另外這個問題看起來像功課,所以你需要在這裏顯示更多的努力 – EdChum

+5

你剛剛複製你的作業練習嗎? –

+1

看來答案是[這裏](http://stackoverflow.com/q/40957458/2901002) – jezrael

回答

2

這裏是爲我工作的回答:

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

第一部分產生聚集的DF

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

第二部分以山坳你需要

["COUNTY"].idxmax() 

以及對應至最大指數收益值,檢查here

+0

這看起來不對我。根據[co-est2015-alldata.pdf] [1],COUNTY是FIPS代碼,它是一個變量int。根據代碼和解釋,我相信你總結了可能大於等於1的整數,它不是1對1的關係。如果SUMLEV = 50,應該發生的情況是+ = 1。 [1]:https://www2.census.gov/programs-surveys/popest/technical-documentation/file-layouts/2010-2015 /co-est2015-alldata.pdf – Eric

-1
def answer_five(): 
    return census_df.groupby('STNAME')['CTYNAME'].count().idxmax() 
+0

儘管此代碼可能會回答問題,但提供有關如何解決問題和/或解決問題原因的其他上下文會提高答案的長期價值。 –

0

這是一個從.max()idxmax()返回爲STNAME,而不是一個大的整數正確的值的變化。

0

只是糾正你的整個代碼。

首先,根據來源,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 

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