人口分析练习
# 导入文件
abb = pd.read_csv('./state-abbrevs.csv')
area = pd.read_csv('./state-areas.csv')
pop = pd.read_csv('./state-population.csv')
# 将人口数据和各州简称进行合并
abb_pop = pd.merge(abb, pop, left_on='abbreviation', right_on='state/region', how='outer')
# 将合并数据中重复的列删除
abb_pop.drop(labels='abbreviation', axis=1, inplace=True)
# 查看存在缺失数据的列
# 方法一
abb_pop.isnull().any(axis=0)
# 方法二
abb_pop.info()
# 找到洲值为空的行并对简称进行去重
abb_pop.loc[abb_pop['state'].isnull()]['state/region'].unique()
# 为找到的简称补上正确的值,从而去掉state这一列的所有nan值
indexes = abb_pop.loc[abb_pop['state/region'] == 'USA'].index
abb_pop.loc[indexes, 'state'] = 'United States'
indexes = abb_pop.loc[abb_pop['state/region'] == 'PR'].index
abb_pop.loc[indexes, 'state'] = 'PuertoRico'
# 合并各洲的面积
abb_pop_area = pd.merge(abb_pop, area, how='outer')
# 找出area为nan的行
indexes = abb_pop_area.loc[abb_pop_area['area (sq. mi)'].isnull()].index
# 去除有缺失数据的行
abb_pop_area.drop(labels=indexes, axis=0, inplace=True)
# 找出2010年全民人口数据
abb_pop_area.query('ages == "total" & year == 2010')
# 计算各洲的人口密度
abb_pop_area['density'] = abb_pop_area['population']/abb_pop_area['area (sq. mi)']
# 排序,并找出人口密度最高的洲
abb_pop_area.sort_values(by='density', axis=0, ascending=False).iloc[0]['state']