使用python进行数据清洗及ols回归分析

本文使用jupyter平台进行回归分析,相比pycharm而言,jupyter可分布查看各个步骤结果,能及时发现问题

import pandas as pd
from matplotlib import pyplot as plt
from sklearn.linear_model import LinearRegression
import statsmodels.api as sm
import numpy as np
# 1、读取数据
df = pd.read_csv("2021-2-7all_year.csv")
df.head()
df.shape

# 2、数据预处理
# 2.1 缺失值处理
df['是否套期(年报)'] = df['是否套期(年报)'].fillna(value=0)  # 缺失值用0填充
df = df.dropna(subset=["托宾q","是否套期(年报)",'是否套期(公告)','ln_资产总计','资产负债率','营业收入增长率A','速动比率','股权集中度'])  # 删除缺失数据速动比率

# 2.2数值变换
df['ln_资产总计'] =np.log(df['资产总计'].values+1) # 变换log类型
df['股权集中度'] = df['股权集中指标4(%)']*0.01 #将百分数变为小数
df.describe()  # 做描述统计
df.info()    # 统计数据类型及个数

# 2.3数值类型变换
# df = pd.DataFrame(df,dtype=np.float)
df['托宾q']=pd.to_numeric(df['托宾q'],errors='coerce')  # 2.4.1转换数值类型为float
df['托宾q'].dtype
df['风险因子_流通市值加权_Beta_TMV']=pd.to_numeric(df['风险因子_流通市值加权_Beta_TMV'],errors='coerce')
df['风险因子_流通市值加权_Beta_TMV'].dtype
df.describe()

# 2.4 异常值处理
# 绘制箱线图(1.5倍的四分位差,如需绘制3倍的四分位差,只需调整whis参数)
plt.boxplot(x=df['托宾q'])
plt.show()
df.info()

# 3.模型搭建 
x = df[['是否套期(年报)','ln_资产总计','资产负债率','营业收入增长率A','速动比率','股权集中度']]
y = df['托宾q']
estimator = LinearRegression().fit(x,y)
y_pre = estimator.predict(x)

# 4.线性回归方程的构造
print('系数a:'+str(estimator.coef_))
print('系数b:'+str(estimator.intercept_))

# 5模型评估-ols
X = sm.add_constant(x)
est = sm.OLS(y,X).fit()
# result = est.fit()
est.summary()

回归分析的关键在于数据处理,要充分利用df.info()以及df.describe()函数,观察数据类型、异常值、缺失值等,进一步做处理

上一篇:(四)机器学习---线性回归简单介绍


下一篇:cv2.matchTemplate()函数的应用,匹配图片后画出矩形