首页 > 其他分享 >人口分析项目

人口分析项目

时间:2023-10-01 20:57:30浏览次数:34  
标签:分析 loc abb 项目 region area pop 人口 state

博客地址:https://www.cnblogs.com/zylyehuo/

开发环境

  • anaconda
    • 集成环境:集成好了数据分析和机器学习中所需要的全部环境
    • 安装目录不可以有中文和特殊符号
  • jupyter
    • anaconda提供的一个基于浏览器的可视化开发工具

需求

  • 导入文件,查看原始数据
  • 将人口数据和各州简称数据进行合并
  • 将合并的数据中重复的abbreviation列进行删除
  • 查看存在缺失数据的列
  • 找到有哪些state/region使得state的值为NaN,进行去重操作
  • 为找到的这些state/region的state项补上正确的值,从而去除掉state这一列的所有NaN
  • 合并各州面积数据areas
  • 我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行
  • 去除含有缺失数据的行
  • 找出2010年的全民人口数据
  • 计算各州的人口密度
  • 排序,并找出人口密度最高的州
import numpy as np
import pandas as pd
from pandas import DataFrame

导入文件,查看原始数据

abb = pd.read_csv('./data/state-abbrevs.csv')  # state(州的全称)abbreviation(州的简称)
abb.head()

area = pd.read_csv('./data/state-areas.csv')  # state州的全称,area (sq. mi)州的面积
area.head()

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

pop = pd.read_csv('./data/state-population.csv') 
# state/region简称,ages年龄,year时间,population人口数量
abb_pop = pd.merge(abb,pop,left_on='abbreviation',right_on='state/region',how='outer')
abb_pop.head()

将合并的数据中重复的abbreviation列进行删除

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

查看存在缺失数据的列

方式1

  • isnull --> any
  • notnull --> all
abb_pop.isnull().any(axis=0)
# state,population这两列中存在空值
state            True
state/region    False
ages            False
year            False
population       True
dtype: bool

方式2

abb_pop.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2544 entries, 0 to 2543
Data columns (total 5 columns):
 #   Column        Non-Null Count  Dtype  
---  ------        --------------  -----  
 0   state         2448 non-null   object 
 1   state/region  2544 non-null   object 
 2   ages          2544 non-null   object 
 3   year          2544 non-null   int64  
 4   population    2524 non-null   float64
dtypes: float64(1), int64(1), object(3)
memory usage: 119.2+ KB

找到有哪些state/region使得state的值为NaN,进行去重操作(将state中的空值对应的简称找到,且对简称进行去重)

abb_pop.head()

# 思路:可以将state这一列中的空值对应的行数据取出,从该行数据中就可以取出简称的值
# 1.将state中的空值定位到
abb_pop['state'].isnull()
# 2.将上述的布尔值作为源数据的行索引
abb_pop.loc[abb_pop['state'].isnull()]  # 将state中空对应的行数据取出
# 3.将简称取出
abb_pop.loc[abb_pop['state'].isnull()]['state/region']
# 4.对简称去重
abb_pop.loc[abb_pop['state'].isnull()]['state/region'].unique()
# 结论:只有PR和USA对应的全称数据为空值
array(['PR', 'USA'], dtype=object)

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

  • 思考:填充该需求中的空值可不可以使用fillna?
    • 不可以。fillna可以使用空的紧邻值做填充。fillna(value='xxx')使用指定的值填充空值
    • 使用给元素赋值的方式进行填充!

1.先给USA的全称对应的空值进行批量赋值

1.1将USA对应的行数据找出(行数据中就存在state的空值)

abb_pop['state/region'] == 'USA'
abb_pop.loc[abb_pop['state/region'] == 'USA']  # 将usa对应的行数据取出
abb_pop.loc[abb_pop['state/region'] == 'USA'].head()

1.2将USA对应的全称空对应的行索引取出

indexs = abb_pop.loc[abb_pop['state/region'] == 'USA'].index
indexs
Int64Index([2496, 2497, 2498, 2499, 2500, 2501, 2502, 2503, 2504, 2505, 2506,
            2507, 2508, 2509, 2510, 2511, 2512, 2513, 2514, 2515, 2516, 2517,
            2518, 2519, 2520, 2521, 2522, 2523, 2524, 2525, 2526, 2527, 2528,
            2529, 2530, 2531, 2532, 2533, 2534, 2535, 2536, 2537, 2538, 2539,
            2540, 2541, 2542, 2543],
           dtype='int64')
abb_pop.iloc[indexs]
abb_pop.loc[indexs,'state'] = 'United States'
abb_pop

2.可以将PR的全称进行赋值

abb_pop['state/region'] == 'PR'
abb_pop.loc[abb_pop['state/region'] == 'PR']  # PR对应的行数据
indexs = abb_pop.loc[abb_pop['state/region'] == 'PR'].index
indexs
Int64Index([2448, 2449, 2450, 2451, 2452, 2453, 2454, 2455, 2456, 2457, 2458,
            2459, 2460, 2461, 2462, 2463, 2464, 2465, 2466, 2467, 2468, 2469,
            2470, 2471, 2472, 2473, 2474, 2475, 2476, 2477, 2478, 2479, 2480,
            2481, 2482, 2483, 2484, 2485, 2486, 2487, 2488, 2489, 2490, 2491,
            2492, 2493, 2494, 2495],
           dtype='int64')
abb_pop.loc[indexs,'state'] = 'PPPRRR'
abb_pop

合并各州面积数据areas

abb_pop_area = pd.merge(abb_pop,area,how='outer')
abb_pop_area

我们会发现area(sq.mi)这一列有缺失数据,找出是哪些行

abb_pop_area['area (sq. mi)'].isnull()
abb_pop_area.loc[abb_pop_area['area (sq. mi)'].isnull()]  # 空对应的行数据
indexs = abb_pop_area.loc[abb_pop_area['area (sq. mi)'].isnull()].index
indexs
Int64Index([], dtype='int64')

去除含有缺失数据的行

abb_pop_area.drop(labels=indexs,axis=0,inplace=True)
abb_pop_area

找出2010年的全民人口数据(基于df做条件查询)

abb_pop_area.query('ages == "total" & year == 2010')
abb_pop_area.query('ages == "total" & year == 2010').head()

计算各州的人口密度(人口除以面积)

abb_pop_area['midu'] = abb_pop_area['population'] / abb_pop_area['area (sq. mi)']
abb_pop_area

排序,并找出人口密度最高的州

abb_pop_area.sort_values(by='midu',axis=0,ascending=False).iloc[0]['state']
'District of Columbia'

标签:分析,loc,abb,项目,region,area,pop,人口,state
From: https://www.cnblogs.com/zylyehuo/p/17739197.html

相关文章

  • 项目说明
    总结在这个项目中,你需要完成一个井字游戏代码。可以在此处下载游戏GUI和计算机逻辑的源代码。虽然可以马上开始编译和玩游戏,但代码并不完整,因为游戏永远都不会检测到获胜者!游戏规则井字游戏是一款2个人玩的棋盘游戏。一个玩家用X,另一个玩家用O。游戏从9个空网格(3x3)......
  • 视频融合/监控汇聚平台EasyCVR如何推送本地录像视频文件进行AI视频智能分析?
    安防视频监控平台EasyCVR是一个具有强大拓展性、灵活的视频能力和轻便部署的平台。它支持多种主流标准协议,包括国标GB28181、RTSP/Onvif、RTMP等,还可以支持厂家的私有协议和SDK接入,例如海康Ehome、海大宇等设备的SDK。该平台不仅拥有传统安防视频监控的功能,还具备接入AI智能分析的......
  • git远程空仓库创建以及本地项目关联远程仓库
    远程服务器上创建空仓库远程服务器:进入git仓库目录:cd/home/gitmkdirjava-test.gitcdjava-test.gitgitinit--barechown-Rgit:gitjava-test.git本地项目:cd 项目目录gitinitgitcheckout-b develop在项目里面,添加readme.md写一点内容gitadd.gitcommit......
  • C#/.NET/.NET Core优秀项目和框架2023年9月简报
    前言公众号每月定期推广和分享的C#/.NET/.NETCore优秀项目和框架(公众号每周至少推荐两个优秀的项目和框架当然节假日除外),公众号推文有项目和框架的介绍、功能特点以及部分截图等(打不开或者打开GitHub很慢的同学可以优先查看公众号推文,文末一定会附带项目和框架源码地址)。注意:排......
  • dpdk官方转发例子分析
    例子源码http://dpdk.org/browse/dpdk/tree/examples/skeleton/basicfwd.cmain函数主流程1.初始化环境抽象层EALintret=rte_eal_init(argc,argv);if(ret<0)rte_exit(EXIT_FAILURE,"ErrorwithEALinitialization\n");2.分配mempooldpdk使用mbuf保存packet,me......
  • 使用 Gradle:将项目代码导入 IntelliJ
    1.将项目导入IntelliJ打开IntelliJ,如果还打开了其他程序,请关闭它们,再次进入欢迎屏幕。这次,不选择“创建新项目”,而是选择导入项目(ImportProject)。点击导入项目(ImportProject)后,会弹出一个窗口,提示你从某个文件夹导入项目。转到保存ud282-master的文件......
  • 目录结构分析
    CORE├─changelogs //更新日志├─packages //源码和测试代码│├─compiler-core //跨平台的框架│├─compiler-dom //浏览器端编译器│├─compiler-sfc //.vue文件解析器│├─compiler-ssr //服务端解析器│├─dts-test //│├─......
  • 卡尔曼滤波器在实际工程中考虑的问题-------新息的分析
    一、本文重点本篇文章主要讨论的是什么可以称为卡尔曼滤波器工程的问题,该部分主要是根据卡尔曼滤波器在长期的应用和误用实践中发展出来的。本篇文章的参考内容来自《卡尔曼滤波理论和实践》,同时结合自己的项目开发挑出部分自己测试过程中经常调试的内容。如果有侵权请联系删......
  • uniapp项目实践总结(二十五)苹果 ios 平台 APP 打包教程
    导语:当你的应用程序开发完成后,在上架ios应用商店之前,需要进行打包操作,下面就简单介绍一下打包方法。目录准备工作注册账号生成证书打包配置准备工作在打包之前,请保证你的uniapp应用程序编译到ios模拟器或者是真机调试基座环境下是可以正常运行的,苹果打包的过程比......
  • 德勤制造业大数据项目之产品主数据蓝图方案 P112
    当今企业,尤其是大型企业,往往拥有数百个独立的应用程序和系统,跨组织、跨部门的数据很容易变得支离破碎、重复、以及不能及时更新。发生这种情况时,准确回答一些企业关心的基本问题都会变得很痛苦:例如“谁是我们最赚钱的客户?”“什么产品的利润率最高?”,甚至“我们有多少员工”?都会变......