项目2:人口分析案例

"""
需求:
1.读入数据
2.将人口数据和各州简称数据进行合并
pd.merge(abb, pop,left_on="abbreviation",right_on="state/region",how="outer")
3.将合并数据后重复的abbreviation删除
4.查看存在缺失数据的列
#方式一:state 和 population 是有空值的
abb_pop.isnull().any(axis=0)
#方式二:info()
abb_pop.info()
5.找到那些state/region使得state的值为nan,进行去重操作
6.为找到的那些state/region的state项补上正确的值,从而去除掉state这一列的所有nan
7合并各州面积数据areas
8.会发现area(sq.mi)这一列有缺失数据,找出是哪些行
9.去除还有缺失数据的行
10.找出2010年的全民人口数据
abb_pop_area.query('ages == "total" & year == 2010')
11.基于各州的人口密度
12.排序,并找出人口密度最高的州
"""

1.读入数据

abb=pd.read_csv(r"D:\拜师课程\数据分析项目-合集-自由式学习\数据分析项目\项目2:人口分析案例\state-abbrevs.csv")
abb.info()

2.将人口数据和各州简称数据进行合并

abb_pop=pd.merge(abb, pop,left_on="abbreviation",right_on="state/region",how="outer")
3.将合并数据后重复的abbreviation删除

abb_pop.drop(labels="abbreviation",axis=1,inplace=True)

4.查看存在缺失数据的列

#方式一:state 和 population 是有空值的
abb_pop.isnull().any(axis=0)
#方式二:info()
abb_pop.info()

5.找到那些state/region使得state的值为nan,进行去重操作

#即:将stata中的空值对应的简称找到,且对简称进行去重
#思路:可以将state这一列的空值对应的行数据取出,从该行数据中可以取出简称的值
abb_pop.loc[abb_pop["state"].isnull()]["state/region"].unique()
#结论:PR', 'USA'这两个有空值

6.为找到的那些state/region的state项补上正确的值,从而去除掉state这一列的所有nan

#思考:填充该需求的空值可不可以使用fillna?
#答:不可以。fillna可以使用空的紧邻值做填充。
#fillna(values="xxx")使用指定的值填充空值
#所以使用给元素赋值的方式进行填充

indexs=abb_pop.loc[abb_pop["state/region"]=="USA"].index
abb_pop.iloc[indexs]
abb_pop.loc[indexs,"state"]='United States'
indexs=abb_pop.loc[abb_pop["state/region"]=="PR"].index
abb_pop.loc[indexs,"state"]='PPPRRR'

7合并各州面积数据areas
abb_pop_area=pd.merge(abb_pop,area,how="outer")
abb_pop_area.info()

8.会发现area(sq.mi)这一列有缺失数据,找出是哪些行
indexs=abb_pop_area.loc[abb_pop_area["area (sq. mi)"].isnull()].index

9.去除还有缺失数据的行
abb_pop_area.drop(labels=indexs,axis=0,inplace=True)

10.找出2010年的全民人口数据(居于df做条件查询)
abb_pop_area.query('ages == "total" & year == 2010')

11.基于各州的人口密度(人口除以面积)
abb_pop_area.head()
abb_pop_area["midu"]=abb_pop_area["population"] / abb_pop_area["area (sq. mi)"]

12.排序,并找出人口密度最高的州
abb_pop_area.sort_values(by="midu",axis=0,ascending=False)["state"].iloc[1]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值