统计量分析主要包括集中趋势分析和离中趋势分析,主打的就是一个数据的再加工,从而体现整体数据的特征。
集中趋势度量
均值
有两种均值,一种是不带权值的均值,就是所有数的和除以数的个数。另一种是带权的均值,是每个数的权×这个数的值,然后求和,最后除以所有权的和;或者说直接是频率和该数的值乘积的和。
极端值对均值的影响极大。所以如果有极端值过于的离谱,可以考虑用中位数或则截断均值来描述集中趋势度量。(截断均值是指去掉高低端值的平均数)
中位数
一列数从小到大排列,中间的数叫中位数。如果数的个数是奇数,就是最中间的数。如果数的个数是偶数,中位数是中间两个数的均值。
众数
出现次数最多的数
离中趋势度量
极差
极差就是一系列数的最大值减去最小值
标准差
先求出来均值,每个数减去均得出来的数再平方,然后求和,最后和除以数的个数,最后这个值开二次方。
变异系数
标准差/均值,得到的就是变异系数。
四分位数间距
上四分位数-下四分位数,得到的数就是四分位数间距
下面展示如何用代码展现这些量:
我遇到的问题:
不了解loc函数在一坨数据中的定位的用法
解决办法:
具体的代码如下:
# -*- coding: utf-8 -*-
# 代码3-6 餐饮销量数据统计量分析
# 餐饮销量数据统计量分析
import pandas as pd#导入pandas库,并且用pd标记
catering_sale = 'D:\DataMiningCode\chapter3\demo\data\catering_sale.xls' # 用catering_sale标记餐饮数据
data = pd.read_excel(catering_sale, index_col = '日期') # 读取数据,用data标记读取的这个文件,指定“日期”列为索引列
data = data[(data['销量'] > 400)&(data['销量'] < 5000)] # 过滤异常数据,把data的'销量'列中小于等于400的数据和大于等于5000的数据项去掉
statistics = data.describe() # 对处理过的data使用describe方法,保存基本统计量
#以下使用loc方法,此方法是返回名称为***的数据,如果没有这个名称,就新设置一个这个名的名称
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)