Forever77

一、统计分析

统计分析是对定量数据进行统计描述,常从集中趋势和离中趋势两个方面分析。

集中趋势:指一组数据向某一中心靠拢的倾向,核心在于寻找数据的代表值或中心值-统计平均数(算数平均数和位置平均数)

  算术平均数:简单算术平均数和权重算术平均数

  位置平均数:中位数和众数

离中趋势:

  极差和分位差

  标准差和方差

 

二、集中趋势

随机生成整数和总和为1的百分占比

df = pd.DataFrame({\'value\':np.random.randint(1,100,100),\'f\':np.random.rand(100)})
df[\'f\'] = df[\'f\']/df[\'f\'].sum()

 

算术平均数

mean = df[\'value\'].mean()
mean_f = (df[\'value\'] * df[\'f\']).sum()/df[\'f\'].sum()
print(\'简单算术平均数:%.2f\'%mean)
print(\'权重算术平均数:%2.f\'%mean_f)
# 简单算术平均数:48.34
# 权重算术平均数:51

 

位置平均数

m = df[\'value\'].mode().tolist()   #Seris数据类型可通过tolist()或to_list()转化为列表
med = df[\'value\'].median()
print(\'众数为:\',m)
print(\'中位数为:\',med)
# 众数为: [85]
# 中位数为: 48.0

 

集中趋势密度图

df[\'value\'].plot(kind = \'kde\')

plt.axvline(mean,linestyle=\'--\',color = \'r\')
plt.text(mean+5,0.002,\'简单算术平均数\',color = \'r\')

plt.axvline(mean_f,linestyle=\'--\',color = \'y\')
plt.text(mean_f+5,0.004,\'加权算术平均数\',color = \'y\')

plt.axvline(med,linestyle=\'--\',color = \'g\')
plt.text(med - 30,0.006,\'中位数\',color = \'g\')

 

三、离中趋势

随机生成DataFrame,表示对应日期的销量

df = pd.DataFrame({\'A_sale\':np.random.rand(30)*1000,\'B_sale\':np.random.rand(30)*1000},index = pd.date_range(\'2019/6/1\',\'2019/6/30\'))

 

极差和分位差

a_jc = df[\'A_sale\'].max() - df[\'A_sale\'].min()
b_jc = df[\'B_sale\'].max() - df[\'B_sale\'].min()
print(\'产品A销售额极差为%.2f,产品B销售额极差为%.2f\'%(a_jc,b_jc))

a_des = df[\'A_sale\'].describe()
b_des = df[\'B_sale\'].describe()
a_iqr = a_des[\'75%\'] - a_des[\'25%\']
b_iqr = b_des[\'75%\'] - b_des[\'25%\']
print(\'产品A销售额分位差为%.2f,产品B销售额分位差为%.2f\'%(a_iqr,b_iqr))
# 产品A销售额极差为968.05,产品B销售额极差为946.94
# 产品A销售额分位差为550.63,产品B销售额分位差为479.76

 

箱型图展示离散关系

df.boxplot(vert = False)

 

假设有n个样本,x1、x2...xn,算术平均数为x
方差:( (x1-x)^2 + (x2-x)^2 + ...+ (xn-x)^2 )/n
标准差:方差的平方根

a_std = df[\'A_sale\'].std()
a_var = df[\'A_sale\'].var()
b_std = df[\'B_sale\'].std()
b_var = df[\'B_sale\'].var()
print(\'产品A销售额标准差为%.2f,方差为%.2f\'%(a_std,a_var))
print(\'产品B销售额标准差为%.2f,方差为%.2f\'%(b_std,b_var))
# 产品A销售额标准差为304.25,方差为92565.69
# 产品B销售额标准差为297.36,方差为88424.61

 

密度图展示中位数、方差

fig = plt.figure(figsize = (12,5))
ax1 = fig.add_subplot(1,2,1)
df[\'A_sale\'].plot(kind = \'kde\')
plt.axvline(a_des[\'50%\'] - a_std,linestyle = \'--\',color = \'r\')
plt.axvline(a_des[\'50%\'],linestyle = \'--\')
plt.axvline(a_des[\'50%\'] + a_std,linestyle = \'--\',color = \'y\')


ax2 = fig.add_subplot(1,2,2)
df[\'B_sale\'].plot(kind = \'kde\')
plt.axvline(b_des[\'50%\'] - b_std,linestyle = \'--\',color = \'r\')
plt.axvline(b_des[\'50%\'],linestyle = \'--\')
plt.axvline(b_des[\'50%\'] + b_std,linestyle = \'--\',color = \'y\')

 

分类:

技术点:

相关文章: