2017-01-15 6 views
1
import pandas as pd 
census_df = pd.read_csv('census.csv') 
#census_df.head() 

def answer_seven(): 

    census_df_1 = census_df[(census_df['SUMLEV'] == 50)].set_index('CTYNAME') 
    census_df_1['highest'] = census_df_1[['POPESTIAMTE2010','POPESTIAMTE2011','POPESTIAMTE2012','POPESTIAMTE2013','POPESTIAMTE2014','POPESTIAMTE2015']].max() 
    census_df_1['lowest'] =census_df_1[['POPESTIAMTE2010','POPESTIAMTE2011','POPESTIAMTE2012','POPESTIAMTE2013','POPESTIAMTE2014','POPESTIAMTE2015']].min() 
    x = abs(census_df_1['highest'] - census_df_1['lowest']).tolist() 
    return x[0] 
answer_seven() 

이 2,010에서 2,015 사이 (POPESTIMATES) 내에서 인구에서 가장 큰 절대 변화가있는 군을 찾기 위해 census.csv의 데이터를 사용하려고, 나는 간단하게 찾을 원 각 연도/열의 최대 값과 최소값의 abs.value의 차이. 문자열을 반환해야합니다. 또한 [(census_df['SUMLEV'] ==50)]은이 50로 설정되어로만 카운티 촬영하는 것을 의미하지만 코드는 : 파이썬 팬더

KeyError: "['POPESTIAMTE2010' 'POPESTIAMTE2011' 'POPESTIAMTE2012' 'POPESTIAMTE2013'\n 'POPESTIAMTE2014' 'POPESTIAMTE2015'] not in index"

내가 잘못된 데이터 구조를 인덱싱하고 있는가으로 끝나는 오류를 준다? 나는 datascience와 코딩을 처음 접했습니다.

+1

이 보이는 supicious'POPESTIAMTE2013 '\ 당신이 어떤 이유로 열 이름의 목록에 포함 된 새로운 라인을 n','인쇄 (census_df.columns의 출력을 게시 할 수 있습니다. tolist())'열의 목록이 유효한지 확인하려면 – EdChum

+0

@EdChum 감사합니다. 점차적으로이 사이트를 사용하는 방법을 배우고 있습니다. 내가 새로운 (신용이 없음) 이래로 데이터 프레임의 사진을 삽입 할 수 없습니다. 난 그냥 돌아가서 메모장에서 공간을 제거 + 나는 함수를 저장하고 다시 그것을 실행했다. 오류는 'POPEXTIMATE2013'이번엔 '\ n'문자를 보여줍니다. 나는 꽤 확실 해요, 그것은 구현에서 아니에요. (내가 쓰는 방식). 감사. –

+0

용서해주십시오. 똑같은 오류입니다. 그냥 신중하게 보지 않았습니다. 질문을 무시하십시오. –

답변

2

코드의 열 이름에 오타가 있다고 생각합니다. 패턴은 'POPESTIMATE201?'입니다. 'POPESTIAMTE201'이 아닌가요?

코드 줄이기에 대한 도움을 주시면 감사하겠습니다. 여기에 작동하는 코드는 -

census_df = pd.read_csv('census.csv') 
def answer_seven(): 
    cdf = census_df[(census_df['SUMLEV'] == 50)].set_index('CTYNAME') 
    columns = ['POPESTIMATE2010', 'POPESTIMATE2011', 'POPESTIMATE2012', 'POPESTIMATE2013', 'POPESTIMATE2014', 'POPESTIMATE2015'] 
    cdf['big'] = cdf[columns].max(axis =1) 
    cdf['sml'] = cdf[columns].min(axis =1) 
    cdf['change'] = cdf[['big']].sub(cdf['sml'], axis=0) 
return cdf['change'].idxmax()