全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
235 1
2025-06-27
继续上两讲  模块一:CFPS 数据介绍及数据清理
https://bbs.pinggu.org/thread-15729023-1-1.html
模块二:AI+Python进行单数据库清理
https://bbs.pinggu.org/thread-15729080-1-1.html

模块三:AI+Python进行多数据库合并与结构优化
一、合并数据库的目标与挑战
在CFPS等纵向微观数据中,调查数据往往分布在多个数据库文件中(如个人问卷、家庭问卷、社区问卷),研究者需要将这些数据库有效合并(如按户号、个人号)才能开展分析。常见挑战包括主键不一致、重复值、数据年份混合等。

二、合并流程设计
加载多个数据库(如:个人表与家庭表)
检查主键完整性
按唯一主键合并
去除合并后重复行与异常值
结构调整与变量命名标准化

三、Python代码示例
import pandas as pd

# 加载两个典型数据库
df_person = pd.read_csv("cfps2018_person.csv")
df_family = pd.read_csv("cfps2018_family.csv")

# Step 1:统一主键名称,确保匹配键一致
df_person.rename(columns={'fid': 'family_id', 'pid': 'person_id'}, inplace=True)
df_family.rename(columns={'fid': 'family_id'}, inplace=True)

# Step 2:检查重复值或缺失
if df_person.duplicated(subset=['person_id']).any():
    df_person = df_person.drop_duplicates(subset=['person_id'])

# Step 3:合并数据库(家庭信息合并进个人层面)
merged_df = pd.merge(df_person, df_family, on='family_id', how='left')

# Step 4:结构调整(如只保留感兴趣变量)
final_df = merged_df[['person_id', 'family_id', 'age', 'gender', 'income', 'parent_edu', 'edu_support']]

# Step 5:保存为新文件
final_df.to_csv("cfps2018_merged_cleaned.csv", index=False)

四、常见问题与解决技巧
重复主键报错:使用 .drop_duplicates() 或 groupby().first() 保留一条记录。
匹配失败率高:确认 key 类型是否一致(例如是否都为字符串),可用 .astype(str) 统一。
合并后变量混乱:添加后缀 suffixes=('_person', '_family') 避免覆盖。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2025-6-28 11:52:55
点赞分享
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群