【2024_CUMCM】数据预处理、数据分析、数据可视化

目录

2023-c题-问题1

问题分析

偏度

峰度

箱线图

读图

重采样、降采样、升采样

重采样

降采样

升采样

解题代码


2023-c题-问题1

问题分析

问题说白了就是探究品类和销售量这两个数据他们各自内在联系 ,根据题意,我们先进行

据预处理 ,按照以往的步骤是针对缺失值、重复值、异常值。我认为这道题应该是探究特殊

,需要思考到情境下的特殊情况和特殊数据,再进行处理。然后就可以开始数据分析,通

过函数引入数量、均值、最值、百分位数、偏度、峰度 等描述统计量,并通过数据可视化

如热力图、箱线图、折线图、条形图、直方图更清晰探究其关联关系。

偏度

偏度(Skewness)是用来度量随机变量概率分布的不对称性的统计量。它可以帮助我们了解++数据分布的倾斜方向和程度++。

当偏度 < 0 时,概率分布图左偏;当偏度 = 0 时,表示数据相对均匀地分布在平均值两侧,不一定是绝对的对称分布;当偏度 > 0 时,概率分布图右偏。

峰度

峰度(Kurtosis)是用来度量随机变量概率分布的陡峭程度的统计量。它可以帮助我们了解数据分布的尖峭或平坦程度。峰度的计算公式为:

峰度的取值范围为 [1, +∞)。完全服从正态分布的数据的峰度值为 3。峰度值越大,概率分布图越高尖;峰度值越小,越矮胖

箱线图

是显示一组数据分散情况资料的统计图。

读图

从图中可以看出,南山区的房价最高,南山区、宝安区、福田区等的异常值很多,说明这些地区大部分房价高于均值。

重采样、降采样、升采样

相关参数

重采样

重采样是时间序列频率转换的过程,可以理解为++调整数据的时间分辨率++ 。在Python的Pandas库中,`***``resample```***函数用于执行重采样操作。

++重采样++ 可以将高频数据聚合到低频率++(降采样)++ ,也可以将低频数据转换为高频率++(升采样)++。

降采样

降采样是指从大量数据中选择一部分代表性样本的过程。

降采样是将高频数据转换为低频数据的过程。在降采样时,需要考虑`***closed和``label```***参数,它们分别决定了时间区间的闭合端点和聚合值的标签位置。

例如,如果想要将每天的数据聚合为每月的数据,可以使用resample('M')方法,其中'M'代表月度频率。

升采样

升采样是指增加数据集中样本数量的过程。

升采样是将低频数据转换为高频数据的过程。在升采样中,主要是++通过数据插值来填补缺失的值++。

例如,如果想要将每年的数据转换为每月的数据,可以使用resample('M')方法,并配合适当的插值方法(如ffill)来填充缺失的月份数据。

解题代码

python 复制代码
# %%
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import numpy as np

# %%
category = pd.read_excel('2023年数学建模C\附件1.xlsx')

# %%
data= pd.read_excel('2023年数学建模C\附件2.xlsx')

# %%
category

# %%
merge_data=pd.merge(data,category,how='left',on='单品编码')

# %%
merge_data.info()
merge_data

# %%
# 删除某列中的某个值
merge_data=merge_data[merge_data['销售类型']!='退货']

# %%
merge_data.drop(['扫码销售时间'],axis=1,inplace=True)

# %%
merge_data.drop(['是否打折销售'],axis=1,inplace=True)

# %%
merge_data.drop(['销售类型'],axis=1,inplace=True)

# %%
merge_data

# %%
# 透视表
pivot_table = merge_data.pivot_table(index='销售日期', columns='分类名称', values='销量(千克)', aggfunc='sum')
pivot_table

# %%
pivot_table.describe()

# %%
# 计算偏度
pivot_table.skew()

# %%
# 计算峰度
pivot_table.kurt()

# %%
df=pivot_table.resample('3M').sum()
df

# %%
dff=df.corr()
dff

# %%
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False

plt.rcParams['font.size'] = 12
plt.rcParams['xtick.labelsize']=12
plt.rcParams['ytick.labelsize']=12
plt.rcParams['axes.labelsize']=12
plt.rcParams['axes.titlesize']=12

# %%
plt.figure(figsize=(10, 6))
# 热力图上显示系数
sns.heatmap(dff, cmap='coolwarm', square=True, annot=True)
# sns.heatmap(dff, cmap='coolwarm', fmt=".2f", linewidths=.5, square=True, cbar_kws={"shrink": .5})
plt.title('各分类名称之间的相关系数热力图')
plt.show()

# %%
pivot_table2= merge_data.pivot_table(index='销售日期', columns='单品名称', values='销量(千克)', aggfunc='sum')
pivot_table2.describe()

# %%
pivot_table2.info()

# %%
pivot_table2

# %%
df2=pivot_table2.resample('3M').sum()

# %%
df_d=df2.describe()
df_d

# %%
# 计算峰度与偏度
s1=df2.skew()
s2=df2.kurt()
s1
d1=dict(s1)
d2=dict(s2)

# %%
df2_skew=pd.DataFrame(d1,index=['skew'],columns=s1.index)
df2_kurt=pd.DataFrame(d2,index=['kurt'],columns=s2.index)
df2_skew

# %%
# 按行合并
df_d = pd.concat([df_d, df2_skew, df2_kurt], axis=0)
df_d

# %%
# 选取前六列
dfff2 = df_d.iloc[:, :6]

# %%
# 画出折线图
dfff2.plot(kind='line', figsize=(10,8 ))
plt.title('各单品名称销量(千克)')
plt.show()

# %%
plt.figure(figsize=(10, 8))
sns.heatmap(dfff2, cmap='coolwarm', square=True, annot=True)
plt.title('各单品名称之间的相关系数热力图')
plt.show()

# %%
df_dd=pivot_table2.describe()
df_dd

# %%
label_list =df_dd.columns
# 从数据框中选择第一行数据,并使用sort_values()函数对其进行排序,使其按降序排列。
num_list1 =df_dd.iloc[0].sort_values(ascending=False)
plt.bar(label_list,num_list1)
plt.ylabel("销售数量")
plt.xticks(label_list)
plt.xlabel("单品名称")
plt.title("某公司2012-2013年前6个月出货量")
plt.legend()
plt.show()

# %%
x = df_dd.iloc[0].sort_values(ascending=False)  				#数据集
plt.boxplot(x)    				#垂直显示箱线图
plt.show()						#显示该图

# %%

相关推荐
数模竞赛Paid answer2 小时前
2023年MathorCup数学建模B题城市轨道交通列车时刻表优化问题解题全过程文档加程序
数学建模·数据分析·mathorcup
Watermelo6173 小时前
通过MongoDB Atlas 实现语义搜索与 RAG——迈向AI的搜索机制
人工智能·深度学习·神经网络·mongodb·机器学习·自然语言处理·数据挖掘
悟解了4 小时前
《数据可视化技术》上机报告
python·信息可视化·数据分析
Leo.yuan19 小时前
数据量大Excel卡顿严重?选对报表工具提高10倍效率
数据库·数据分析·数据可视化·powerbi
海边散步的蜗牛1 天前
学术论文写作丨机器学习与深度学习
人工智能·深度学习·机器学习·chatgpt·数据分析·ai写作
数模竞赛Paid answer1 天前
2023年MathorCup数学建模A题量子计算机在信用评分卡组合优化中的应用解题全过程文档加程序
数学建模·数据分析·mathorcup
爱睡觉的咋1 天前
GNN入门案例——KarateClub结点分类
人工智能·分类·数据挖掘·图神经网络
康谋自动驾驶1 天前
康谋分享 | 确保AD/ADAS系统的安全:避免数据泛滥的关键
数据分析·自动驾驶·汽车
封步宇AIGC1 天前
量化交易系统开发-实时行情自动化交易-3.4.1.2.A股交易数据
人工智能·python·机器学习·数据挖掘
m0_523674211 天前
技术前沿:从强化学习到Prompt Engineering,业务流程管理的创新之路
人工智能·深度学习·目标检测·机器学习·语言模型·自然语言处理·数据挖掘