133、panda操作——数据转换及函数映射

2018-01-27  本文已影响0人  陈容喜

panda操作——数据转换

DataFrame对象中常常出现重复行,可以使用duplicated方法返回一个布尔型Series,表示各行是否重复: 1.png 使用drop_duplicates方法,返回一个移除重复行的DataFrame: 2.png 指定部分列进行重复项判断: 3.png duplicated和drop_duplicates默认保留第一个出现的值组合,传入keep='last'则保留最后一个: 4.png

利用函数或映射进行数据转换

在对数据进行转换时,需要根据数组、Series或DataFrame列中的值来实现转换工作。例如下面一组有关肉类的数据: 5.png 编写一个肉类到动物的映射: 6.png 采用Series的map方法接受一个函数或含有映射关系的字典对象,因肉类的首字母有的大写有的小写,需要使用lower把各个值转换为小写: 7.png 传入一个能够完全映射食物和来源的函数: 8.png

源码:

# coding: utf-8

# ### 移除重复数据

# In[1]:

import numpy as np
from pandas import Series,DataFrame
import pandas as pd


# In[2]:

# 先读取一个excel文件
xls_file = 'D:\\Python\\notebook\\D8 AJ.xlsx'
dataXls = pd.read_excel(xls_file)
print(dataXls)


# In[3]:

# 使用duplicated方法返回一个布尔型Series,表示各行是否重复
dataXls.duplicated()


# In[4]:

# 使用drop_duplicates方法返回一个移除重复犯的DataFrame
dataXls.drop_duplicates()


# In[5]:

# 指定PIN 1列过滤重复项
dataXls['v1'] = range(7)
dataXls.drop_duplicates(['PIN 1'])


# In[6]:

'''
duplicated和drop_duplicates默认保留第一个出现的值组合,
传入keep='last'则保留最后一个
'''
dataXls.drop_duplicates(['PIN 1','PIN 2'],keep='last')


# ### 利用函数或映射进行数据转换

# In[7]:

# 建立有关肉类的数据
data = 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]})
print(data)


# In[8]:

# 编写一个肉类到动物的映射
meat_to_animal = {
    'bacon':'pig',
    'pulled pork':'pig',
    'pastrami':'cow',
    'corned beef':'cow',
    'honey ham':'pig',
    'nova lox':'salmon'
}


# In[9]:

# 采用Series的map方法接受一个函数或含有映射关系的字典对象
data['animal'] = data['food'].map(str.lower).map(meat_to_animal)
print(data)


# In[10]:

# 传入一个能够完全映射食物和来源的函数
data['food'].map(lambda x: meat_to_animal[x.lower()])
上一篇下一篇

猜你喜欢

热点阅读