欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 2025.01.15python商业数据分析

2025.01.15python商业数据分析

2025/2/5 15:38:16 来源:https://blog.csdn.net/2301_80917747/article/details/144758139  浏览:    关键词:2025.01.15python商业数据分析
# # 一、 导入项目
import pandas as pd#
# # 文件路径为python文件位置下的相对路径
dwx = pd.read_excel("电商案例数据及数据说明/驱虫剂市场/电蚊香套装市场近三年交易额.xlsx", )
fmfz = pd.read_excel("电商案例数据及数据说明/驱虫剂市场/防霉防蛀片市场近三年交易额.xlsx")
msmc = pd.read_excel("电商案例数据及数据说明/驱虫剂市场/灭鼠杀虫剂市场近三年交易额.xlsx")
mz = pd.read_excel("电商案例数据及数据说明/驱虫剂市场/盘香灭蟑香蚊香盘市场近三年交易额.xlsx")
wxq = pd.read_excel("电商案例数据及数据说明/驱虫剂市场/蚊香加热器市场近三年交易额.xlsx")
wxp = pd.read_excel("电商案例数据及数据说明/驱虫剂市场/蚊香片市场近三年交易额.xlsx")
wxy = pd.read_excel("电商案例数据及数据说明/驱虫剂市场/蚊香液市场近三年交易额.xlsx")
# # 使用head()方法查看前5行数据
# print(dwx.head())
# # 使用tail()方法查看后5行数据
# print(dwx.tail())
# # 使用info()方法查看数据的字段及类型
# dwx.info()
#
#
# 用sum方法汇总数据
dwx_all = dwx['交易金额'].sum()  # 汇总单张表格数据
fmfz_all = fmfz['交易金额'].sum()
msmc_all = msmc['交易金额'].sum()
mz_all = mz['交易金额'].sum()
wxq_all = wxq['交易金额'].sum()
wxp_all = wxp['交易金额'].sum()
wxy_all = wxy['交易金额'].sum()# 二、合并数据
# 将7张表格的数据汇总并形成一张表
m_sum = pd.DataFrame(data=[dwx_all, fmfz_all, msmc_all, mz_all, wxq_all, wxp_all, wxy_all], columns=['销售额'],index=['电蚊香', '防霉防蛀', '灭鼠灭虫', '灭蟑', '蚊香加热器', '蚊香片', '蚊香液'])
m_sumtext = pd.DataFrame(data=[dwx_all, fmfz_all, msmc_all, mz_all, wxq_all, wxp_all, wxy_all], columns=['销售额'],index=['电蚊香', '防霉防蛀', '灭鼠灭虫', '灭蟑', '蚊香加热器', '蚊香片', '蚊香液'])
print(m_sum)
print(m_sumtext)# 三、 补齐数据
dwx.rename(columns={'交易金额': '电蚊香'}, inplace=True)
fmfz.rename(columns={'交易金额': '防霉防蛀'}, inplace=True)
msmc.rename(columns={'交易金额': '灭鼠灭虫'}, inplace=True)
mz.rename(columns={'交易金额': '灭蟑'}, inplace=True)
wxq.rename(columns={'交易金额': '蚊香加热器'}, inplace=True)
wxp.rename(columns={'交易金额': '蚊香片'}, inplace=True)
wxy.rename(columns={'交易金额': '蚊香液'}, inplace=True)# 开始合并数据
d = pd.merge(dwx, fmfz, on='时间')
for df in [msmc, mz, wxq, wxp, wxy]:d = pd.merge(d, df, on='时间')
print(d)print(d.head())
print(d.tail())# 补齐缺失月份数据
# 预测一个叶子行业的12月数据
# 索引2017年12月分数据
t17 = d.where(d.时间 == '2017-12-1').dropna()
# 同理将2016年12月和2015年12月的数据也索引出来
t16 = d.where(d.时间 == '2016-12-1').dropna()
t15 = d.where(d.时间 == '2015-12-1').dropna()
# 将2015年,2016年,2017年三年的数据合并
t4 = pd.concat([t17, t16, t15])
# 由于我们的目的是用2015-2017年3年的12月份数据来进行回归建模,预测2018年12月数据
# 因此,此处我们选用2015,2016,2017作为x变量,每一年12月份的数据作为y变量
y = t4.drop('时间', axis=1)
# 设置x轴的年份。
x = [2017, 2016, 2015]
# 使用回归算法预测,先加载numpy和sklearn库。
import numpy as np
from sklearn import linear_model# 将数据处理成回归模型所需要的形式。
x_train = np.array(x).reshape(-1, 1)
y_train = np.array(y.iloc[:, 0])
# 将线性模型实例化。
linear_reg = linear_model.LinearRegression()
# 训练模型。
linear_reg.fit(x_train, y_train)
# 输入自变量2018,预测2018年12月份的销售额。
y_2018_12 = linear_reg.predict(np.array([2018]).reshape(-1, 1)).round(1)
# 输出预测结果。
print(y_2018_12[0])
y_12 = []
for i in range(7):y_train = np.array(y.iloc[:, i])linear_reg = linear_model.LinearRegression()linear_reg.fit(x_train, y_train)y_pre = linear_reg.predict(np.array([2018]).reshape(-1, 1)).round(1)y_12.append(y_pre[0])
# 打印2018年个叶子行业12月份的预测结果。
print("打印2018年个叶子行业12月份的预测结果")
print(y_12)
# 预测11月的数据
# 提取2015到2017年11月的数据。
t1 = d.where(d.时间 == '2017-11-1').dropna()
t2 = d.where(d.时间 == '2016-11-1').dropna()
t3 = d.where(d.时间 == '2015-11-1').dropna()
t = pd.concat([t1, t2, t3])
y1 = t.drop('时间', axis=1)
# 写FOR循环,得到2018年所有类目11月份的预测值。
y_11 = []
for i in range(7):y1_train = np.array(y1.iloc[:, i])linear_reg = linear_model.LinearRegression()linear_reg.fit(x_train, y1_train)y_pre = linear_reg.predict(np.array([2018]).reshape(-1, 1)).round(1)y_11.append(y_pre[0])
# 打印2018年叶子行业11月份的预测结果。
print("得到2018年所有类目11月份的预测值")
print(y_11)
import datetimea1 = datetime.datetime.strptime('2018-11-1', '%Y-%m-%d')
y_11.insert(0, a1)
print(y_11)
a2 = datetime.datetime.strptime('2018-12-1', '%Y-%m-%d')
y_12.insert(0, a2)
print(y_12)
d.iloc[34] = y_12
d.iloc[35] = y_11
print(d.tail())
d.sort_values(by='时间', ascending=False, inplace=True)
d.reset_index(inplace=True)
del d['index']
print(d.head())
d2 = d.drop('时间', axis=1)
d['col_sum'] = d2.apply(lambda x: x.sum(), axis=1)
print(d.head())
print("_______________")
# 将 '时间' 列转换为日期时间类型
d['时间'] = pd.to_datetime(d['时间'])
# 提取 '时间' 列中的年份并存储在 'year' 列中
d['year'] = d['时间'].apply(lambda x: x.year)
# 对除 'year' 和 '时间' 外的其他列进行分组求和操作
data_sum = d.drop(columns=['时间']).groupby('year').sum()
print(data_sum)
import matplotlib.pyplot as pltyear = list(data_sum.index)
x = range(len(year))
y = data_sum['col_sum']
with plt.style.context('ggplot'):pl = plt.figure(figsize=(8, 6))plt.rcParams['font.family'] = ['SimHei']plt.plot(x, y)plt.title("近三年驱虫机市场趋势图")plt.xlabel('year')plt.ylabel('交易额')plt.xticks(x, year, fontsize=9, rotation=45)plt.show()with plt.style.context('ggplot'):pl = plt.figure(figsize=(8, 6))plt.rcParams['font.family'] = ['SimHei']plt.plot(x, data_sum.iloc[:, 0])plt.plot(x, data_sum.iloc[:, 1])plt.plot(x, data_sum.iloc[:, 2])
for a, b in zip(x, data_sum.iloc[:, 2]):plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=8)plt.rcParams['font.family'] = ['SimHei']plt.plot(x, data_sum.iloc[:, 3])plt.plot(x, data_sum.iloc[:, 4])plt.plot(x, data_sum.iloc[:, 5])plt.plot(x, data_sum.iloc[:, 6])
# 绘制驱虫市场各子市场占比趋势图
data_percentage = data_sum.copy()
for i in range(3):data_percentage.iloc[i] = round(data_percentage.iloc[i] / data_percentage.iloc[i, -1] * 100, 2)
del data_percentage['col_sum']
with plt.style.context('ggplot'):pl = plt.figure(figsize=(8, 6))plt.plot(x, data_percentage.iloc[:, 0])plt.plot(x, data_percentage.iloc[:, 1])plt.plot(x, data_percentage.iloc[:, 2])for a, b in zip(x, data_percentage.iloc[:, 2]):plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=8)plt.plot(x, data_percentage.iloc[:, 3])plt.plot(x, data_percentage.iloc[:, 4])plt.plot(x, data_percentage.iloc[:, 5])plt.plot(x, data_percentage.iloc[:, 6])for a, b in zip(x, data_percentage.iloc[:, 6]):plt.text(a, b + 0.05, '%.0f' % b, ha='center', va='bottom', fontsize=8)plt.title('近三年驱虫市场各子市场占比趋势')plt.xlabel('year')plt.ylabel('交易额')plt.xticks(x, year, fontsize=9, rotation=45)plt.legend(['电蚊香', '防霉防蛀', '灭鼠灭虫', '灭蟑', '蚊香加热器', '蚊香片', '蚊香液'])plt.show()

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com