【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()						#显示该图

# %%

相关推荐
机器不会学习CL4 小时前
回归预测|基于开普勒优化相关向量机的数据回归预测Matlab程序KOA-RVM 多特征输入单输出 含基础RVM
matlab·数据挖掘·回归
驭风少年君4 小时前
MATLAB 可视化基础:绘图命令与应用
matlab·信息可视化·数据分析
Code哈哈笑5 小时前
【Python 数据分析学习】Matplotlib 的基础和应用
python·学习·数据分析
科研小白_d.s11 小时前
python数据分析与可视化
开发语言·python·数据分析
妙龄少女郭德纲16 小时前
图计算:基于SparkGrpahX计算聚类系数
机器学习·数据挖掘·聚类
eeee~~19 小时前
NLP(文本处理技术)在数据分析中的应用实例
python·jupyter·自然语言处理·数据挖掘
diaobusi-8819 小时前
python数据分析 pandas库-数据的读取和保存
python·数据分析·pandas
APItesterCris1 天前
安全第一:API 接口接入前的防护性注意要点
服务器·网络·数据库·安全·数据挖掘
nice666601 天前
数据结构-树(基础,分类,遍历)
java·开发语言·数据结构·分类·数据挖掘
张人玉1 天前
数据可视化pyecharts——数据分析(柱状图、折线图、饼图)
信息可视化·数据挖掘·数据分析