数据分析实战⑦——美国各州人口分析

# 27CC4E55A1274AE18333ED2C9A1126DC
'''人口分析实战'''

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns

# 读取数据
abb = pd.read_csv('E:\AI课程笔记\数据分析\state-abbrevs.csv')
abb.head()

areas = pd.read_csv('E:\AI课程笔记\数据分析\state-areas.csv')
areas.head()

populations = pd.read_csv('E:\AI课程笔记\数据分析\state-population.csv')
populations.head()

# 合并数据
abb_populations = pd.merge(abb,populations,how='outer',left_on='abbreviation',right_on='state/region') # how='outer'表示并集
abb_populations.head() 

# 删除重复列
abb_populations.drop('abbreviation',axis=1,inplace=True)
abb_populations.head()

# 查看缺失值
abb_populations.isnull().any()
abb_populations.info()

#找到有哪些state/region使得state的值为NaN,进行去重操作
abb_populations.loc[abb_populations['state'].isnull()]["state/region"].unique()

#填充缺失值
a = abb_populations.loc[abb_populations['state/region']=='PR'].index # 查看PR的索引
abb_populations.iloc[a]
abb_populations.loc[a,"state"] = 'Puerto Rico' # 填充缺失值

b = abb_populations.loc[abb_populations['state/region']=='USA'].index # 查看USA的索引
abb_populations.iloc[b]
abb_populations.loc[b,"state"] = 'United States' # 填充缺失值

abb_populations.isnull().any() # 再次查看缺失值

# 合并各州面积数据
abb_populations_areas = pd.merge(abb_populations,areas,how='outer',on='state')
abb_populations_areas.head()

# 查看area列的缺失值,找出是那些行
indexs = abb_populations_areas.loc[abb_populations_areas['area (sq. mi)'].isnull()].index
abb_populations_areas.drop(indexs,axis=0,inplace=True) # 删除缺失值所在行
abb_populations_areas.isnull().any() # 再次查看缺失值

# 查看2010年的全民人口数据 query()函数 用于条件查询筛选数据
pop = abb_populations_areas.query("year == 2010 & ages == 'total'")

#计算各州人口密度
pop_density = abb_populations_areas['population']/abb_populations_areas['area (sq. mi)']
abb_populations_areas["密度"] = pop_density
abb_populations_areas.head()
c = abb_populations_areas[["state","密度"]]
print(c)
grouped = c.groupby('state')['密度'].mean() # 按州分组,求平均值
print(grouped) # 查看分组后的数据

# 排序
grouped.sort_values(ascending=False,inplace=True) # 降序
print(grouped)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

数字生命Allen

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值