机器学习与数据挖掘大数据大数据 爬虫Python AI Sql

数据分析实战--统计分析

2019-04-19  本文已影响3人  勤奋的土豆鹿鹿

本文主要内容是对数据分布进行分析,主要是集中和离中趋势度量,包括了做观测数据的连续概率分布的估计等,同时也是matplotlib常用的几个部分的练习。

首先模块导入

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt

1、集中趋势度量

创建数据


data = pd.DataFrame({'value':np.random.randint(100,120,100),
                     'f':np.random.rand(100)})

f为权重,这里将f列设置成总和为1的权重占比1


data['f'] = data['f']/data['f'].sum()

(1)算数平均数

简单算数平均值 = 总和 / 样本数量 (不涉及权重)

mean = data['value'].mean()

加权算数平均值 = (x1f1 + x2f2 + ... + xnfn) / (f1 + f2 + ... + fn)

c_mean = (data['value']*data['f']).sum()/(data['f'].sum())

(2)位置平均数

众数为

mod = data['value'].mode()

中位数为


med = data['value'].median()

密度曲线

data['value'].plot(kind = 'kde',title = '密度曲线图')

密度曲线中加入:简单算数平均值、 加权算数平均值、中位数

简单算数平均值


plt.axvline(mean,color='r',linestyle='--')
plt.text(120,0.03,'简单算数平均值',color='r')

加权算数平均值

plt.axvline(c_mean,color='b',linestyle='--')
plt.text(120,0.035,'加权算数平均值',color='b')

中位数

plt.axvline(med,color='g',linestyle='--')
plt.text(120,0.04,'中位数',color='g')

image

2、离中趋势度量

创建数据、A/B销售额量级在同一水平

data = pd.DataFrame({'A_sale':np.random.rand(30)*1000,
                    'B_sale':np.random.rand(30)*1000},
                   index = pd.period_range('20170601','20170630'))

极差


sta = data['A_sale'].describe()
stb = data['B_sale'].describe()
max_min_a = sta['max'] - sta['min']
max_min_b = stb['max'] - stb['min']

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

a_iqr = sta['75%'] - sta['25%']
b_iqr = stb['75%'] - stb['25%']

没有考虑中间变量的变动,测定离中趋势不稳定

箱型图


color = dict(boxes='DarkGreen', whiskers='DarkOrange', medians='DarkBlue', caps='Gray')
data.plot.box(grid=True,color=color,vert=False)
image

(2)方差与标准差

方差:


a_var = data['A_sale'].var()
b_var = data['B_sale'].var()

标准差:

std_a = sta['std']
std_b = stb['std']
fig,ax = plt.subplots(2,1,figsize=(10,10))

A密度曲线,1个标准差


data['A_sale'].plot(kind='kde',title='A密度曲线',ax=ax[0])
ax[0].axvline(sta['50%'],linestyle='--',color='r')
ax[0].axvline(sta['50%']+std_a,linestyle='--',color='b')
ax[0].axvline(sta['50%']-std_a,linestyle='--',color='b')

B密度曲线,1个标准差

data['B_sale'].plot(kind='kde',title='B密度曲线',ax=ax[1])
ax[1].axvline(stb['50%'],linestyle='--',color='r')
ax[1].axvline(stb['50%']+std_b,linestyle='--',color='b')
ax[1].axvline(stb['50%']-std_b,linestyle='--',color='b')

image image

更多文章关注二维码相互交流呀!

上一篇下一篇

猜你喜欢

热点阅读