python數據去重復
❶ python 清除重復值
from pandas import read_csv
df = read_csv('D://PDA//4.3//data.csv')
df
#找出行重復的位置
dIndex = df.plicated()
#根據某些列,找出重復的位置
dIndex = df.plicated('id')
dIndex = df.plicated(['id', 'key'])
#根據返回值,把重復數據提取出來
df[dIndex]
id key value
4 1251147 品牌 Apple
5 1251147 商品名稱 蘋果iPad mini 3
#直接刪除重復值
#默認根據所有的列,進行刪除
newDF = df.drop_plicates()
#當然也可以指定某一列,進行重復值處理
newDF = df.drop_plicates('id')
❷ python中list中怎麼刪除重復數據保留一條
可以先統計list中每個數據的個數,用一個dict存儲,然後遍歷list,判斷是否是最後一個,是的就從list中刪除即可
❸ Python第19課:數據清洗之去錯、去空、去重
Python 第19課:數據清洗之去錯、去空、去重
時間 2019-02-01 下午3:30
主講 劉培富
地點 四樓電教室
數據清洗是數據治理的關鍵環節,是指對獲取的原始數據(也稱「臟數據」)進行審查、校驗、加工的過程,目的在於刪除重復信息、糾正錯誤信息,保持數據一致性。
一般來說,數據清洗,主要是對數據進行去錯、去空、去重處理。
針對一張包含姓名、身份證號碼、車牌號碼的數據表,建立糾錯規則如下:
1.車牌號既不包含漢字贛,且不包含漢字饒。
2.身份證號碼的年份既不等於19也不等於20,身份證號碼的月份大於12,身份證號碼的日期大於31。
3.身份證號碼位數不等於18。
4.姓名的長度小於等於1。
二、去空
對於關鍵性數據,不允許為空,對於這類數據,要查詢是否存在空值。
三、去重
在一張表中,有的數據列允許重復,有的數據列則不允許重復。例如,對於一張車主信息表來說,姓名、身份證號可以重復,因為存在一人登記多輛車的情形,這種重復,不能認為是錯誤。但是,車牌號則不允許重復,否則就存在業務邏輯的錯誤。所以,針對車牌號數據列,要進行去重。
通過以下SQL語句,可以列出重復的數據:
綜上,數據清洗,既要懂技術,更要懂業務,否則無法正確制定清洗規則,導致數據清洗流於形式,達不到清洗的效果。
❹ Python怎麼從文件里的數據去重復,去重復後,再保存到文件里,把重復的數據保存出來
內容讀出來通過逗號分割成一個列表,再去掉重復的,再寫入到文件裡面
#-*-coding:utf-8-*-
filename='data.txt'
withopen(filename,'r')asf:
content=f.read()
content=list(set(content.split(',')))
content=','.join(content)
withopen(filename,'w')as_f:
_f.write(content)
❺ python數據類型(集合)
1.集合(set)是一個無序不重復元素的序列(意思是有重復的會自動刪除,每次列印元素的位置不一定)
2.基本功能是進行成員關系測試和刪除重復元素
3.可以使用大括弧 { } 或者 set() 函數創建集合,注意:創建一個空集合必須用 set() 而不是 { },因為 { } 是用來創建一個空字典
4.因為set存儲的是無序集合,所以我們沒法通過索引來訪問。訪問 set中的某個元素實際上就是判斷一個元素是否在set中。
1.創建集合
s=set()#創建一個空集合
s1={1,2,3,'a','python'}
2.刪除重復的元素
集合是一個無序不重復元素的序列(意思是有重復的會自動刪除,每次列印元素的位置不一定)
3.成員關系測試(檢測某個成員是否在集合中)
案例:從終端輸入5位數,以空格隔開,把這5位數存入列表中,剔除重復的數據,列印出來
#提示,列表轉集合,集合轉列表
a=input("請輸入5位數字:")
mylist=a.split()
print(mylist)
b=set(mylist)
c=list(b)
print(c)
4.集合常用操作
1.添加元素
2.刪除元素
3.刪除整個集合
4.獲取集合的長度
5.不支持改元素
集合操作-添加元素
格式:
集合.add(元素)
格式:
集合.update(元素)
區別:
add不能添加列表,update可以
update是將字元串中的拆分成字元進行追加
add,是當做整體追加在集合中
#案例:從終端輸入一個數字就加入集合中,然後列印,又輸入一個數字,然後列印,直到輸入-1,退出輸入
#然後列印最終的集合
ms=set()
while 1:
a=int(input("請輸入一個數字:"))
if a==-1:
break
ms.add(a)
print(ms)
print(ms)
#案例:從終端輸入一個字元串就加入集合中,然後列印,又輸入一個字元串,然後列印,直到輸入q,退出輸入
#然後列印最終的集合,字元串要分開存儲,如輸入hello,存儲的列表是{'h','e','l','0'}
ms=set()
while 1:
a=input("請輸入一個字元串:")
if a=='q':
break
ms.update(a)
print(ms)
print(ms)
集合操作-刪除元素及刪除整個集合
格式:
集合.remove(元素) # 元素如果不存在會引發KeyError
集合.discard(元素) # 元素如果不存在不發生任何事
集合.pop() # 集合元素是字元串類型時刪除隨機元素。 集合元素是其他數據類型時,刪除左邊第一個元素
del 集合名 #刪除整個集合
#案例:有集合{1,2,3,'hello','world'},刪除全部字元串,然後最左邊第一個元素
a={1,2,3,'hello','world'}
a.discard("hello")
a.discard("world")
a.pop()
print(a)
集合操作-獲取集合的長度
格式:
len(集合名)
#案例:有集合{1,2,3,4,'hello','a'},保留1個元素,其他的刪除,假如元素個數不確定
s={1,2,3,4,'hello','a'}
for i in range(len(s)-1):
s.pop()
print(s)
集合的集運算
集合的交集,並集,差集,對稱差集的運算
{1,2,3,4}交集{4,5,6,7} -->4 交集(&)
{1,2,3,4}並集{4,5,6,7} ->1,2,3,4,5,6,7 並集(|)
{1,2,3,4}差集{4,5,6,7} ->1,2,3 差集(-)
{1,2,3,4}對稱差集{4,5,6,7}->1,2,3,5,6,7 4同時出現在兩個集合中,不選它 對稱差集(^)
#案例:使用花括弧和set創建各一個集合,然後對集合進行交、並、差、對稱差運算
s={1,2,3,4,5,6}
s1=set([6,7,8,9,10])
print(s&s1)
print(s|s1)
print(s-s1)
print(s^s1)
❻ Python 去除列表中重復的元素
這個有幾種方法來完成,但是對於不可哈希的數據來說,BIF set() 是無效的,會報錯,下面介紹幾種方法
對於以上4種方法,各有利弊,一般來說是方法2最快,方法1和方法3比較類似,但是方法3可以保持列表中的排序和之前的一樣,但是開頭也說了,這樣無法對不可哈希的對象進行去重復,比如列表中的元素還是列表,這種情況下就只能用方法4了,但是方法4的缺點就是比較的慢。