python数据分析-水泥数据(时间序列分析)
本次分析综合考虑了TS公司过去五年的水泥销量数据,运用了时间序列分析的方法来揭示了销量的季节性模式,并预测了2024年的月度销量。通过数据准备、季节性分解、相关性分析和时间序列预测的综合方法,我们得出以下主要结论:1.季节性模式的识别:季节性分析揭示了水泥销量在一年中不同月份的规律性变化。尽管存在轻微的波动,但可以看出某些季节比其他季节的销量更高,这可能与建筑行业的季节性需求和天气条件相关。2.销
一、背景介绍
在当今经济环境中,数据分析在企业决策过程中扮演着越来越重要的角色。对于建材行业,尤其是水泥销售,准确的市场分析和预测对于保持竞争优势和优化资源配置至关重要。水泥,作为基础建设和房地产行业的关键原材料,其销量受到多种因素的影响,包括经济周期、建筑行业的发展趋势、季节性因素以及政策调整等。市场的多变性要求企业不仅要在现有数据的基础上作出反应,而且要能预测和塑造未来的趋势。
二、主要方法
数据准备:本次分析使用的是TS公司近五年的月度水泥销量数据。在进行深入分析之前,我们首先对数据集进行了细致的清洗和预处理工作,以确保分析结果的准确性和可靠性。
季节性分析:季节性分析利用了加法季节性分解方法,这是时间序列分析中一种强大的工具,用于区分数据中的不同模式。
相关性分析:
相关性分析是我们用来探索销量与月份之间可能存在的线性关系的方法。我们计算了销量与月份之间的皮尔逊相关系数,这个度量标准告诉我们:关联的强度:相关系数的绝对值大小告诉我们变量之间关系的强度。
时间序列预测:
时间序列预测的核心是ARIMA模型,它是预测未来值的经典方法。最终,我们使用选定的模型参数来预测2024年的销量,这些预测反映了基于历史数据趋势和季节性模式的合理估计。
三、实证分析
为了进行这项分析,我将采取以下步骤:
1.数据清洗和预处理:确保数据格式正确,并为分析做好准备。
2.季节性分析:利用时间序列分析方法,识别销量数据中的季节性模式。
3.相关性分析:分析销量与其他可能的影响因素(如月份)之间的相关性。
4.预测2024年销量:使用适当的时间序列预测模型,基于历史数据预测2024年的月度销量。
首先,我将开始数据清洗和预处理的工作。
读取数据:
import pandas as pd
file_path = 'TS公司近年水泥月度销量情况.xlsx'
sales_data = pd.read_excel(file_path)
sales_data.head()
随后检查缺失值,然后进行填充:
数据清洗和预处理完成。在您的数据集中,我发现有2个月的销量数据缺失。在进行后续分析之前,我们需要决定如何处理这些缺失值。通常,我们有以下几种选择:
插值:根据相邻数据点估算缺失值。
删除:直接删除缺失数据对应的行。
使用平均值或中位数填充:使用整个数据集或相邻时间点的平均值或中位数来填充缺失值。
# Filling missing values with the mean of the column
sales_data['销量'].fillna(sales_data['销量'].mean(), inplace=True)
# Check if all missing values are filled
remaining_missing_values = sales_data.isnull().sum()
remaining_missing_values, sales_data.head()
平均值填充了所有缺失的销量数据,现在数据集中没有任何缺失值了。
接下来,我将进行季节性分析,这将帮助我们理解销量数据是否显示出明显的季节性模式。
然后,我将进行相关性分析:
import matplotlib.pyplot as plt
import seaborn as sns
from statsmodels.tsa.seasonal import seasonal_decompose
# Seasonal decomposition of the sales data
decomposition = seasonal_decompose(sales_data['销量'], model='additive', period=12)
# Plotting the decomposition
plt.figure(figsize=(12, 8))
plt.subplot(411)
plt.plot(decomposition.observed, label='Original')
plt.legend(loc='upper left')
plt.subplot(412)
plt.plot(decomposition.trend, label='Trend')
plt.legend(loc='upper left')
plt.subplot(413)
plt.plot(decomposition.seasonal, label='Seasonal')
plt.legend(loc='upper left')
plt.subplot(414)
plt.plot(decomposition.resid, label='Residuals')
plt.legend(loc='upper left')
plt.tight_layout()
plt.show()
它展示了TS公司过去几年月度水泥销量的几个关键统计成分。图中从上到下分为四个部分:
原始(Original):这是最上面的图,展示了公司从2018年到2024年初的实际销量数据。这条线展示了所有的原始观测值,包括季节性变化、趋势以及其他不规则因素的影响。趋势(Trend):第二张图显示了销量数据的长期趋势,揭示了数据随时间的整体移动方向。趋势部分由原始数据中的季节性和不规则成分被移除后得到。在这里,可以看到销量呈现出一个温和的上升趋势。季节性(Seasonal):第三张图显示了数据的季节性部分,这反映了销量在一年中不同月份的规律性变化。此图表明销量在特定时期内的规律波动,可能与建筑行业的季节性需求和天气条件相关。残差(Residuals):最后一张图显示了残差部分,它代表了原始数据中除去趋势和季节性影响之后的随机波动。残差显示了数据中未被模型捕捉到的信息,理想情况下,残差应该是随机的,表明模型已经捕捉到数据中的所有系统性模式。
然后计算这些变量与销量之间的相关性。
import matplotlib.pyplot as plt
plt.rcParams ['font.sans-serif'] ='SimHei' #显示中文
plt.rcParams ['axes.unicode_minus']=False #显示负号
# Extracting month from the date
sales_data['月份'] = sales_data.index.month
# Calculating correlation between sales and month
correlation = sales_data[['销量', '月份']].corr()
# Plotting the correlation
plt.figure(figsize=(6, 4))
sns.heatmap(correlation, annot=True, cmap='coolwarm')
plt.title("Correlation between Sales and Month")
plt.show()
correlation
在这张热图中,我们可以看到销量(销量)和月份(月份)之间的相关系数约为0.16,显示在非对角线的两个方块中。这表明销量和月份之间存在轻微的正相关关系。换句话说,随着月份的增加(从一月到十二月),销量也有轻微的增长趋势。然而,0.16的相关系数表明这种关系是弱的,意味着销量与月份之间的直接线性关系不是特别强。
现在,我们已经完成了季节性和相关性分析,下一步是预测2024年的月度销量。
from statsmodels.tsa.arima.model import ARIMA
import warnings
# Ignoring warnings for model fitting
warnings.filterwarnings("ignore")
# Fit an ARIMA model
# Since the dataset is relatively small, we will try a simple ARIMA model
# Parameters (p,d,q) are set to 1, which are common starting points for ARIMA
model = ARIMA(sales_data['销量'], order=(1,1,1))
model_fit = model.fit()
# Forecasting sales for 2024
forecast_2024 = model_fit.forecast(steps=12)
forecast_2024
这张图展示了历史销量与对2024年的销量预测。蓝线表示从2018年到2023年的历史销量数据,而红线显示的是2024年的销量预测。
从图中可以看出,历史销量显示了一定的波动性,这可能表明季节性变化、市场需求的波动或其他影响销量的因素。特别是在某些年份,我们可以看到销量出现了尖峰,这可能是由于特定事件或季节性高峰造成的。对于2024年的预测,红线表示在整个年度中,销量预计将保持相对平稳的水平。然而,值得注意的是,实际的未来销量可能会由于多种未被模型捕捉的因素而与预测不同。这些因素包括宏观经济条件的变化、行业内的竞争动态、新产品的引入、市场营销活动的变化等。预测图表是商业决策和战略规划的重要工具,但必须谨慎解读,并结合业务知识和市场洞察力来全面评估。
四、总结
本次分析综合考虑了TS公司过去五年的水泥销量数据,运用了时间序列分析的方法来揭示了销量的季节性模式,并预测了2024年的月度销量。通过数据准备、季节性分解、相关性分析和时间序列预测的综合方法,我们得出以下主要结论:
1.季节性模式的识别:季节性分析揭示了水泥销量在一年中不同月份的规律性变化。尽管存在轻微的波动,但可以看出某些季节比其他季节的销量更高,这可能与建筑行业的季节性需求和天气条件相关。2.销量与月份的关联:相关性分析显示,销量与月份之间存在轻微的正相关关系,相关系数约为0.16。这表明销量随月份增加而有轻微上升的趋势,但这一关系并不强烈,说明还有其他因素在影响销量。3.2024年销量预测:使用ARIMA模型预测了2024年的月度销量。预测结果显示,销量在整个年度内将保持相对稳定,这可能反映了模型基于历史数据得出的趋势延续,但未必能捕捉到所有可能影响未来销量的因素。

GitCode 天启AI是一款由 GitCode 团队打造的智能助手,基于先进的LLM(大语言模型)与多智能体 Agent 技术构建,致力于为用户提供高效、智能、多模态的创作与开发支持。它不仅支持自然语言对话,还具备处理文件、生成 PPT、撰写分析报告、开发 Web 应用等多项能力,真正做到“一句话,让 Al帮你完成复杂任务”。
更多推荐
所有评论(0)