编写本篇文章的目的:了解Python数据处理的基本步骤,计算美国各州的人口密度,数据来源:https://github.com/jakevdp/data-USstates/

,共3张数据表格:state-population.csv,state-areas.csv,state-abbrevs.csv

数据说明:

人口数量表 state-population.csv
字段 state/region ages year population
说明 州/区域 人口年龄 年份 人口数量
备注 显示为每个州的简称,与state-abbrevs.csv文件中的abbreviation对应 包括18岁以下,全部年龄段等    
州面积表 state-areas.csv
字段 state area (sq. mi)
说明 区域 区域面积
备注 全称,与state-abbrevs.csv文件中的state字段相对应  
区域表 state-abbrevs.csv
字段 state abbreviation
说明 区域(各州名称) 各州名称简称
备注 全称,与state-areas.csv文件中state字段对应 与state-population.csv 文件中的state/region字段对应

环境:使用anaconda集成环境中的Spyder软件,打开软件,首先新建一个项目(projects),然后所有的操作都在project里面实现。创建项目适用于有大型项目中,本次只是一个小型的数据处理项目,也可以选择不创建项目。

1.读入数据

语句为:pd.read_csv('文件路径'),语句较为简单,但最重要的是要注意文件路径,以本篇为例,讲解几个注意点。

小编的文件路径为:E:\data\data-USstates-master\state-population.csv,这是电脑上直接复制的文件地址;

Python的路径格式为:E://data//data-USstates-master//state-population.csv,也就是把'\'变成了‘//’,当然为了代码的美观程度也可以写成:r'E:/data/data-USstates-master/state-population.csv'。

看起来比较繁琐,因为这是绝对路径,适用于数据文件和运行文件.py不在同一文件夹下。

很多时候我们会考虑到使用相对路径,这样我们一般把数据文件和.py文件放入一个工作目录下。比如小编的.py文件就在E:\data\data-USstates-master\USstate_data目录下,所以读取相对路径就可以写成:r'../state-population.csv',其中‘../’表示回到上层。

2.观察数据

使用的数据观察函数为df.head(),df.describe(),df.tail(),len(df)等,其中head()和tail()分别显示前10条数据和后10条数据,describe()会显示数值型数据的基本统计信息,包括总数据行(与len(df)统计结果一致)、均值、中位数、标准差、最小值、最大值以及其他统计结果。

3.数据处理

数据处理包括:数据合并、缺失值处理、异常值处理、数据插补等。具体处理方法视数据情况而定。

本篇文章涉及到了数据合并和缺失值的基本处理等。

将三个数据文件分别存储为数据框,以字段说明,发现三个数据文件中都存在两两相关的关系,然后合并这三个数据文件。

代码:pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None, left_index=False, right_index=False, sort=False, suffixes=('_x', '_y'), copy=True, indicator=False, validate=None)

参数说明:

left : 数据框
right : 数据框
how : {'left', 'right', 'outer', 'inner'}, 默认为 'inner'
    * left: 只使用左表的键,类似于SQL的左外连接,保留键的顺序
    * right:只使用右表的键,类似于SQL的右外连接,保留键的顺序
    * outer:保留两张表的所有键, 类似于SQL的全连接
    * inner: 取左右两个键不重合的部分,类似于SQL的内连接,保留左表键的顺序
on : 标签或者列表(列表中为多个标签),一般指列名
left_on :左表的连接列名、列表或者数组,适用于左右表连接列名称不同的情况下,结合right_on使用
right_on : 右表的连接列名、列表或者数组,配合left_on使用
left_index : 布尔类型, 默认为 False,适用于左右表共同属性为索引的时候
right_index : 布尔类型, 默认为 False
sort : 布尔类型,默认为 False,主要是对连接后的结果集按字母顺序排序
suffixes : 输出结果中有两个重复列名时,该参数自定义后缀名

删除重复行代码:df.drop(列名, axis=0/1)

(1)合并数据,先合并人口数量表和区域表的数据

merged = pd.merge(pop, abbrevs, how='outer', left_on='state/region', right_on='abbreviation')
merged = merged.drop('abbreviation', axis=1) #axis=1可以直接写为1,且axis为必要参数,必须指定
merged.head()

(2)缺失值观察及简单插补

用df.isnull().any()函数查看是否有缺失值及所在列,发现state和population中有缺失值,考虑到名称缩写没有匹配上的可能性,查看缺失的数据来源,使用merged.loc[merged['state'].isnull(), 'state/region'].unique(),得到数据是PR和USA全称没有录入导致的,所以对该部分的数据进行重新写入。代码如下:

merged.isnull().any() #返回类型为bool类型
merged[merged['population'].isnull()].head()
merged.loc[merged['state'].isnull(), 'state/region'].unique()merged.loc[merged['state/region'] == 'PR', 'state'] = 'Puerto Rico'
merged.loc[merged['state/region'] == 'USA', 'state'] = 'United States'
merged.isnull().any()

然后合并州面积表的数据,添加各州的面积到目标数据表中,对目标表的数据进行缺失值的观察以及处理,代码如下:

final = pd.merge(merged, areas, on='state', how='left')
final.head()final.isnull().any()final['state'][final['area (sq. mi)'].isnull()].unique()
#查找面积数据为空的地区,并且只需要唯一值进行确定#参数补充说明,df.dropna()删除缺失的数据,inpalce=True表示在修改数据,不创建新的对象
#inplace=False表示修改数据,创建并返回新的对象即结果
#subset,设置去除空值的列,里面是列名
final.dropna(inplace=True)
final.head()

(3)计算2010年所有年龄阶段各州的人口密度

使用query()进行数据的查询,set_index()函数设置索引的名称。代码如下:

data2010 = final.query("year == 2010 & ages == 'total'")
data2010.head()data2010.set_index('state', inplace=True)
density = data2010['population'] / data2010['area (sq. mi)']density.sort_values(ascending=False, inplace=True)
density.head()
density.tail()

本篇文章使用到的所有代码:

import pandas as pd
import numpy as np#该文件的路径为:E:\data\data-USstates-master\state-population.csv
#Python路劲语法格式为:E://data//data-USstates-master//state-population.csv
#也可以写为:r'E:/data/data-USstates-master/state-population.csv'
#由于本文件创建了项目,所以可以替换为r'../state-population.csv'
#同理,如果数据文件和.py运行文件在同一文件夹下,可以直接读取
#在文件夹中的上一个文件夹中则用'../'表示回到上一层
pop = pd.read_csv(r'../state-population.csv')
areas = pd.read_csv(r'../state-areas.csv')
abbrevs = pd.read_csv(r'../state-abbrevs.csv')#观察数据,复杂数据可以用到describe函数,格式pop.describe()
print(pop.head());
print(areas.head());
print(abbrevs.head())#合并数据
merged = pd.merge(pop, abbrevs, how='outer', left_on='state/region', right_on='abbreviation')
merged = merged.drop('abbreviation', axis=1) #axis=1可以直接写为1,且axis为必要参数,必须指定
merged.head()#检验缺失数据,即对每一列进行检验
merged.isnull().any() #返回类型为bool类型
merged[merged['population'].isnull()].head()
merged.loc[merged['state'].isnull(), 'state/region'].unique()merged.loc[merged['state/region'] == 'PR', 'state'] = 'Puerto Rico'
merged.loc[merged['state/region'] == 'USA', 'state'] = 'United States'
merged.isnull().any()final = pd.merge(merged, areas, on='state', how='left')
final.head()final.isnull().any()final['state'][final['area (sq. mi)'].isnull()].unique()
#查找面积数据为空的地区,并且只需要唯一值进行确定#参数补充说明,df.dropna()删除缺失的数据,inpalce=True表示在修改数据,不创建新的对象
#inplace=False表示修改数据,创建并返回新的对象即结果
#subset,设置去除空值的列,里面是列名
final.dropna(inplace=True)
final.head()data2010 = final.query("year == 2010 & ages == 'total'")
data2010.head()data2010.set_index('state', inplace=True)
density = data2010['population'] / data2010['area (sq. mi)']density.sort_values(ascending=False, inplace=True)
density.head()
density.tail()

Python数据处理(一)——以美国各州统计数据为例相关推荐

  1. Python数据分析实战,,美国总统大选数据可视化分析[基于pandas]

    目录 前言 一.任务详情 二.数据集来源 三.实现过程 四.运行代码 前言 在学习Python数据分析的过程中,是离不开实战的. 今天跟大家带来数据分析可视化经典项目,美国总统大选数据可视化分析,希望 ...

  2. python 爬虫爬取统计局北京统计数据

    python 爬虫爬取统计局统计数据 写在前面 主要因为朋友写论文,要爬取北京的经济数据.拜托我写一个爬虫爬取数据.爬取的都是公开的数据,代码仅供学习使用,切勿用作非法. http://tjj.bei ...

  3. python生物数据分析_Python学生物统计-数据可视化-学习笔记5

    5.1 作图的重要性 在分析一个数据之前, 我们首先要对数据进行检查, 在统计上看一下汇总统计, 比如最大值, 最小值, 中位数, 平均值, 方差, 标准差, 变异系数等等.直方图, 看一下数据的分布 ...

  4. Python个人博客项目-5.统计数据应用开发

    学习Python已经6年有余,从事的行业数据分析师,算法工程师.爬虫工程师.目前准备正式入行全栈,先做一个个人的博客系统,用来记录日常工作的每一天,也是为自己做一个展示自己的空间. 本身该项目与之前的 ...

  5. python数据处理电脑配置_『大数据python计算机基础教学视频教程』入门学python需要什么配置的电脑...

    x = 1 if x 4.2 1) else匹前的缩进相同且最接近的if 2) 改之前y=x 2行,之后是y=x 1先执行 第5题 代码还n = 1 while n <= 5: i = 1 wh ...

  6. 决策树实现及调参的R与python方法对比——以泰坦尼克幸存者数据为例

    R&python的决策树实现及调参 R实现 python实现 注:本文不涉及决策树理论部分,若有兴趣请移步☞https://blog.csdn.net/weixin_43462348/arti ...

  7. 数据离散化之chimerge算法的实现(python版)(以莺尾花数据为例)

    今天介绍一种数据离散化方法--chimerge,该方法的主要思想是把所有的连续数据排序并分成多个区间,每次计算相邻两个区间的卡方(chi)值,(卡方见卡方分析,)每次取卡方值最小的两个区间进行合并. ...

  8. 3 Python数据分析 美国各州人口分析案例 Pandas高级操作 美国大选献金案例 matplotlib

    Python数据分析 1 案例 美国各州人口分析 1.1 数据介绍 数据来源:https://github.com/jakevdp/data-USstates/ 1.1.1 州人口数量表 state- ...

  9. python 数据处理----读取txt 一列数据写入excel 文件

    将txt数据从某一行开始写入excel文件中(例子为从Appthroughput写至excel_result1.xlsx中) import sys import random import time ...

最新文章

  1. SQL基础学习总结:2(表的创建、删除、更新和名称修改)
  2. 福建2020年3月计算机二级报名时间,福建2020年3月计算机等级考试报名时间
  3. ACM 配置中心实战:Spring + MyBatis + Druid + ACM
  4. 两句话讲清楚CNN中的Pooling和Dropout
  5. ABAP:FTP Using SAP Functions
  6. 请列举你了解的分布式锁_终于搞懂分布式锁是什么了!
  7. 按季度分类汇总_1分钟实现:按某列内容分类汇总,分页打印 Excel 表格
  8. ThinkPHP5.0中Request请求对象的使用和常用的操作
  9. 如何将zlib,gzip和zip相关联?它们有什么共同之处,它们有何不同?
  10. linux如何找大文件夹,Linux系统中如何查找大文件或目录文件夹的方法
  11. [转载] 当心掉进Python多重继承里的坑
  12. 大数据分析应注意哪些问题
  13. 使用NetBSD构建基于iSCSI的小型SAN
  14. 斑能不能彻底去掉_鸡脖、猪脖子上有淋巴结,会有大量毒素、病菌?还能不能放心吃?...
  15. Swing 主题 - FlatLaf
  16. 使用OBS录屏神器,完美录制第二块屏幕。
  17. Android——8种通知栏-适配 Adnroid12
  18. ckfinder java 配置_CKfinder for java详解一:权限配置
  19. 实现添加数据、地图放大、缩小、漫游、全景视图、鹰眼图的操作(ICommand、ITool)...
  20. linux mv中途进程断掉,shell入门

热门文章

  1. 计算机软件工程经典书籍
  2. 360公司为什么有名?商业模式不同而已
  3. 马自达css滑动按钮,css3实现的switch滑动开关按钮的效果
  4. 微前端解决方案初探 03 模块联邦(概述、案例介绍、应用初始化)
  5. Vue 实现弹框自由拖拽(不出可视范围、解决快速拖动问题)
  6. 如何利用SAP邮箱发邮件
  7. 数据中心和纯净住宅IP有什么区别?SOCKS5代理用哪个更好?
  8. 计算机软件创新,利川计算机软件学院_创新学校
  9. 云服务器饥荒_阿里云搭建饥荒专用服务器
  10. 访问局域网计算机 界面闪退,魔兽争霸局域网总是秒退怎么办