首页 > 其他分享 >关于数据分析中的绘图分析的学习报告

关于数据分析中的绘图分析的学习报告

时间:2023-02-26 15:46:05浏览次数:31  
标签:数据分析 plt sale catering 学习 绘图 pd import data

一、箱型图分析
箱型图依据实际数据绘制,对数据没有任何限制性要求,只是真实直观地表现数据分布的本来面貌;箱型图判断异常值的标准以四分位数和四分位距为基础。其中四分位数具有一定的鲁棒性:多大25%的数据可以变得任意远而不会严重扰动四分位数,所以异常值不能对这个标准施加影响。由此可见,箱型图识别异常值的结果比较客观,在识别异常值方面有一定的优越性。
下面是使用python检测代码对餐饮日销额数数据异常值进行检测
`import pandas as pd
catering_sale = 'D:/a/data/catering_sale.xls' # 餐饮数据
data = pd.read_excel(catering_sale, index_col = u'日期') # 读取数据,指定“日期”列为索引列
print(data)
print(data.describe(),data.describe().max()-data.describe().min())

import matplotlib as mpl
mpl.use('TkAgg') # !IMPORTANT
import matplotlib.pyplot as plt # 导入图像库
plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签
plt.rcParams['axes.unicode_minus'] = False # 用来正常显示负号
plt.figure() # 建立图像
p = data.boxplot(return_type='dict') # 画箱线图,直接使用DataFrame的方法
x = p['fliers'][0].get_xdata() # 'flies'即为异常值的标签
y = p['fliers'][0].get_ydata()
y.sort() # 从小到大排序,该方法直接改变原对象
for i in range(len(x)):
if i>0:
plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.05 -0.8/(y[i]-y[i-1]),y[i]))
else:
plt.annotate(y[i], xy = (x[i],y[i]), xytext=(x[i]+0.08,y[i]))
plt.title("异常值检测箱型图(学号:3130)")
plt.show() # 展示箱线图`
得到的箱型图如下:

从箱型图可以看出,超过上下界的8个日销搜额数据可能为异常值。结合具体业务可以把865.0,4060.3,4065.2归为正常值,将22.0,51.0,60.0,6607.4,9106.44归为异常值。最后确定过滤规则为日销额在400元以下或5000元以上则属于异常数据。接下来编写过滤程序,对异常数据进行后续处理。

二、绘制频率直方图
对数据进行分布分析能揭示数据的分布特征和分布类型。对于定量数据,想要了解其分布形式是对称的还是非对称的、发现某些特大或特小的可疑值,可做出频率分布表、绘制频率分布直方图进行直观分析;对于定性数据,可以用饼图直观的显示其分布情况。
对”捞起生鱼片“在2014年第二个季度的销售数据绘制频率分布直方图
# 代码3-3 捞起生鱼片的季度销售情况 import pandas as pd import numpy as np catering_sale = 'D:/a/catering_fish_congee.xls' # 餐饮数据 data = pd.read_excel(catering_sale, names=['date', 'sale']) # 读取数据,指定“日期”列为索引 bins = [0, 500, 1000, 1500, 2000, 2500, 3000, 3500, 4000] labels = ['[0,500)', '[500,1000)', '[1000,1500)', '[1500,2000)', '[2000,2500)', '[2500,3000)', '[3000,3500)', '[3500,4000)'] data['sale分层'] = pd.cut(data.sale, bins, labels=labels) aggResult = data.groupby(by=['sale分层'])['sale'].agg([("sale", np.size)]) pAggResult = round(aggResult / aggResult.sum(), 2, ) * 100 import matplotlib as mpl import matplotlib.pyplot as plt mpl.use('TkAgg') # !IMPORTANT plt.figure(figsize=(8, 4)) # 设置图框大小尺寸 pAggResult['sale'].plot(kind='bar', width=0.6, fontsize=10) # 绘制频率直方图 plt.rcParams['font.sans-serif'] = ['SimHei'] # 用来正常显示中文标签 plt.title('季度销售额频率分布直方图 (学号:3130)', fontsize=10) plt.show()
得到直方图如下:

三、定性数据的分布分析——饼图和条形图
对于定性变量,经常根据变量的分类类型来分组,可以采用饼图和条形图来描述定性变量的分布。
饼图的每一个扇形部分代表每一个类型的所占百分比或频数,根据定性变量的类型数目将饼图分成几个部分,每一部分的大小与每一类型的频数成正比;条形图的高度代表每一个类型的百分比或频数,条形图的宽度是没有意义的。
python代码如下:
`import pandas as pd
import matplotlib as mpl
mpl.use('TkAgg') # !IMPORTANT
import matplotlib.pyplot as plt
catering_dish_profit = 'D:/a/data/catering_dish_profit.xls'
data = pd.read_excel(catering_dish_profit)

饼图

x = data['盈利']
labels = data['菜品名']
plt.figure(figsize=(8,6))
plt.pie(x,labels=labels) #绘制饼图
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.title('菜品销售量分布(学号:3130)')
plt.axis('equal') #作图为正方形
plt.show()

条形图

x=data['菜品名']
y=data['盈利']
plt.figure(figsize=(8,4))
plt.bar(x,y)
plt.rcParams['font.sans-serif'] = 'SimHei'
plt.xlabel('菜品')
plt.ylabel('销量')
plt.title('菜品销售量分布条形图(学号:3130)')
plt.show()`
得到饼图和条形图如下图所示:

四、对比分析——折线图
对比分析是把两个相互联系的指标进行比较,从数量上展示和说明研究对象规模的大小、水平高低、速度快慢以及各种关系是否协调。特别适用于指标间的横纵向比较、时间序列的比较分析。在对比分析中,选择合适的对比标准是十分关键的。
例如:以各菜品的销售数据为例,从时间维度上分析,可以看到A部门、B部门、C部门三个部门的销售金额随时间的变化趋势,可以了解在此期间哪个部门的销售金额比较高、趋势比较平稳;还从单一部门,例如B部门,来做分析,了解各年份的销售对比情况。
python代码如下:
`#部门之间销售额比较
import pandas as pd
import matplotlib as mpt
mpt.use('TKAgg')
import matplotlib.pyplot as plt
from pylab import mpl
mpl.rcParams["font.sans-serif"] = ["SimHei"]
data = pd.read_excel("D:/a/data/dish_sale.xls")
plt.figure(figsize=(8,4))
plt.plot(data['月份'],data['A部门'],color='green',label='A部门',marker='o') #图例
plt.plot(data['月份'],data['B部门'],color='red',label='B部门',marker='s')
plt.plot(data['月份'],data['C部门'],color='skyblue',label='C部门',marker='x')
plt.legend() #显示图例
plt.ylabel('销售额(万元)')
plt.title('3部门之间销售额的比较(学号:3130)')
plt.show()

B部门各年份之间销售金额的比较

data = pd.read_excel("D:/a/data/dish_sale_b.xls")
plt.figure(figsize=(8,4))
plt.plot(data['月份'],data['2012年'],color='green',label='A部门',marker='o') #图例
plt.plot(data['月份'],data['2013年'],color='red',label='B部门',marker='s')
plt.plot(data['月份'],data['2014年'],color='skyblue',label='C部门',marker='x')
plt.legend()
plt.ylabel('销售额(万元)')
plt.title('B部门各年份销售额的比较(学号:3130)')
plt.show()`

得到的折线图如下图所示


总体来看,3个部门的销售额呈递减趋势;A部门和C部门的递减趋势比较平稳;B部门的销售额下降趋势比较明显,进一步分析造成这种现象的原因,可能是原材料不足。

五、统计量分析
用统计指标对定量数据进行统计描述,常从集中趋势和离中趋势两个方面进行分析。平均水平指标是对个体集中趋势的度量,使用最广泛的是均值和中位数;反应变异程度的指标则是对个体离开平均水平的度量,使用较广泛的是标准差、四分位间距。
针对餐饮销量数据进行统计量分析如下:
import pandas as pd
catering_sale = 'D:/a/data/catering_sale.xls'
data = pd.read_excel(catering_sale,index_col='日期') #指定“日期”列为索引
data = data[(data['销量']>400)&(data['销量']<5000)] #过滤异常数据
statistics = data.describe() #保存基本统计量
statistics.loc['range'] = statistics.loc['max']-statistics.loc['min'] #极差
statistics.loc['var'] = statistics.loc['std']-statistics.loc['mean'] #变异系数
statistics.loc['dis'] = statistics.loc['75%']-statistics.loc['25%'] #四分位数间距
print(statistics)
结果如下:

六、周期性分析
周期性分析是探索某个变量是否随着时间的变化而呈现出某种周期变化趋势。
要对正常用户和窃电用户在2012年2月份与3月份日用电量进行预测,可以分别分析正常用户和窃电用户的日用电量的时序图,来直观地估计其用电量变化趋势。代码如下:
`import pandas as pd
import matplotlib as mpt
mpt.use('TKAgg')
import matplotlib.pyplot as plt
df_normal = pd.read_csv("D:/a/data/user.csv")
plt.figure(figsize=(8,4))
plt.plot(df_normal["Date"],df_normal["Eletricity"])
plt.xlabel("日期")

设置x轴刻度间隔

x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.ylabel("每日电量")
plt.title("正常用户电量趋势(学号3130)")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()

窃电用户用电趋势

df_steal = pd.read_csv("D:/a/data/Steal user.csv")
plt.figure(figsize=(10,9))
plt.plot(df_steal["Date"],df_steal["Eletricity"])
plt.xlabel("日期")
plt.ylabel("日期")

设置x轴刻度间隔

x_major_locator = plt.MultipleLocator(7)
ax = plt.gca()
ax.xaxis.set_major_locator(x_major_locator)
plt.title("窃电用户电量趋势(学号3130)")
plt.rcParams['font.sans-serif'] = ['SimHei']
plt.show()
`

总体来看,正常用户和窃电用户在2012年2月份与3月份日用电量呈现出周期性,以周为周期,因为周末不上班,所以周末用电量较低。工作日和非工作日的用电量比较平稳,没有太大的波动。而窃电用户在2012年2月份和3月份日用电量呈现出递减趋势,同样周末的用电量是最低的。

标签:数据分析,plt,sale,catering,学习,绘图,pd,import,data
From: https://www.cnblogs.com/chendongcheng/p/17156339.html

相关文章

  • Hadoop阶段-学习总结
    Hadoop阶段学习总结第一部分:HDFS相关问题一、描述一下HDFS的数据写入流程​ 首先由客户端想NameNode服务发起写数据请求,NameNode接收到请求后会进行基本验证,验证内容包......
  • 基于 Haar 级联分类器进行人脸识别学习项目
    提前准备Haar级联分类器使用Haar识别人脸数据,Haar来源于Opencv官网:https://opencv.org/releases/。Windows直接下载安装即可,Linux参考其他教程。python......
  • 第一周,python绘图
    1.不同菜品在某段时间的销售量的分布情况(饼图和条形图)importpandasaspdimportmatplotlib.pyplotaspltcatering_dish_profit='catering_dish_profit.xls'#餐......
  • Hbase学习三:Hbase常用命令总结
    转载请注明出处:1.Hbase连接1.1.进入hbase命令行hbaseshell#或bin/hbaseshell1.2.查看帮助help1.3.查看所有表list2.表操作2.1.创建表create'user'......
  • 2023、2、25-26学习总结
    工程目录:bean:通过bean传递servlet中的数据给daopackageBean;publicclassbean{privateStringwords;privateintid;publicStringgetWo......
  • limit offset慢查询学习
    转自:https://cloud.tencent.com/developer/article/19622761.用法 1.select*fromarticleLIMIT1,32.select*fromarticleLIMIT3OFFSET1均表示略过第一条......
  • LWIP学习记录------ARP协议(1)
    关于LWIP网络协议在嵌入式设备使用越来越广泛,还是要好好学习一下,之前也看过一些资料,总是学了又忘(可能实践的太少了吧!!)。所以本文重新整理一下笔记。共同进步!(一)ARP基础知......
  • python 的 Type Hint 类型标注学习笔记
    学习笔记,用于本人忘记知识点时回顾。int在变量后加int即可声明该变量为int类型,当调用该函数时,如果填入的参数不为int类型,则报错。函数名后加->int声明该函数......
  • 《分布式技术原理与算法解析》学习笔记Day23
    分布式数据复制我们在进行分布式数据存储设计时,通常会考虑对数据进行备份,以提高数据的可用性和可靠性,“数据复制技术”就是实现数据备份的关键技术。什么是数据复制技术?......
  • Python 学习05 函数
    49、函数的定义50、函数的参数51、灵活地使用函数参数......