如下图所示,ABCD四个区域在不同日期的销售数据:

问题一:每个地区间的销售量是否相同?
问题二:不同月份的销售是否相同?
问题三:不同时间与地区的销售量是否相同?
Excel解答三个问题:
答一:

P=0.0249<0.05,故拒绝原假设。同理F=3.466>2.838,拒绝原假设。我们认为每个地区的销量是不同的。
答二:

P=0.106>0.05,不能拒绝原假设。同理F=2.368<3.225,不能拒绝原假设,不同月份销量是相同的。
答三:

不同时间对销售量无显著影响,而不同地区对销售量是有显著影响的。
Python解答:

import pandas as pd
import numpy as npdata = pd.read_excel("D:\pyFile\销售数据.xlsx")
#print(data)
#构建单因素方差分析
def one_way_anova(data,F):r,c = data.shapedf_ssa = c - 1df_sse = r*c - cdata_mean = data.values.mean() #总均值ssa = 0sse = 0for i in range(c):#每组数据data_group = data.iloc[:,i].values#组间误差ssa += len(data_group) * ((data_group.mean() - data_mean)**2)for j in data_group:#组内误差sse += (j - data_group.mean())**2msa = round(ssa/df_ssa,2)mse = round(sse/df_sse,2)if msa/mse > F:print(msa/mse)print('拒绝原假设')else:print(msa/mse)print('接受原假设')#构建无交互作用的双因素方差分析
def two_way_anova(data,Fr,Fc):r,c = data.shapedf_sst = r*c-1      #总自由度df_ssc = c-1        #组间自由度(列)df_ssr = r-1        #组间自由度(行)df_sse = (c-1)*(r-1)    #组内自由度(行)data_mean = data.values.mean()ssr = 0ssc = 0sst = 0    for i in range(c):           #组间(列)误差data_cgroup = data.iloc[:,i].valuesssc += len(data_cgroup)*((data_cgroup.mean()-data_mean)**2)for j in range(r):          #组间(行)误差data_rgroup = data.iloc[j,:].valuesssr += len(data_rgroup)*((data_rgroup.mean()-data_mean)**2)        sst = np.sum([(k-data.values.mean())**2 for k in data.values])  #总误差    sse = sst - ssr -sscmsr = round(ssr/df_ssr,2)msc = round(ssc/df_ssc,2)mse = round(sse/df_sse,2)    if msr/mse > Fr:print(msr/mse)print('行因素拒绝原假设')else:print(msr/mse)print('行因素不能拒绝原假设')         if msc/mse > Fc:print(msc/mse)print('列因素拒绝原假设')else:print(msc/mse)print('列因素不能拒绝原假设')one_way_anova(data,2.84)
out:
3.466423904557266
拒绝原假设two_way_anova(data,2.16,2.92)
out:
1.6070617016801232
行因素不能拒绝原假设
3.9925072049114414
列因素拒绝原假设

当然,强大如python,不可能没有封装好的函数进行方差分析,可以直接调用scipy.stats.f_oneway进行单因素方差分析,而双因素方差分析需先构建线性回归模型再进行双因素方差分析。

#单因素方差分析
from scipy import stats
stats.f_oneway(data.iloc[:,0],data.iloc[:,1],data.iloc[:,2],data.iloc[:,3])
out:
F_onewayResult(statistic=3.4664239064514066, pvalue=0.024913351378399826)#双因素方差分析
import statsmodels.api as sm
from statsmodels.formula.api import ols
#构建无交互作用的线性回归模型
model = ols('num ~ C(area) + C(time)', data=data).fit()
#构建交互作用的线性回归模型
model = ols('num ~ C(area) + C(time) + C(area)*C(time)', data=data).fit()
#双因素方差分析
sm.stats.anova_lm(model)

参考:微信公众号"小文的数据之旅"

Excel对比Python实现方差分析相关推荐

  1. Python 自动化办公之 Excel 对比工具

    作者 | 周萝卜 来源丨萝卜大杂烩 今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍! 需求 由于 ...

  2. Python自动化办公之Excel对比工具

    今天我们继续分享真实的自动化办公案例,希望各位 Python 爱好者能够从中得到些许启发,在自己的工作生活中更多的应用 Python,使得工作事半功倍! 需求 由于工作当中经常需要对比前后两个 Exc ...

  3. python怎么筛选excel数据_python筛选数据excel表格-如何利用python提取两个excel对比后的重复值的信息?...

    怎么用python读取excel表格的数据 import xlrd #open the .xls file xlsname="test.xls" book = xlrd.open_ ...

  4. python怎么筛选excel数据_工具篇:EXCEL与python的对比 如何筛选数据.md

    工具篇:EXCEL与python的对比 如何筛选数据 第6章 数据筛选 使用与,或,非三个条件配合大于,小于和等于对数据进行筛选,并进行计数和求和. 与Excel中的筛选功能和countifs和sum ...

  5. 数据分析领域,为什么要对比Excel学习Python?

    Python本身是一门编程语言,应用于Web开发.爬虫.机器学习等多个领域,但是除了这些,今天我要告诉你Python大热的一个学习方向--那就是Python数据分析. 我常常会听到这样的问题,&quo ...

  6. Python数据分析是什么?为什么要对比Excel学习Python数据分析?

    Python 虽然是一门编程语言,但是它并不难学,不仅不难学,而且很容易上手,这也是Python深受广大数据从业者喜爱的原因之一,因此大家在学习Python之前首先在心里告诉自己一句话,那就是Pyth ...

  7. python与excel结合-使用Excel和python来做回归分析

    使用Excel和python来做回归分析 作者:PHPYuan 时间:2018-08-01 03:40:50 聊完方差分析,就不得不说回归分析. 回归分析是一种应用广泛的统计分析方法,在金融,医学等领 ...

  8. python相比于excel的优势_使用Excel和python来做回归分析

    使用Excel和python来做回归分析 作者:PHPYuan 时间:2018-08-01 03:40:50 聊完方差分析,就不得不说回归分析. 回归分析是一种应用广泛的统计分析方法,在金融,医学等领 ...

  9. python分析excel数据-对照Excel使用Python进行数据分析,更快掌握

    Excel和Python,作为数据分析的主流工具,在从效率提升到数据商业化的整个过程中,都起到了重要作用.不管是在Excel中通过鼠标点选实现,亦或是利用Python通过代码实现,数据分析中的很多基础 ...

最新文章

  1. java static 可见性_Java多线程 synchronized与可见性的关系以及可见性问题总结
  2. python二十三:生产者 消费者模型
  3. 24点——判断4个数能否经过运算使得结果为24
  4. 【HeadFirst 设计模式学习笔记】13 MVC分析
  5. spring boot2.x设置session有效时间_Spring 源码解析 Scopes 之 Request 、Session 、Application...
  6. 2075. 解码斜向换位密码
  7. Android 系统(263)---Glide框架
  8. 【github系列】github定位到历史版本(历史commit点)
  9. 2015年传智播客JavaEE 第168期就业班视频教程day38-SSH综合案例-1
  10. python列表姓氏,Python程序可以打印完整姓氏的名字的缩写吗?
  11. 关于高效找工作的几条建议
  12. ZedGraph _WINFORM中设置ZEDGRAPH的曲线符号SYMBOL以及对应关系
  13. 如何减小电压跟随器输出电阻_河南安全型耦合器生产厂家-作用_华锐矿机
  14. win10开机启动ps1脚本
  15. Android端穿山甲SDK集成
  16. 新年新气象,努力奋上新时代
  17. 智能手机查看上网IP地址的多种方法
  18. 前端开发毕业设计如何选题?怎么做?
  19. input自动填充后背景颜色被覆盖的问题
  20. Matlab中值滤波

热门文章

  1. 5735. 雪糕的最大数量
  2. 计算机历史博物馆观后感:阿达·洛芙莱斯生平1
  3. Linux内存手动清理释放方法
  4. 思科vPC (Virtual Por Channel)
  5. excel转word_PDF一键转Word、转Excel、转PPT、转Html、转图片软件
  6. 写一个函数,使给定的一个3 × 3的二维整型数组转置,即行列互换。
  7. 开发Java程序的工具
  8. 如何快速发现网站恶意镜像与网页劫持?
  9. 万字长文---手把手教你加固内核安全配置
  10. C++很难吗?到底有多难?