数据特征分析(二)

3 统计量分析

3.1 定义

用统计指标队定量数据进行统计描述,常从集中度趋势和离中度趋势两个方面进行分析

3.2 集中度趋势

指一组数据向某一中心靠拢的倾向,核心在于寻找数据的代表值或中心值

3.2.1 均值(算术平均数)

有时,为了反映在均值中不同成分所占的不同重要程度,为数据集中的每一个xi赋予fi
类似,频率分布表的平均数(x1f1 + x2f2 + ... + xifi) / (f1 + f2 + ... + fi) ((f1 + f2 + ... + fi) 为1) fi为xi在i组中的频数

data = pd.DataFrame({'value':np.random.randint(100,120,100),
                    'f':np.random.rand(100)})
data['f'] = data['f'] / data['f'].sum()  # f为权重,这里将f列设置成总和为1的权重占比
print(data.head())
# 创建数据
mean = data['value'].mean()
print('简单算数平均值为:%.2f' % mean)
# 简单算数平均值 = 总和 / 样本数量 (不涉及权重)
mean_w = (data['value'] * data['f']).sum() / data['f'].sum()
print('加权算数平均值为:%.2f' % mean_w)
# 加权算数平均值 = (x1f1 + x2f2 + ... + xnfn) / (f1 + f2 + ... + fn)

f为权重

简单算数平均值为:109.27
加权算数平均值为:108.46

均值作为一个统计量,对极端值很敏感,如果数据中存在极端值或者数据是偏态分布,均值不能很好的度量数据的集中趋势,需去掉极端异常值

3.2.2 中位数(位置平均数)

将一组观测值按从小到大的顺序排列,位于中间的那个数。即在全部数据中,小于和大于中位数的数据个数相等

med = data['value'].median()
print('中位数为%i' % med)

中位数为109

3.2.3 众数

数据集中出现最频繁的值,众数不具有唯一性,并不经常用来度量定性变量的中心位置,更适用于定性变量,一般用于离散型变量而非连续性变量

m = data['value'].mode()
print('众数为',m.tolist())

众数为112

data['value'].plot(kind = 'kde',style = '--k',grid = True)
# 密度曲线

plt.axvline(mean,hold=None,color='r',linestyle="--",alpha=0.8)  
plt.text(mean + 5,0.005,'简单算数平均值为:%.2f' % mean, color = 'r')
# 简单算数平均值

plt.axvline(mean_w,hold=None,color='b',linestyle="--",alpha=0.8)  
plt.text(mean + 5,0.01,'加权算数平均值:%.2f' % mean_w, color = 'b')
# 加权算数平均值

plt.axvline(med,hold=None,color='g',linestyle="--",alpha=0.8)  
plt.text(mean + 5,0.015,'中位数:%i' % med, color = 'g')
# 中位数


数据符合正太分布,所以中位数及均值较为集中

3.3 离中趋势量

指一组数据中各数据以不同程度的距离偏离中心的趋势

3.3.1 极差
data = pd.DataFrame({'A_sale':np.random.rand(30)*1000,
                    'B_sale':np.random.rand(30)*1000},
                   index = pd.period_range('20170601','20170630'))
print(data.head())
print('------')
# 创建数据
# A/B销售额量级在同一水平
a_r = data['A_sale'].max() - data['A_sale'].min()
b_r = data['B_sale'].max() - data['B_sale'].min()
print('A销售额的极差为:%.2f, B销售额的极差为:%.2f' % (a_r,b_r))

A销售额的极差为:990.78, B销售额的极差为:921.67

极差队数据集的极端值非常敏感,并且忽略了位于最大值和最小值之间的数据分布

3.3.2 标准差

度量数据偏离均值的程度,标准差越大,离中趋势越明显

a_std = data['A_sale'].std()
b_std = data['B_sale'].std()
print('A销售额的标准差为:%.2f, B销售额的标准差为:%.2f' % (a_std,b_std))

A销售额的标准差为:255.51, B销售额的标准差为:260.38

q2a = data['A_sale'].median()
q2b = data['B_sale'].median()

fig = plt.figure(figsize = (12,4))
ax1 = fig.add_subplot(1,2,1)
data['A_sale'].plot(kind = 'kde',style = 'k--',grid = True,title = 'A密度曲线')
plt.axvline(q2a,hold=None,color='r',linestyle="--",alpha=0.8)  
plt.axvline(q2a - a_std,hold=None,color='b',linestyle="--",alpha=0.8)  
plt.axvline(q2a + a_std,hold=None,color='b',linestyle="--",alpha=0.8)  
# A密度曲线,1个标准差

ax2 = fig.add_subplot(1,2,2)
data['B_sale'].plot(kind = 'kde',style = 'k--',grid = True,title = 'B密度曲线')
plt.axvline(q2b,hold=None,color='r',linestyle="--",alpha=0.8)  
plt.axvline(q2b - b_std,hold=None,color='b',linestyle="--",alpha=0.8)  
plt.axvline(q2b+ b_std,hold=None,color='b',linestyle="--",alpha=0.8)  
# B密度曲线,1个标准差


AB产品符合正太分布,离中位数一个标准差区间密度图

如果数据符合正太分布,超过距离平均值3个标准差的值出现的概率为P 小于0.3%,属于极个别小概率事件,定于为异常值

3.3.3 四分卫间距(分位差)

是上四分卫数Qu与下四分卫数Ql之差,期间包含了全部观测值的一半,其值越大,说明数据的变异程度越大。

a_iqr =data['A_sale'].quantile(0.75)-data['A_sale'].quantile(0.25)
b_iqr =data['B_sale'].quantile(0.75)- data['B_sale'].quantile(0.25)
print('A销售额的分位差为:%.2f, B销售额的分位差为:%.2f' % (a_iqr,b_iqr))

A销售额的分位差为:358.99, B销售额的分位差为:439.30

color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Gray')
data.plot.box(vert=False,grid = True,color = color,figsize = (10,3))
# 绘制箱型图
箱型图

通过箱型图识别异常值,通常被定义为小于QL-1.5IQR或大于Qu+1.5IQR的值。IQR即为四分卫间距。
箱型图依据实际数据绘制,没有对数据作限制性要求,且四分位数具有一定的鲁棒性:多达25%的数据可以变得任意远而不会很大的扰动四分位数,即异常值不能对四分位比标准施加影响。

4 周期性分析

周期性分析师探索某个变量是否随着时间变化而呈现出某个周期性变化趋势
时间尺度相对较长的周期性趋势有年度周期性趋势,季节性周期性趋势,周度周期性趋势,甚至更短的天,小时周期性趋势

5 贡献度分析(帕累托分析)

原理为帕累托法则,又为20/80定律。例如对于一个公司,80%利润来自于20%的畅销产品,而其他80%的产品只产生了20%的利润
对于企业,应用贡献度分析可以重点改善盈利最高的前80%的产品,或者重点发展综合影响最高的80%部门

df = pd.read_excel(r'C:\chapter3 data\catering_dish_profit.xls',sheetname= 0,index_col='菜品名')
print(df)
菜品销售数据
data = df['盈利'].copy()
data.sort_values(ascending=False,inplace= True)
# 由大到小排列
p = data.cumsum()/data.sum()  # 创建累计占比,Series
key = p[p>0.8].index[0]  
# 找到累计占比超过80%时候的index
key_num = data.index.tolist().index(key) 
# 找到key所对应的索引位置

plt.figure(figsize = (10,4))
data.plot(kind = 'bar', color = 'g', alpha = 0.5, width = 0.7)  
plt.ylabel('盈利_元')
# 创建盈利柱状图
p.plot(style = '--ko', secondary_y=True)  # secondary_y → y副坐标轴
plt.axvline(key_num,hold=None,color='r',linestyle="--",alpha=0.8)  
plt.text(key_num+0.2,p[key],'累计占比为:%.3f%%' % (p[key]*100), color = 'r')  # 累计占比超过80%的节点
plt.ylabel('盈利_比例')
# 绘制营收累计占比曲

帕累托图

A1-A7占菜品种类的70%,贡献了85%的利润,企业应增加菜品A1-A7菜品的投入,减少A8~A10的投入以获得更高的盈利额

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,098评论 5 476
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,213评论 2 380
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 149,960评论 0 336
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,519评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,512评论 5 364
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,533评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,914评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,574评论 0 256
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,804评论 1 296
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,563评论 2 319
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,644评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,350评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,933评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,908评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,146评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 42,847评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,361评论 2 342

推荐阅读更多精彩内容