首页 > 其他分享 >数据分析实战 -----美国人口密度

数据分析实战 -----美国人口密度

时间:2024-07-23 10:59:21浏览次数:16  
标签:数据分析 人口密度 abb temp region pop state ----- total

 资源包地址

链接:百度网盘 请输入提取码 

提取码:6666 

步骤

导入库


import numpy as np
import pandas as pd
首先导入文件,并查看数据样本


# 州的全称和州名称简写对应关系表
abb = pd.read_csv('./data/state-abbrevs.csv')
# 州的全称和面积表
areas = pd.read_csv('./data/state-areas.csv')
# 州名称的简写和面积表,包括年龄和年份信息
population = pd.read_csv('./data/state-population.csv')
display(abb.head(), areas.head(), population.head())

合并pop与abbrevs两个DataFrame,分别依据state/region列和abbreviation列来合并。

为了保留所有信息,使用外合并。

# 根据某一列或几列来合并
# 默认合并的规则是查找字段名称相同的列
# 合并的列在内容上,要存在一对一、一对多、多对多的关系
pd.merge(left=population, right=abb, left_on='state/region', right_on='abbreviation', how='inner

看数据是否缺少

abb.abbreviation.unique()
population['state/region'].unique()

# PR USA这两个简称,在abb表中,是不存在的
set(population['state/region'].unique()) - set(abb.abbreviation.unique())  

{'PR', 'USA'}

内合并没有,外合并有

temp = pd.merge(left=population, right=abb, left_on='state/region', right_on='abbreviation', how='outer')

# USA不是一个州,是美国的全称
temp.loc[temp['state/region'] == 'USA']

### 查看存在缺失数据的列。

使用.isnull().any(),只有某一列存在一个缺失数据,就会显示True。

### 根据数据是否缺失情况显示数据,如果缺失为True,那么显示
temp.loc[temp.isnull().any(axis=1)]


### 找到有哪些state/region使得state的值为NaN,使用unique()查看非重复值
temp.loc[temp.isnull().any(axis=1), 'state/region'].unique()

### 为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN!

经过分析,只有PR和USA对应的state有空值,所以只需要填写这两组数据即可

USA  -->  USA
PR  --> 

# 面积表中存在PR州对应的全称 Puerto Rico
# 简写和全称对应不上关系的时候的处理逻辑??  业务方确认
set(areas['state']) - set(abb['state'])

{'Puerto Rico'}

temp.loc[temp['state/region'] == 'PR', 'state'] = 'Puerto Rico'
# 查看使得state为空的州还有哪些
temp.loc[temp['state'].isnull(), 'state/region'].unique()

# 由于USA是全美国的数据,不需要保留,可以删除
# 把sate/region == USA的数据删除


usa_index = temp.loc[temp['state/region'] == 'USA'].index
pop_abb = temp.drop(labels=usa_index).copy()
pop_abb.isnull().any()
pop_abb = pop_abb.drop(labels=['abbreviation'], axis=1)

### 继续寻找存在缺失数据的列


# 由于2000年之前,并没有统计过PR州的人口数据,所以删除
pop_abb.loc[pop_abb.population.isnull()]
pop_abb.isnull().any()
pop_abb.dropna().isnull().any()

# 删除人口为空的所有行

pop_abb.dropna(inplace=True)
pop_abb.head()

areas.head()

# 使用外合并,保证数据的完整

total = pd.merge(left=pop_abb, right=areas, how='outer')
### 找出2010年的全民人口数据,df.query(查询语句)
pop_2010_total = total.query('year == 2010 & ages == "total"')
或者
con1 = total.year == 2010
con2 = total.ages == 'total'
total.loc[con1 & con2]

### 对查询结果进行处理,以state列作为新的行索引:set_index


total['density'] = total['population']/total['area (sq. mi)']
total

density_df = total.query('year == 2012 & ages == "total"').sort_values('density', ascending=False)
density_df.set_index('state').head()

标签:数据分析,人口密度,abb,temp,region,pop,state,-----,total
From: https://blog.csdn.net/yanminghe66666/article/details/140620480

相关文章

  • @RequestPart-Java接口,同时传参JSON对象数据和文件
    简单介绍前端传递文件参数的时候,通常会使用POST方式传参,将请求header的content-type设置为:multipart/form-data(因为GET请求只能传递文本类型的参数,而文件属于二进制数据,无法直接通过GET方式传递。)前端通过POST传参时,header的content-type设置为"application/json"......
  • mybatis-plus对表的查询方式
    publicPage<WmsInventoryVO>queryPage(WmsInventoryQueryquery,Pageablepage){List<WmsInventory>list=selectList(query,page);List<WmsInventoryVO>res=inventoryConvert.dos2vos(list);injectAreaAndItemInfo(r......
  • 三星中央空调售后维修服务电话-全国统一24小时客服热线
    三星中央空调全国400售后服务号码2024已更新(2024/更新)三星中央空调400售后服务电话:400-991-8812三星中央空调400全国24小时客服:400-991-020824小时人工客服、线下专业网点及各地区售后人员服务团队等专属服务,整个报修流程规范有序,后期同步跟踪查询公开。所有售后团队均经过......
  • 凤凰项目(Phoenix Project)精要 - 随笔 - 下
    C-30关于我们究竟应该做什么,需要有更多的线索--》步步逼近某个重大的领域更宏观一些,作为全套流程的设计者那样去思考--》着眼于整个工作流,确认约束点的位置,并竭尽所能地运用各种技术和流程知识来确保工作得到有效执行。发现极具潜质的罕见人才,决定关注他的未来并持续......
  • 类型错误:无法将函数返回值转换为 Python 类型!签名是 () -> 处理 anaconda spider
    这是代码:importosimportrandomimportnumpyasnpimportpandasaspdimporttensorflowastffromtensorflow.kerasimportbackendasKfromtensorflow.keras.layersimportDense,Dropout,Flatten,Conv2D,MaxPool2D,Input......
  • python进阶---闭包与装饰器
    一、闭包        在Python中,闭包是指一个函数内部定义的函数,这个内部函数可以访问并修改其外部函数的局部变量,即使外部函数已经执行完毕。闭包可以通过多层函数嵌套来实现。    闭包的三要素:    1、外部函数嵌套内部函数    2、外部函数返......
  • Android开发 - LayoutParams解析
    LayoutParams翻译过来就是布局参数,子View通过LayoutParams告诉父容器(ViewGroup)应该如何放置自己。从这个定义中也可以看出来LayoutParams与ViewGroup是息息相关的,因此脱离ViewGroup谈LayoutParams是没有意义的。事实上,每个ViewGroup的子类都有自己对应的LayoutParams类,典型的如L......
  • 2024-IDEA下载安装教程
    IDEA下载安装教程IDEA官网:IntelliJIDEA–theLeadingJavaandKotlinIDE(jetbrains.com)下载IDEA   双击运行ideaIU-2024.1.4.exe 安装     激活idea 链接:https://pan.baidu.com/s/1_lMVe0oODa-b4BrQJrpZTw?pwd=3456提取码:3456  ......
  • Python语言-面向对象
    知识代码classJobSalary(object):job=''def__init__(self,city):self.jobname="数据分析师"self.exp=''self.city=city#方法defdata_normalize(self,data):print(f'正在规范化......
  • 【2024-07-22】连岳摘抄
    23:59赤日几时过,清风无处寻。经书聊枕籍,瓜李漫浮沉。兰若静复静,茅茨深又深。炎蒸乃如许,那更惜分阴。                                                 ——《大暑》宋·......