python 查找两列不同的值、相同的值(dataframe数据探索)

在做数据挖掘时,查看训练集、测试集数据的情况时,有时需要查看两者之间不同的值和相同的值。

import pandas as pd
import numpy as np
data1 = pd.DataFrame({
    'a':[1,2,3,4,5,6,7,8,9,9]
})
data2 = pd.DataFrame({
    'a':[1,12,13,14,15,16,17,18,19,19]
})
def same_element(list1,list2):
    set1 = set(list1)
    set2 = set(list2)
    return (set1 & set2),(set1 ^ set2),((set1|set2)-set2),((set1|set2)-set1)

same,dif,alone_forward,alone_backward = same_element(data1['a'],data2['a'])
print('相同的元素:',same,'相同元素个数:',len(same))
print('不同的元素:',dif,'不相同的元素个数:',len(dif))
print('列表1有列表2没有的元素:',alone_forward,'列表1有列表2没有的元素个数:',len(alone_forward))
print('列表1没有列表2有的元素:',alone_backward,'列表1没有列表2有的元素个数:',len(alone_backward))

结果如下:

相同的元素: {1} 相同元素个数: 1
不同的元素: {2, 3, 4, 5, 6, 7, 8, 9, 12, 13, 14, 15, 16, 17, 18, 19} 不相同的元素个数: 16
列表1有列表2没有的元素: {2, 3, 4, 5, 6, 7, 8, 9} 列表1有列表2没有的元素个数: 8
列表1没有列表2有的元素: {12, 13, 14, 15, 16, 17, 18, 19} 列表1没有列表2有的元素个数: 8

一列一列的查看太慢,所以改进一下:

train_data = pd.DataFrame({
    'a':[1,2,3,4,5,5],
    'b':['k','g','k','t','a','p']
})
test_data = pd.DataFrame({
    'a':[1,12,13,14,19,19],
    'b':['g','b','y','k','d','y']
})
def same_element(train_data,test_data):
    col_list = train_data.columns.tolist()
    for i in col_list:
        set1 = set(train_data[i])
        set2 = set(test_data[i])
        print(i,'相同的元素:', (set1 & set2),  i,'相同元素的个数:', len(set1 & set2))
        print(i,'不同的元素:', (set1 ^ set2),  i, '不相同的元素个数:', len(set1 ^ set2))
        print(i,'train_data有test_data没有的元素:', ((set1|set2)-set2),  i,'train_data有test_data没有的元素个数:', len(((set1|set2)-set2)))
        print(i,'train_data没有test_data有的元素:', ((set1|set2)-set1),  i, 'train_data没有test_data有的元素个数:', len(((set1|set2)-set1)))
same_element(train_data,test_data)

结果为:

a 相同的元素: {1} a 相同元素个数: 1
a 不同的元素: {2, 3, 4, 5, 12, 13, 14, 19} a 不相同的元素个数: 8
a train_data有test_data没有的元素: {2, 3, 4, 5} a train_data有test_data没有的元素个数: 4
a train_data没有test_data有的元素: {19, 12, 13, 14} a train_data没有test_data有的元素个数: 4
b 相同的元素: {'k', 'g'} b 相同元素个数: 2
b 不同的元素: {'b', 'y', 'a', 't', 'd', 'p'} b 不相同的元素个数: 6
b train_data有test_data没有的元素: {'t', 'p', 'a'} b train_data有test_data没有的元素个数: 3
b train_data没有test_data有的元素: {'b', 'y', 'd'} b train_data没有test_data有的元素个数: 3

你可能感兴趣的:(python,数据预处理,python,数据挖掘)