大家好~ 我又来请教pandas的相关问题,题目一样来自coursera introduction to Data Science in Python的第二周作业
题目:哪个county在 2010-2015 期间人口改变量量的绝对值最高?
我的想法:
1)将state从county list中去除
2)制作一个pivot table,以county为栏,并以2010-2015的人数为值
3)对每栏(每个county) filter 出最大值及最小值,并相减
4)回传差异最大的城市
以下是我的code:
census_df = pd.read_csv('https://storage.googleapis.com/py_ml_datasets/census.csv')
def answer_three():
city_name = census_df["CTYNAME"].unique()
state_name = census_df["STNAME"].unique()
rest = list(set(city_name)^set(state_name))
city_filter = census_df[census_df["SUMLEV"]==50]
city_pivot = city_filter.pivot_table(columns = ["CTYNAME"], values = ["POPESTIMATE2010","POPESTIMATE2011","POPESTIMATE2012", "POPESTIMATE2013", "POPESTIMATE2014", "POPESTIMATE2015"] )
find_diff = city_pivot[rest].max() - city_pivot[rest].min()
return find_diff.idxmax()
answer_three()
得出的答案是错的(Los Angeles County,其为差异第二大的county)
答案是Haris County
我的问题是:
针对DataFrame做pivot table后,对每个字段(county)filter 出最大最小值时,
有极少部分的county的最大最小值会被“未知的数字给覆蓋掉”
pivot table的type仍为DataFrame,但到filter最大最小值时type已转变为Series
(我猜只是二维变一维的关系)
想请教:
对pivot table做filter最大最小值时,如何避免数字跑掉的问题?
(我确定pivot table抓的数字是对的,但到filter阶段会有极少部分的数字是错的)
感谢大家耐心地看完 :)