2025.01.15python商业数据分析

embedded/2024/12/29 0:19:50/
# # 一、 导入项目
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()

http://www.ppmy.cn/embedded/149594.html

相关文章

python数据分析之爬虫基础:解析

目录 1、xpath 1.1、xpath的安装以及lxml的安装 ?1.2、xpath的基本使用 ?1.3、xpath基本语法 2、JsonPath 2.1、jsonpath的安装 2.2、jsonpath的使用 2.3、jsonpath的基础语法 3、BeautifulSoup 3.1、bs4安装及创建 3.2、beautifulsoup的使用 3.3、beautifulsoup…

学习 Python 编程的规则与风格指南

文章目录 1. Python 编程规则1.1 Python 的哲学:The Zen of Python1.2 遵守 PEP 81.3 Python 是大小写敏感的1.4 使用 Pythonic 风格 2. Python 编程风格2.1 命名风格2.2 注释风格2.3 文档字符串(Docstring)2.4 空格使用2.5 文件和代码组织 3…

Dynamo:Amazon 的高可用键值仓储

大家觉得有意义和帮助记得及时关注和点赞!!! Dynamo 是 Amazon 的高可用分布式键值存储(key/value storage)系统。这篇论文发表 的时候(2007)它还只是一个内部服务,现在(改名为 DynamoDB)已经发…

OCR(三)windows 环境基于c++的 paddle ocr 编译【CPU版本】

目录 1. 下载 2. 编译 2.1 cmake 编译生成vs工程 2.2 修改源代码 2.3 生成 2.4 测试 PaddleOCR windows工具的编译 1. 下载 PaddleOCR2.8下载 Opencv4.10下载 Git下载 PaddlePaddle C++推理库

dolphinscheduler服务RPC心跳机制之实现原理与源码解析

RPC心跳机制设计 1.概述2.设计2.1.心跳机制流程设计2.1.1.常规RPC心跳机制设计2.1.2.Dolphinscheduler的RPC心跳机制设计2.2.心跳机制数据模型设计2.3.心跳机制动态配置3.实现3.1.心跳机制数据模型3.1.1.HeartBeat接口3.1.2.基础实现类BaseHeartBeat3.1.3.Master服务中的心跳消…

webRTC TURN服务器搭建

背景: 前言:如果还不清楚webrtc可以先看读这个文章webrtc的RTCPeerConnection使用_new rtcpeerconnection-CSDN博客 webRTC的RTCPeerConnection通讯,是p2p的通讯,配置的时候需要填写个stun和turn服务器 举例: cons…

家政预约小程序01搭建页面布局

目录 1 创建应用2 搭建页面布局3 设置页面背景色4 设置页面内容区域总结 我们前边已经完成了需求分析及设计工作,本篇开始就进入到具体的搭建。开发小程序先需要创建应用,应用和我们的需求相关,通常我们是有一个应用用来承载小程序&#xff0…

【Linux】小白如何看top命令及其他参数常识

top top 是 Linux 系统中用于实时监控系统性能的命令。它会显示系统的进程、内存、CPU 使用情况等信息。 top命令展示: top 反馈的各个字段的解释 1、第一行代表当前的时间、系统已运行时间(Uptime)、负载均衡(Load average)。 …