前言:
本节主要参考的连接有, https://blog.csdn.net/brucewong0516/article/details/82707492
本节主要介绍如何使用pandas去重、合并、以及根据规则统计出现数据出现的次数,其主要包括三个函数:
drop_duplicates()、 merge() 、groupby() 。
1、 drop_duplicates()函数用于删除数据中重复的记录,例如下面表示 删除数据中Commodity_id和Commodity_type一样的记录。
static_ad_feature.drop_duplicates(subset=['Commodity_id', 'Commodity_type'], keep='first', inplace=True)
第一个参数subset表示要指定的数据列
第二个参数keep表示是可选值为first last 表示数据出现重复时保留第一次出现的记录还是最后一次出现的记录,默认是第一次出现的记录
第三个参数inplace是否直接在原始数据集上进行删除, 默认是false,设置为True原始数据中重复的值将被删除
2、merge()函数表示将数据按照指定的列进行合并di, 有问题!!!!!!!!!
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None)
第一个和第二个参数表示用于拼接操作的两个数据
第三个参数how表示拼接的方式,
第四个参数on表示用于拼接的数据
第五个参数left_on表示左边的参数
第六个参数right_on表示右边拼接的参数
3、groupby()函数 表示按照指定的列对数据进行分类,该列中每个相同的元素为一类。
相关代码:
验证drop_duplicates()函数的使用方法
import pandas as pd
static_ad_feature = pd.read_csv('data/ad_static_feature_top10000.csv')
print("前5行数据是:\n", static_ad_feature.head(5))
# 对相同的 Commodity_id和 Commodity_type 数据进行去重操作 并且只保留第一次出现的数据
static_ad_feature.drop_duplicates(subset=['Commodity_id', 'Commodity_type'], keep='last', inplace=True)
print("前5行数据是:\n", static_ad_feature.head(5))
# 验证groupby()函数的使用方法
import pandas as pd
# 只是用数据集中的前1000行数据
static_ad_feature = pd.read_csv('data/ad_static_feature_top10000.csv')
# 使用value_counts()统计一下数据集'Ad_account_id'列元素的唯一值
num_ad_count = dict(static_ad_feature['Ad_account_id'].value_counts())
print('Ad_account_id中唯一值的个数是:', len(num_ad_count))
# 首先按照Ad_account_id进行分组 然后统计每个分组中的元素的个数 最后将生成的元素个数从新命名
num_of_static_ad = static_ad_feature.groupby(['Ad_account_id']).size().reset_index().rename(columns={0: 'Exposure_data'})
print("num_of_static_ad:\n", num_of_static_ad.info())
验证merge()函数的使用方法
import pandas as pd
# 便于显示数据集中的行和列
pd.set_option('display.max_columns', 1000)
pd.set_option('display.width', 1000)
pd.set_option('display.max_colwidth', 1000)
pd.set_option('display.max_rows', None)
# 只是用数据集中的前1000行数据
static_ad_feature = pd.read_csv('data/ad_static_feature_top10000.csv')
name_static_ad_left = ['ad_id', 'Creation_time', 'Ad_account_id', 'Commodity_id']
static_ad_left = static_ad_feature[name_static_ad_left]
name_static_ad_right = ['ad_id', 'Creation_time', 'Ad_material_size']
static_ad_right = static_ad_feature[name_static_ad_right]
# how 的方式有‘left’, ‘right’, ‘outer’, ‘inner’
how = 'inner'
if how == 'inner':
Merge_Data = pd.merge(static_ad_left, static_ad_right, on=['ad_id', 'Creation_time'], how='inner')
print('Merge_Data:\n', Merge_Data.head(5))
elif how == 'left':
Merge_Data = pd.merge(static_ad_left, static_ad_right, on=['ad_id', 'Creation_time'], how='left')
print('Merge_Data:\n', Merge_Data.head(5))
elif how == 'right':
Merge_Data = pd.merge(static_ad_left, static_ad_right, on=['ad_id', 'Creation_time'], how='left')
print('Merge_Data:\n', Merge_Data.head(5))
else:
Merge_Data = pd.merge(static_ad_left, static_ad_right, on=['ad_id', 'Creation_time'], how='outer')
print('Merge_Data:\n', Merge_Data.head(5))
实验结果: