
本文档旨在指导读者使用 Python 上传和读取数据集,并使用 Pandas 库进行简单线性回归分析。主要内容包括使用 Pandas 读取 Excel 文件,并演示如何构建一个简单的线性回归模型,其中涉及数据预处理、模型训练和结果展示的关键步骤。
1. 数据读取与准备
首先,我们需要使用 Pandas 库读取 Excel 文件。确保你已经安装了 Pandas 库。如果没有,可以使用 pip install pandas 命令进行安装。
import pandas as pd
# 定义 Excel 文件路径
excel_file_path = "/Users/zeinabhassano/Documents/Master's_thesis/Gender Inequality/Labor data/ILO modelled estimates/updated/employment by sex and age - ilo modelled estimates (thousands) - annual.xlsx"
# 使用 Pandas 读取 Excel 文件
try:
df = pd.read_excel(excel_file_path)
print("数据成功读取!")
print(df.head()) # 显示前几行数据
except FileNotFoundError:
print(f"错误:文件 {excel_file_path} 未找到。请检查文件路径是否正确。")
except Exception as e:
print(f"读取文件时发生错误:{e}")
注意事项:
- 确保文件路径正确。
- 如果 Excel 文件包含多个 sheet,可以使用 sheet_name 参数指定要读取的 sheet。例如:pd.read_excel(excel_file_path, sheet_name='Sheet1')
- try...except 块用于处理文件未找到或读取文件时可能发生的其他异常。
2. 数据预处理
在进行线性回归之前,我们需要对数据进行预处理。这包括处理缺失值、将性别变量转换为数值型变量(例如,男性为 0,女性为 1),以及选择合适的特征和目标变量。
立即学习“Python免费学习笔记(深入)”;
# 假设数据集中包含 'employment' 列(就业人数)和 'sex' 列(性别)
# 检查缺失值
print("缺失值统计:")
print(df.isnull().sum())
# 处理缺失值 (例如,使用均值填充)
df['employment'] = df['employment'].fillna(df['employment'].mean())
# 将性别变量转换为数值型变量
df['sex'] = df['sex'].map({'Male': 0, 'Female': 1}) # 假设原始数据中男性为 'Male',女性为 'Female'
# 打印处理后的数据信息
print("\n处理后的数据信息:")
print(df.head())注意事项:
- 缺失值的处理方法有很多种,例如填充均值、中位数、删除包含缺失值的行等。选择哪种方法取决于数据的具体情况。
- 性别变量的映射关系需要根据实际数据进行调整。
3. 线性回归模型构建
现在,我们可以使用 scikit-learn 库构建线性回归模型。确保你已经安装了 scikit-learn 库。如果没有,可以使用 pip install scikit-learn 命令进行安装。
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LinearRegression
from sklearn.metrics import mean_squared_error, r2_score
# 定义特征和目标变量
X = df[['sex']] # 性别作为特征
y = df['employment'] # 就业人数作为目标变量
# 将数据分为训练集和测试集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42) # 80%训练集,20%测试集
# 创建线性回归模型
model = LinearRegression()
# 训练模型
model.fit(X_train, y_train)
# 在测试集上进行预测
y_pred = model.predict(X_test)
# 评估模型
mse = mean_squared_error(y_test, y_pred)
r2 = r2_score(y_test, y_pred)
print("\n模型评估:")
print(f"均方误差 (MSE): {mse}")
print(f"R方 (R-squared): {r2}")
# 输出模型系数
print(f"\n模型系数 (Coefficient): {model.coef_}")
print(f"模型截距 (Intercept): {model.intercept_}")代码解释:
- train_test_split 函数用于将数据集划分为训练集和测试集,test_size 参数指定测试集的大小,random_state 参数用于设置随机种子,保证每次运行结果一致。
- LinearRegression 类用于创建线性回归模型。
- fit 方法用于训练模型。
- predict 方法用于在测试集上进行预测。
- mean_squared_error 函数用于计算均方误差,r2_score 函数用于计算 R 方。
- model.coef_ 和 model.intercept_ 分别表示模型的系数和截距。
注意事项:
- 本例中只使用了一个特征(性别)进行线性回归,实际应用中可以使用多个特征。
- 模型的评估指标有很多种,例如均方误差、R 方、平均绝对误差等。选择哪种指标取决于具体问题。
- 线性回归模型假设特征和目标变量之间存在线性关系,如果数据不满足这个假设,可能需要使用其他模型。
4. 结果解释与总结
通过上述步骤,我们成功地使用 Python 读取了 Excel 数据,并构建了一个简单的线性回归模型。 模型评估结果可以帮助我们了解模型在预测就业人数方面的表现。模型系数和截距则可以帮助我们理解性别对就业人数的影响方向和程度。
例如,如果模型系数为正,则表示女性的就业人数高于男性;如果模型系数为负,则表示男性的就业人数高于女性。系数的绝对值越大,表示性别对就业人数的影响越大。
总结:
本文档提供了一个使用 Python 进行简单线性回归的完整流程,包括数据读取、预处理、模型构建和评估。通过学习本文档,读者可以掌握使用 Pandas 和 scikit-learn 进行数据分析和建模的基本技能。在实际应用中,需要根据具体问题选择合适的特征、模型和评估指标,并进行适当的调优。










