Pandas数据预处理与数据重塑案例

Pandas数据预处理与数据重塑案例

前言

  预处理是数据分析中不可缺少的一部分,我们日常得到的数据多半是规整的,只有得到想要的相应格式的数据,才能进行后续的探索性分析和建模。以下是我在一个小的项目中部分数据预处理的过程,在这里记录下来方便我后续查看,也希望能给刚入门pandas的朋友们提供一些帮助。

  本案例内容主要使用python的pandas进行操作,涉及知识包括数据框的增删查改、批量读取数据、变量类型的转换、数据框的重塑与合并。本案例中并没有介绍pandas函数的具体用法,但给出了完整的预处理过程和注释,不熟悉的同学可以自己尝试一下。

数据介绍和任务要求

  数据包括2004-2016年的流感数据,数据展示如下

逐年流感数据文件夹

这里写图片描述

单年流感数据

这里写图片描述

各年各省市的人口数据展示如下

人口数据

这里写图片描述

任务要求:

  • 读取2004-2016年的流感数据,并拼接为一个数据框
  • 读入人口数据,按年份和地区对流感数据填充人口数

  为想亲自上手操作的朋友们提供了数据的百度云链接,建议先自己尝试后在阅读后续代码。
链接:https://pan.baidu.com/s/1ALHiIk60_g1p9zjSBRvQ9Q 密码:cqsk

加载相关包

import pandas as pd
import numpy as np
import os
import re

流感数据的读取与清洗

读取第一年流感数据

  首先读取第一年的数据,并展示查看数据查看其格式

os.chdir('C:/Users/CCC/Desktop/')                        # 设置工作路径为C盘桌面
dat0 = pd.read_csv("by_year/2004.csv", encoding = "gbk") # 读取数据,命名为dat0
dat0.head()                                              # 展示数据前5行
Unnamed: 0 Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5
0 NaN NaN 流行性感冒 NaN NaN NaN
1 NaN 地区 发病数 死亡数 发病率 死亡率
2 NaN 全国 49496 15 3.8077 0.0012
3 NaN 北京市 8 0 0.0540 NaN
4 NaN 天津市 13 0 0.1399 NaN
dat0.tail() # 展示数据后5行
Unnamed: 0 Unnamed: 1 Unnamed: 2 Unnamed: 3 Unnamed: 4 Unnamed: 5
30 NaN 甘肃省 978 0 3.7416 NaN
31 NaN 青海省 230 1 4.2627 0.0185
32 NaN 宁夏 193 0 3.3051 NaN
33 NaN 新疆 95 0 0.5106 NaN
34 2018年9月10日 下午9:09 NaN NaN NaN NaN NaN

  从这里我们可以看出数据框的列名与实际需要的列名不符,并且数据框头尾均有不需要的空行。

对第一年的数据进行预处理

  针对上一步中所看出的现象对第1年的数据进行预处理,主要的步骤是重塑列名以及删除多余的列。

dat0.drop("Unnamed: 0", axis =1, inplace= True)        # 删除第一列
col_name = dat0.iloc[1]                                # 选取真实列名所在的第1行
dat0.columns = col_name                                # 更改列名 
dat0.drop([0, 1, len(dat0)-1], axis =0, inplace= True) # 删除多余的行
dat0.head()                                            # 展示数据的前5行
1 地区 发病数 死亡数 发病率 死亡率
2 全国 49496 15 3.8077 0.0012
3 北京市 8 0 0.0540 NaN
4 天津市 13 0 0.1399 NaN
5 河北省 1923 0 2.8283 NaN
6 山西省 57 0 0.1720 NaN

  查看展示出的数据,可以发现据的index被删除行的时候弄乱了,于是在这一部分我们对index进行重置,并对数据新增加年份变量。

dat0.reset_index(inplace = True, drop=True) # 重新设置被打乱的index 
dat0["年份&
  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Pandas数据分析 普林大数据学院 普 林 大 数 据 学 院 P R I N C E T E C H S B I G D A T A C O L L E G E 2 3 目录 第一部分 文件读写 第二部分 变量离散化 第三部分 缺失值填补 普林大数据学院 普 林 大 数 据 学 院 P R I N C E T E C H S B I G D A T A C O L L E G E 第四部分 数据标准化 第五部分 数据合并 第六部分 数据组合 第七部分 数字编码 第八部分 OneHot编码 普 林 大 数 据 学 院 P R I N C E T E C H S B I G D A T A C O L L E G E 普林大数据学院 4 数据文件操作——读入数据pandas提供了一些用于将表格型数据读取为DataFrame对象的函数, 常用的函数为read_csv和read_table • 函数的选项可以划分为几个大类 • 索引:将一个或多个列当做返回的DataFrame处理,以及是否从文件、用户 获取列名 • 类型推断和数据转换:包括用户定义值的转换、缺失值标记列表等 • 日期解析:包括组合功能,比如将分散在多个列中的日期时间信息组合起来 • 迭代:支持对大文件进行逐块迭代 • 不规整数据问题:跳过一些行、页脚、注释或其他一些不重要的东西 普 林 大 数 据 学 院 P R I N C E T E C H S B I G D A T A C O L L E G E 普林大数据学院 5 文件读写 Pandas提供了一些用于将表格型数据读取位DataFrame对象的函数。 其中最常用的为read_csv和read_table。read_csv 从文件、URL、文件 型对象中加载带分隔符的数据。默认分隔符为逗号。read_table从文件、 URL、文件型对象中加载带分隔符的数据。默认分隔符为制表符 (“\t”) In[19]:df= pd.read_csv('iris.csv') df.head() Out[19]: sepal_len sepal_wh petal_len petal_wh target 0 5.1 3.5 1.4 0.2 0 1 4.9 3.0 1.4 0.2 0 2 4.7 3.2 1.3 0.2 0 3 4.6 3.1 1.5 0.2 0 4 5.0 3.6 1.4 0.2 0
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值