全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
450 0
2025-06-26
一、CFPS 数据简介
CFPS(China Family Panel Studies)由北京大学社会科学调查中心发起,自2010 年起每两年进行一次全国性纵向跟踪调查,覆盖个人、家庭及社区层面,旨在反映中国经济、教育、健康、家庭等多维社会状况

抽样方式:采用分层多阶段概率抽样,保障样本可代表全国大约 25 个省份
数据结构:多个子数据集对应不同专题,如个人年龄、收入、教育、健康等,结构复杂,变量命名冗长且随波次变化。
常用变量:包括基本人口变量(如 age、gender)、家庭变量(如 household income)、社区变量(如社区医疗设施)等。
若想用 Python 高效处理 CFPS 数据,第一步是熟悉其波次结构、变量命名与权重使用,避免合并和清洗时出错。

二、数据清理原理
1. 数据清理流程与核心原则
加载阶段:用 pandas.read_sas() 或 pd.read_csv() 加载原始文件,结合 codebook 读取对应变量。
变量标准化:统一命名风格(如去掉后缀、调整小写),方便代码引用。
处理缺失值:判断是完全缺失(NA)、合法缺失(如 “拒答”),再决定填充策略:
数值类型:用中位数或均值填充;
类别类型:用出现频率最高者填充;
异常值(如年龄 > 120 或收入 < 0)设置为 NaN。
重复数据排查:尤为双层数据(家庭层 + 个人层)合并后,需要用主键 person_id + wave 判断重复条目。
变量类型转换:确保分类变量转换为 category,时间变量可解析为 datetime。

2. AI 加速工作流程
通过 deepseek 等语言模型可辅助:
自动读取 codebook 并生成变量重命名表;
推荐缺失值处理逻辑;
帮助定位“merge 重复值”来源,协助 debug。

三、Python 清理代码示例
import pandas as pd
import numpy as np

def load_cfps(path):
    return pd.read_sas(path, format='sas7bdat', encoding='utf-8')

# 加载示例数据
df = load_cfps('CFPS2018_individual.sas7bdat')

# 变量重命名 demo(借助 AI 或 codebook)
columns = {
    'RESPID': 'person_id',
    'AGE': 'age',
    'GENDER': 'gender',
    'HHDI': 'hh_income',
}
df.rename(columns=columns, inplace=True)

# 缺失值处理
df['age'] = df['age'].replace([-97, -98, -99], np.nan)
df['age'].fillna(df['age'].median(), inplace=True)

# 异常值排查
mask = (df['hh_income'] < 0) | (df['hh_income'] > 1e7)
df.loc[mask, 'hh_income'] = np.nan

# 重复记录检测
dupes = df.duplicated(subset=['person_id', 'wave'], keep=False)
if dupes.any():
    print(f"发现 {dupes.sum()} 条重复记录,需进一步合并或剔除")

# 格式转换
df['gender'] = df['gender'].map({1:'男', 2:'女'}).astype('category')

# 将清洗函数封装
def clean_cfps(df):
    df = df.rename(columns=columns)
    df['age'].replace([-97,-98,-99], np.nan, inplace=True)
    df['age'].fillna(df['age'].median(), inplace=True)
    mask = (df['hh_income']<0)|(df['hh_income']>1e7)
    df.loc[mask, 'hh_income'] = np.nan
    df['gender'] = df['gender'].map({1:'男',2:'女'}).astype('category')
    return df

df_clean = clean_cfps(df)
df_clean.to_csv('CFPS2018_cleaned.csv', index=False)

以上结构清晰的处理流程与标准化代码设计,有效应对 CFPS 数据的变量命名混乱、缺失值处理、重复值识别等常见痛点。可结合 AI 实现变量批量重命名、异常模式识别,辅助定位 merge 重复错误、提升处理效率。
如需进一步扩展至跨波次合并、面板数据构造、时间效应分割变量生成、merge 后样本完整性检测等高级内容,欢迎继续交流!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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