初学数据挖掘——数据探索(二):数据特征分析之分布分析

分布分析

分布分析能揭示数据的分布特征和分布类型。
对于定量数据:可以做出频率分布表、绘制频率分布直方图、绘制茎叶图进行直观分析;
对于定性分析:可以画出饼图和条形图直观的显示其分布情况。

1、定量数据的分布分析

一般步骤:

  1. 求极差 :极差 = 最大值 - 最小值
  2. 决定组距和组数:组距是每个区间的长度,组数 = 值域 / 组距
  3. 决定分点:分点是指每个区间的端点,这一步是要确定每组的起点和终点
  4. 列出频率分布表
  5. 绘制频率分布直方图

遵循原则:

  1. 分的各组之间必须是相互排斥的
  2. 各组必须将所有的数据包含在内
  3. 各组的组宽最好相等

实例:
按照销售量分组并计算频数

  1. 求极差:3960-45 = 3915
  2. 分组:根据业务数据取组距为500,则组数为3915/500=7.83,即共8组,
  3. 决定分点:依次为:[0,500),[500,1000),[1000,1500),[1500,2000),[2000,2500),[2500,3000),[3000,3500),[3500,4000)
  4. 绘制频率分布直方表
  5. 绘制频率分布直方图
import pandas as pd #导入所需包
import numpy as np
catering_sale = './data/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.pyplot as plt
plt.figure(figsize=(10,6))  # 设置图框大小尺寸
pAggResult['sale'].plot(kind='bar',width=0.8,fontsize=10)  # 绘制频率直方图
plt.rcParams['font.sans-serif'] = ['SimHei']  # 用来正常显示中文标签
plt.title('季度销售额频率分布直方图',fontsize=20)
plt.show()

在这里插入图片描述

原数据实例:

在这里插入图片描述
原数据取用:
链接:https://pan.baidu.com/s/1gA6KPwfI5Y26S2qm2Uipow
提取码:2677

2、定性数据的分析

定性数据常常根据变量的分类类型来分组,可以采用饼图和条形图来描述其分布。

import pandas as pd
import matplotlib.pyplot as plt
catering_dish_profit = './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('菜品销售量分布(饼图)')  # 设置标题
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('菜品')  # 设置x轴标题
plt.ylabel('销量')  # 设置y轴标题
plt.title('菜品销售量分布(条形图)')  # 设置标题
plt.show()  # 展示图片

在这里插入图片描述
饼图的每个扇形部分代表每一类型的所占百分比或频数
在这里插入图片描述
条形图(柱状图)的高度代表每一类型的所占百分比或频数,宽度没有意义。

原数据示例:
在这里插入图片描述
原数据取用:
链接:https://pan.baidu.com/s/1zHip89y-AkN2smq3ZE-5pw
提取码:2677

猜你喜欢

转载自blog.csdn.net/qq_45154565/article/details/109283869