Pandas 人口密度案例分析
2023-03-07 09:16:44 时间
from turtle import left
import pandas as pd
"""
需求:
1.导入文件,查看原始数据
2.将人口数据和各州简称数据进行合并
3.将合并的数据中重复的abbreviation列进行删除
4.查看存在缺失数据的列
5.找到有哪些state/region使得state的值为NaN,进行去重操作
6.为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN
7.合并各州面积数据areas
8.我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行
9.去除含有缺失数据的行
10.找出2010年的全民人口数据
11.计算各州的人口密度
12.排序,并找出人口密度最高的州
"""
# 1.导入文件,查看原始数据
# state:州的全称,abbreviation:州的简称
add = pd.read_csv("./state-abbrevs.csv")
# state:州的全称,area:州的面积
area = pd.read_csv("./state-areas.csv")
# state/region:州的简称,ares:年龄,year:年,population:人口数量
pop = pd.read_csv("./state-population.csv")
# 2.将人口数据和各州简称数据进行合并
add_pop = pd.merge(left=add, right=pop,
left_on="abbreviation", right_on="state/region", how="outer")
# 3.将合并的数据中重复的abbreviation列进行删除
add_pop.drop(labels="abbreviation", axis=1, inplace=True)
# 4.查看存在缺失数据的列
# print(add_pop.isnull().any(axis=0))
# 5.找到有哪些state/region使得state的值为NaN,进行去重操作(将state中的空值对应的简称找到,然后对简称进行去重)
"""
思路:
1将state中的空值定位到
abb_pop['state'].isnu11()
2.将上述的布尔值作为源数据的行索引
# abb_pop.loc[abb_pop['state'].isnu11()]#将state中空对应的行数据取出
3.将简称取出
abb_pop.loc[abb_pop['state'].isnull()]['state/region']
#4,对简称去重
abb_pop.loc[abb_pop['state'].isnull()]['state/region'].unique()
"""
print(add_pop.loc[add_pop["state"].isnull()]
["state/region"].unique()) # ['PR' 'USA']
# 6.为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN
# 6.1 先将USA的全称对应的空数据进行批量赋值
# 6.1.1 将USA对应的行数据找出来
print(add_pop["state/region"] == "USA")
print(add_pop.loc[add_pop["state/region"] == "USA"]) # 将USA对应的为空对应的行数据取出
# 6.1.2将USA对应的全程空的行索引取出
indexs = add_pop.loc[add_pop["state/region"] == "USA"].index
# 6.1.3将add_pop中的state为空的进行赋值
add_pop.loc[indexs, "state"] = "United State"
# 6.2 将PR的全称对应的空数据进行批量赋值
# 6.2.1 将PR对应的行数据找出来
print(add_pop["state/region"] == "PR")
print(add_pop.loc[add_pop["state/region"] == "PR"])
# 6.2.2将PR对应的全称空的行索引取出
indexs1 = add_pop.loc[add_pop["state/region"] == "PR"].index
# 6.2.3将add_pop中的state为空的进行赋值
add_pop.loc[indexs1, "state"] = "Puerto Rico"
# 7.合并各州面积数据areas
add_pop_area = pd.merge(left=add_pop, right=area, how="outer")
print(add_pop_area)
# 8.我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行
indexs2 = add_pop_area[add_pop_area["area (sq. mi)"].isnull() == True].index
add_pop_area.drop(labels=indexs2, axis=0, inplace=True)
# 10.找出2010年的全民人口数据
print(add_pop_area.query("ages == 'total' & year == 2010"))
# 11.计算各州的人口密度(人口 / 面积)
add_pop_area["midu"] = add_pop_area["population"] / \
add_pop_area["area (sq. mi)"]
# 12.排序,并找出人口密度最高的州
add_pop_area_sort = add_pop_area.sort_values(
by="midu", axis=0, ascending=False)
print(add_pop_area_sort.loc[0]["state"])
add_pop_area_sort.to_csv("./add_pop_area_sort.csv")
相关文章
- 数据孤岛是业务效率的无声杀手
- 2023展望:新的一年将给大数据分析领域带来什么?
- 阿里云ADB基于Hudi构建Lakehouse的实践
- 大数据在医疗保健领域的使用案例
- 微软增加说明:KB5021751 更新扫描已经 / 即将过时 Office 过程中不会触碰用户隐私
- 2022 Gartner全球云数据库管理系统魔力象限发布 腾讯云数据库入选
- 场景化、重实操,分享一个实时数仓实践案例
- Arctic的湖仓一体践行之路
- 分布式计算MapReduce究竟是怎么一回事?
- 淘系数据模型治理优秀实践
- 大数据分析对医疗保健的影响
- 当我们说大数据Hadoop,究竟在说什么?
- 2022年及以后大数据的五个发展趋势
- 网易严选离线数仓治理实践
- 2023 年数据治理趋势
- 一份“靠谱”的年度经营计划,你学会了吗?
- 漫谈对大数据的思考
- 测试一下,读懂数据的能力,你有吗?
- 用艺术的眼光探索数据之美
- 聊聊数据分析成果如何落地