全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
186 0
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进行多数据库合并与结构优化 https://bbs.pinggu.org/thread-15729082-1-1.html

一、任务目标
CFPS 数据中,每位受访者都有唯一的 pid(个人编号)和 fid(家庭编号)。为了研究代际关系与家庭结构,需要将个人数据重新组合成“家庭面板结构”,如子女与父母在一张表中显示,方便进行代际分析、资源配置研究等。

二、技术步骤与处理流程
1. 家庭关系重新定义
根据 CFPS 的 relation 字段判断个体与户主之间的关系。
例如:
        1 = 户主
        2 = 户主配偶
        3 = 户主子女
根据该字段提取子女(relation=3)记录,并保留其 fid(家庭号)、pid(子女号)、age、education 等信息。
2. 构造子女面板数据结构
每条记录是一个子女,附带其家庭号及自身信息。如果多个子女属于同一家,最终结果可用于后续聚合分析(如家庭教育投资、代际支持等)。
3. 批量处理变量与标签
使用 Python 的 rename() 将变量改为标准化结构,例如将 age 改为 child_age。添加标签描述便于后续建模解释。
4. 合并家庭层级信息
使用 merge() 函数将子女信息与家庭主表(例如家庭经济数据)对齐。保留每个家庭对应的全部子女信息。

三、Python 示例代码框架
import pandas as pd

# 读取原始 CFPS 数据
df_person = pd.read_csv("cfps2018_person.csv")  # 包含 pid, fid, relation, age, gender 等字段
df_family = pd.read_csv("cfps2018_family.csv")  # 包含 fid 及家庭层信息,如收入、住房等

# 1. 提取子女记录
df_children = df_person[df_person['relation'] == 3].copy()

# 2. 构造子女面板
df_children_panel = df_children[['fid', 'pid', 'age', 'gender', 'edu_support']]
df_children_panel.rename(columns={
    'pid': 'child_pid',
    'age': 'child_age',
    'gender': 'child_gender',
    'edu_support': 'child_edu_support'
}, inplace=True)

# 3. 合并到家庭主表
df_family_extended = pd.merge(df_family, df_children_panel, on='fid', how='left')

# 4. 保存或查看结果
df_family_extended.to_csv("cfps_family_child_panel.csv", index=False)

四、说明与建议
如果家庭中有多个子女,建议对 df_children_panel 做 groupby('fid') 聚合处理。
可添加更多子女变量,如 health_score、math_score 等用于研究家庭教育投入。
后续模块可结合家庭经济数据做面板回归、层级建模、多层网络分析等。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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