Pandas数据去重和对重复数据分类、求和,得到未…
2018-08-17 09:47:06来源:博客园 阅读 ()
人的理想志向往往和他的能力成正比。
其实整个需求呢,就是题目。2018-08-16
需求的结构图:
涉及的包有:pandas、numpy
1、导入包:
import pandas as pd import numpy as np
2、构造DataFrame,里面包含三种数据类型:int、null、str
data = {"number":[1,1,np.nan,np.nan,2,2,1,2,2], "letter":['a','b',np.nan,np.nan,'c','d','b','c','d'], "label":[1,1,9,9,2,2,1,2,2]} dataset1 = pd.DataFrame(data) #初始化DataFrame 得到数据集dataset1 print(dataset1)
3、空值填充
由于数据集里含有空值,为了能够对后面重复数据进行求和,则需要对空值进行填充
dataset = dataset1.fillna("NULL") print(dataset)
4、利用duplicated()函数和drop_duplicates()函数对数据去重
首先,利用duplicated()函数按列名'letter'和' number '取重复行,其返回的是bool类型,若为重复行则true,反之为false
duplicate_row = dataset.duplicated(subset=['letter',' number '],keep=False) print(duplicate_row)
然后通过bool值取出重复行的数据
duplicate_data = dataset.loc[duplicate_row,:] print(duplicate_data)
再然后根据'letter',' number '对重复数据进行分类,在该前提下并对重复数据的’label’进行求和,且重置索引(对后文中的赋值操作有帮助)
duplicate_data_sum = duplicate_data.groupby(by=['letter',' number ']).agg({' label ':sum}).reset_index(drop=True) Print(duplicate_data_sum)
取出重复数据中的一个,例如:1,1,2,2——>1,2
对drop_duplicates指定列:subset=['letter',' number '],保留第一条重复的数据:keep="first"
duplicate_data _one= duplicate_data.drop_duplicates(subset=['letter',' number '] ,keep="first").reset_index(drop=True) Print(duplicate_data)
获取不重复的数据,指定列subset=['letter',' number ',' label '],不保留重复数据:keep=False
no_duplicate = dataset.drop_duplicates(subset=['letter',' number ',' label '] ,keep=False) Print(no_duplicate)
将对重复值的’label’求和,并赋值给“重复值中的一个”,得到新的”新重复值中的一个
duplicate_data _one ["label"] = duplicate_data_sum ['label'] #前面需要重置索引 print(duplicate_data_one)
最后,拼接”新重复值中的一个”和不重复的数据
Result = pd.concat([no_duplicate,duplicate_data _one])
Print(result)
主要用到几个关键的函数:
Pandas.concat()
DataFrame.duplicated()
DataFrame.drop_duplicates().reset_index(drop=True)
DataFrame.groupby().agg({})
本人处于学习中,如有写的不够专业或者错误的地方,诚心希望各位读者多多指出!!
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
下一篇:Python自学成才001
- python_0基础开始_day07 2019-08-13
- Django和前端用ajax传输json等数据 2019-08-13
- 链接 Mysql 创建 数据库和创表,增加数据 2019-08-13
- Python数据基础类型-列表 2019-08-13
- JavaScript获取Django模板中指定键值的数据,使用过滤器 2019-08-13
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash