Python——租房信息数据分析

数据源:在百度网盘喏,自行下载。
在这里插入图片描述
链接:https://pan.baidu.com/s/1bJbwmBza9KAmWMmXi4se7A
提取码:ru68

1、线性回归模型

线性回归模型在Python第三方模块 sklearn 模块下的 linear_model 模块中。使用时先进行导入。

线性回归建模的函数为: sklearn.linear_model.LinearRegression
在这里插入图片描述

2. 销售收入预测

假设某电商已投入了1-6月的广告费,广告费的投入情况保存在文件“广告宣传支出.xls”中,文件“销售收入.xls”中是这6个月对应的销售收入情况,分析广告费和销售收入的关系,对某电商的销售收入进行分析与预测,然后通过投入广告费预测未来销售收入。

导入并查看数据;
按月度统计销售收入和广告费支出;
建立线性回归模型,以月度收入和支出拟合线性模型(见“销售收入预测.ipynb”)
7月预计投入60000元广告费,使用线性模型预测7月销售收入;
画出1-6月的广告费支出和销售收入的散点图,以及预测回归线。
在这里插入图片描述

3. 导入数据

import pandas as pd
import numpy as np
# 导入广告宣传支出数据
ad_sale = pd.read_excel(r"./data/广告宣传支出.xls")
print(ad_sale.head())
print("清洗前缺失值的数目:\n",ad_sale.isnull().sum())

在这里插入图片描述

import pandas as pd
import numpy as np
# 销售收入数据
ad_gain = pd.read_excel(r"./data/销售收入.xls")
print(ad_gain)
print("清洗前缺失值的数目:\n",ad_gain.isnull().sum())

在这里插入图片描述
在这里插入图片描述
从上面输出数据来看,共有24541条数据,而售后退货单号"NAN"值为24514, 所以这个表格数据是不需要进行清洗的。

4. 处理日期数据

要求:

  1. 日期数据的转换与处理
  2. 按月度统计
# 日期数据的转换与处理
ad_sale["投放日期"] = pd.to_datetime(ad_sale["投放日期"]) #将数据类型转换为日期类型
ad_gain["业务日期"] = pd.to_datetime(ad_gain["业务日期"])
df1 = ad_sale[["投放日期","支出"]]
df2 = ad_gain[["业务日期","金额"]]
df1 = df1.set_index("投放日期") # 设置index
df2 = df2.set_index("业务日期")
print(df2)
print(df1.shape)
print(type(df1))
print(df1.index)
print('---'*25)
print(df2.shape)
print(type(df2))
print(df2.index)

在这里插入图片描述

# 按月度统计
df1_M = df1.resample('M').sum().to_period('M') # 按月度统计并显示
df2_M = df2.resample('M').sum().to_period('M')
# 创建含有月度收入和支出的数据
d_count = pd.concat([df1_M,df2_M],axis=1) # 以列连接 两个表的数据
# d_count = d_count.reset_index(drop=True) # 消除索引

print(d_count)

在这里插入图片描述

5. 建立线性回归模型,利用线性拟合函数进行预测

  1. 线性回归建模
  2. 拟合线性模型
  3. 使用线性模型进行预测:7月预计投入60000元广告费,预测7月的收入
  4. 绘制实际月度销售收入和广告投入的散点图
  5. 绘制线性拟合直线
import matplotlib
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from sklearn import linear_model
matplotlib.rcParams['font.sans-serif']=['SimHei']
matplotlib.rcParams['axes.unicode_minus']=False

X = pd.DataFrame(d_count["支出"]) # 广告支出
Y = pd.DataFrame(d_count["金额"]) # 广告收益
clf=linear_model.LinearRegression()
clf.fit(X,Y)
z = clf.predict(X)
print(clf.score(x,y)) # 0.602439003329331
plt.figure(figsize=(8,6))
plt.scatter(x, y,color='r') 
plt.scatter(60000, z[-1],color='k') # 预测点
plt.plot(x, z, color="b") # 预测回归
plt.title("预测回归")
plt.xlabel("广告支出")
plt.ylabel("广告收益")
plt.savefig(r"C:\Users\锦樽\Desktop\预测回归.png",dpi=400)
plt.show()

在这里插入图片描述

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐