Python数据处理:合并、缺失值处理与数据清洗
- 将数据集中user、ad、click三张表组合形成一张表,根据userid、ad_id进行组合形成user_ad表
假设三张表的数据如下:
user表:
| userid | gender | age | | ------ | ------ | ------ | | 1 | 'M' | '18-24' | | 2 | 'F' | '25-34' | | 3 | 'M' | '35-44' | | 4 | 'F' | '45-54' |
ad表:
| ad_id | ad_title | | ----- | -------- | | 101 | 'Ad A' | | 102 | 'Ad B' | | 103 | 'Ad C' | | 104 | 'Ad D' |
click表:
| userid | ad_id | click | | ------ | ----- | ----- | | 1 | 101 | 1 | | 1 | 102 | 0 | | 2 | 103 | 1 | | 3 | 104 | 1 | | 4 | 101 | 0 |
可以使用pandas库中的merge函数将三张表组合成一张表:
import pandas as pd
# 读取数据
user = pd.read_csv('user.csv')
ad = pd.read_csv('ad.csv')
click = pd.read_csv('click.csv')
# 将user、ad、click三张表组合成一张表
user_ad = pd.merge(user, click, on='userid')
user_ad = pd.merge(user_ad, ad, on='ad_id')
# 列出结果
print(user_ad)
输出结果:
| userid | gender | age | ad_id | click | ad_title | | ------ | ------ | ------ | ----- | ----- | -------- | | 1 | 'M' | '18-24' | 101 | 1 | 'Ad A' | | 1 | 'M' | '18-24' | 102 | 0 | 'Ad B' | | 2 | 'F' | '25-34' | 103 | 1 | 'Ad C' | | 3 | 'M' | '35-44' | 104 | 1 | 'Ad D' | | 4 | 'F' | '45-54' | 101 | 0 | 'Ad A' |
- 对缺失值进行处理、对用户数据性别和年龄层字段中为空值的记录删去
假设user_ad表中有一些记录的gender和age字段为空,需要对其进行处理。
可以使用pandas库中的fillna函数将缺失值填充为指定的值(如0):
# 将缺失值填充为0
user_ad.fillna(0, inplace=True)
# 列出结果
print(user_ad)
输出结果:
| userid | gender | age | ad_id | click | ad_title | | ------ | ------ | ------ | ----- | ----- | -------- | | 1 | 'M' | '18-24' | 101 | 1 | 'Ad A' | | 1 | 'M' | '18-24' | 102 | 0 | 'Ad B' | | 2 | 'F' | '25-34' | 103 | 1 | 'Ad C' | | 3 | 'M' | '35-44' | 104 | 1 | 'Ad D' | | 4 | 'F' | '45-54' | 101 | 0 | 'Ad A' |
如果需要将空值的记录删去,可以使用pandas库中的dropna函数:
# 删去gender或age为空的记录
user_ad.dropna(subset=['gender', 'age'], inplace=True)
# 列出结果
print(user_ad)
输出结果:
| userid | gender | age | ad_id | click | ad_title | | ------ | ------ | ------ | ----- | ----- | -------- | | 1 | 'M' | '18-24' | 101 | 1 | 'Ad A' | | 1 | 'M' | '18-24' | 102 | 0 | 'Ad B' | | 2 | 'F' | '25-34' | 103 | 1 | 'Ad C' | | 3 | 'M' | '35-44' | 104 | 1 | 'Ad D' | | 4 | 'F' | '45-54' | 101 | 0 | 'Ad A' |
原文地址: https://www.cveoy.top/t/topic/lVZi 著作权归作者所有。请勿转载和采集!