Pandas 数据预处理-上|学习笔记

简介: 快速学习 Pandas 数据预处理-上

开发者学堂课程【高校精品课-华东师范大学 - Python 数据科学基础与实践Pandas 数据预处理-上】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/1067/detail/15388


Pandas 数据预处理-上

 

内容简介:

一、处理缺失数据值

二、删除重复值

三、Transforming Data Using a Function or Mapping


一、处理缺失数据值

接下来继续学习pandas的有关内容,同学们按照提供的文件学习pandas数据读取的有关内容,

对第三部分pandas数据预处理部分内容进行讲解,在讲课之前同学们看一下这样的开发环境:JupyterLab,

大家看一下左上角,对于刚开始使用浏览器这样的交互方式的话,可能比较喜欢它,对于长时间使用Jupyter notebook的同学,转过来可能还要在适应一下,但是对于开始使用的同学来说可能很喜欢JupyterLab,大家看一下他左边的导航也很清晰,不像Jupyter notebook很混乱。

Pandas数据预处理的两个内容:第一部分是处理缺失数据值和空值等等,不做详细讲解,具体根据提供的notebook文件自学。

 

二、删除重复值

import pandas as pd
import numpy as np
data = pd.DataFrame({‘k1’:[ ‘one’,‘two ’]*3+[‘two’],

‘k2’:[1,1,2,3,3,4,4]})
data
k1 k2
0 one 1
1 two 1
2 one 2

3 two 3
4 one 3
5 two 4
6 two 4

加载数据值,运行后观察数据框两列k1和k2,数据框里面有一个函数duplicated返回的是一个boolean Series,表示一个行是否有重复值,主要根据前一行来判断,运行一下:

0 False
1 False
2 False
3 False
4 False I
5 False
6 True
dtype:bool

运行结果发现最后一行为true,这表示最后一行有重复值。

可以用drop_duplicates删除重复值,再返回一个数据框:

Data. drop_duplicates()

k1  k2

0 one 1

1 two 1

2 one 2

3 two 3

4 one 3

5 two 4

运行后发现最后一行被删除了,运行结果也是一个框。

上面两种方法都默认考虑所有列,另外我们可以指定一部分来检测重复值。假设检测k1列的重复值:

data[‘v1’]=range(7)

data

k1 k2 v1
0 one 1 0
1 two 1 1
2 one 2 2
3 two 3 3
4 one 3 4
5 two 4 5
6 two 4 6

在date框里加一个v1 ,显示一下,加了一个新列v1。

data.drop_duplicates([‘k1’])

k1 k2 v1
0 one 1 0
1 two 1 1

duplicated 和drop_duplicates默认保留第一次观测到的数据组合。设置keep=´last´能返回最后一个:

data.drop_duplicates([‘k1’,‘k2’],keep=’last’)

k1 k2 v1
0 one 1 0
1 two 1 1
2 one 2 2
3 two 3 3
4 one 3 4
6 two 4 6

 

三、Transforming Data Using a Function or Mapping

(用函数和映射来转换数据)

有时候我们可能希望做一些数据转换。比如下面一个例子,有不同种类的肉:

data = pd.DataFrame({‘food’:[‘bacon’, ‘pulled pork’, ‘bacon’,

‘Pastrami’, ‘corned beef’, ‘Bacon’,

‘pastrami’, ‘honey ham’, ‘nova lox’],

‘ounces’:[4, 3,12,6,7.5,8,3,5,6]})

data

数据框一列是food,一列是ounces,共有九条记录,

food       ounces
0 bacon         4.0
1 pulled pork   3.0
2 bacon          12.0
3 Pastrami        6.0
4 corned beef    7.5
5 Bacon           8.0
6 pastrami        3.0
7 honey ham      5.0
8 nova lox       6.0

假设希望加一列,表明每种肉来源的动物是什么,  

meat_to_animal={

‘bacon’: ‘pig’,

‘pulled pork’: ‘pig’,

‘pastrami’: ‘cow’,

‘corned beef’: ‘cow’,

‘honey ham’: ‘pig’,

‘nova lox’: ‘salmon’

}

用于series的map方法接受一个函数,或是一个字典,包含着映射关系,但这里有一个小问题,有些肉是大写,有些是小写。因此,我们先用str.lower把所有的值变为小写,在pandas里面str.lower很重要。

lowercased=data[‘food’].str.lower()
lowercased

0 bacon
1 pulled pork
2 bacon
3 pastrami
4 corned beef
5 bacon
6 pastrami
7 honey ham
8 nova lox
Name:food,dtype:object
data[‘animals’] = lowercased.map(meat_to_animal) //做映射

Data

执行一下,增加了新的一列animal。

food        ounces animal

相关文章
|
4月前
|
XML JSON 数据格式
Python Pandas PK esProc SPL,谁才是数据预处理王者?
Python Pandas PK esProc SPL,谁才是数据预处理王者?
|
5月前
|
数据采集 Python
利用Pandas对小费数据集进行数据预处理实战(附源码)
利用Pandas对小费数据集进行数据预处理实战(附源码)
87 0
|
9月前
|
机器学习/深度学习 决策智能 计算机视觉
Pandas库之DataFrame学习笔记
Pandas库之DataFrame学习笔记
111 0
|
11月前
|
数据采集 BI Python
对pandas进行数据预处理的实例讲解
对pandas进行数据预处理的实例讲解
|
12月前
|
数据处理 索引 Python
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(4)
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(4)
238 0
|
12月前
|
Java 数据处理 索引
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(3)
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(3)
140 0
|
12月前
|
SQL 存储 Java
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(2)
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(2)
223 0
|
12月前
|
SQL Java Go
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(1)
【Python】【Numpy+Pandas数据处理·闯关】和鲸社区学习笔记day(1)
260 0
|
数据采集 数据挖掘 Python
数据分析处理库Pandas-数据预处理
数据分析处理库Pandas-数据预处理
数据分析处理库Pandas-数据预处理
|
数据采集 机器学习/深度学习 数据可视化
5个可以帮助pandas进行数据预处理的可视化图表
5个可以帮助pandas进行数据预处理的可视化图表
160 0
5个可以帮助pandas进行数据预处理的可视化图表