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

本文介绍了使用Pandas进行数据预处理和数据重塑的案例,具体包括流感数据的读取、清洗、批量处理、列名重塑、缺失值处理及数据拼接等操作。内容覆盖了数据帧的基本操作,适合初学者参考。
摘要由CSDN通过智能技术生成

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["年份&
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值