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()])
网友评论