如何使用Python进行数据分析之方差分析详解

 更新时间:2024年03月05日 09:32:44   作者:python慕遥  
这篇文章主要给大家介绍了关于如何使用Python进行数据分析之方差分析的相关资料,方差分析是一种常用的对数据进行分析的方法,用于两个及两个以上样本均数和方差差别的显著性检验,需要的朋友可以参考下

前言

大家好,方差分析可以用来判断几组观察到的数据或者处理的结果是否存在显著差异。本文介绍的方差分析(Analysis of Variance,简称ANOVA)就是用于检验两组或者两组以上样本的均值是否具备显著性差异的一种数理统计方法。

根据影响试验条件的因素个数可以将方差分析分为:单因素方差分析、双因素方差分析、多因素方差分析;双因素方差分析则是分析两个因素对试验指标的影响;多因素方差分析则是分析更多因素指标的分析方法。本文是以不同城市的月薪收入在每个月的水平上是否存在差异就是多组数据是否存在差异的示例:

一、单因素方差分析

单因素方差分析只考虑单一因素对试验指标的影响是否显著:

import pandas as pd
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
data= pd.read_excel('D:/shujufenxi/jpt.xlsx',index_col=0)
# 先来看下从城市因素开始分析,
df_city=data.melt(var_name='城市',value_name='月薪')#使用melt()函数将读取数据进行结构转换,以满足ols()函数对数据格式的要求,melt()函数能将列标签转换为列数据

使用melt()函数对数据结构,并可视化,我们可以以肉眼观察出差异性明显:

import matplotlib.pyplot  as plt
plt.rcParams['font.sans-serif'] = ['KaiTi', 'SimHei', 'FangSong']  # 汉字字体,优先使用楷体,如果找不到楷体,则使用黑体
plt.rcParams['font.size'] = 12  # 字体大小
plt.rcParams['axes.unicode_minus'] = False  # 正常显示负号
import pandas as pd
import seaborn as sns
data= pd.read_excel('D:/shujufenxi/jpt.xlsx',index_col=0)
data_melt = data.melt()
data_melt.columns = ['城市', '月薪']
sns.boxplot(x = '城市', y = '月薪', data = data_melt)
plt.show()

进行方差分析:

import pandas as pd
from statsmodels.stats.multicomp import pairwise_tukeyhsd
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
data= pd.read_excel('D:/shujufenxi/jpt.xlsx',index_col=0)
# 先来看下从城市因素开始分析,
df_city=data.melt(var_name='城市',value_name='月薪')#使用melt()函数将读取数据进行结构转换,以满足ols()函数对数据格式的要求,melt()函数能将列标签转换为列数据
model_city=ols('月薪~C(城市)',df_city).fit()# ols()创建一线性回归分析模型
anova_table=anova_lm(model_city)# anova_lm()函数创建模型生成方差分析表
print(anova_table)
# 进行事后比较分析
print(pairwise_tukeyhsd(df_city['月薪'], df_city['城市']))

在结果图上半部分中df为自由度,sum_sq为误差平方和,mean_sq为平均平方,F代表统计量F值,PR(>F)代表显著性水平P值;下半部分为多重比较,进行事后分析,group1以及group2表示的是因子的不同水平,然后分析他们两个组是否有显著性差异,最后面的reject表示是否拒绝原假设,True表示的是拒绝原假设,说明两组均值有显著性差异。

二、双因素方差分析

双因素方差分析对数据结构的要求和单因素方差分析不同,代码如下:

import pandas as pd
from statsmodels.stats.multicomp import pairwise_tukeyhsd
from statsmodels.formula.api import ols
from statsmodels.stats.anova import anova_lm
data= pd.read_excel('D:/shujufenxi/jpt.xlsx',index_col=0)
df_twoway=data.stack().reset_index()
df_twoway.columns=['月份','城市','月薪']
model_twoway=ols('月薪~C(月份)+C(城市)',df_twoway).fit()
anova_table=anova_lm(model_twoway)
print(anova_table

总结 

到此这篇关于如何使用Python进行数据分析之方差分析的文章就介绍到这了,更多相关Python方差分析内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • python实现基于朴素贝叶斯的垃圾分类算法

    python实现基于朴素贝叶斯的垃圾分类算法

    这篇文章主要为大家详细介绍了python实现基于朴素贝叶斯的垃圾分类算法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-07-07
  • python 列表元素左右循环移动 的多种解决方案

    python 列表元素左右循环移动 的多种解决方案

    这篇文章主要介绍了python 列表元素左右循环移动 的多种解决方案,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • pandas DataFrame 交集并集补集的实现

    pandas DataFrame 交集并集补集的实现

    这篇文章主要介绍了pandas DataFrame 交集并集补集的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-06-06
  • Python语法学习之进程的创建与常用方法详解

    Python语法学习之进程的创建与常用方法详解

    本文我们将学习一下在 Python 中去创建并使用多进程的方法,可以通过创建多个进程来帮助我们提高脚本执行的效率,感兴趣的可以了解一下
    2022-04-04
  • 如何将Python彻底卸载的三种方法

    如何将Python彻底卸载的三种方法

    通常我们在一些软件的使用上有碰壁,第一反应就是卸载重装,所以有小伙伴就问我Python怎么卸载才能彻底卸载干净,今天这篇文章,小编就来教大家如何彻底卸载Python,需要的朋友可以参考下
    2025-04-04
  • Python实现根据文件后缀统计文件大小并找出文件位置

    Python实现根据文件后缀统计文件大小并找出文件位置

    这篇文章主要和大家分享了一个Python脚本,主要用于统计指定文件夹内特定后缀文件的数量、大小及路径,并支持多种格式导出,文中的示例代码讲解详细,感兴趣的小伙伴可以了解下
    2026-05-05
  • Python动态加载模块的3种方法

    Python动态加载模块的3种方法

    这篇文章主要介绍了Python 动态加载模块的3种方法,本文分别使用使用系统函数__import_()、使用imp 模块、使用exec三种方法实现,需要的朋友可以参考下
    2014-11-11
  • 从零学python系列之浅谈pickle模块封装和拆封数据对象的方法

    从零学python系列之浅谈pickle模块封装和拆封数据对象的方法

    这个系列也发了几篇文章了,都是个人的一些学习心得的记录,今天在学习文件数据处理的时候了解到有pickle模块,查找官方文档学习了一些需要用到的pickle内容。
    2014-05-05
  • Python轻量级ORM框架Peewee访问sqlite数据库的方法详解

    Python轻量级ORM框架Peewee访问sqlite数据库的方法详解

    这篇文章主要介绍了Python轻量级ORM框架Peewee访问sqlite数据库的方法,结合实例形式较为详细的分析了ORM框架的概念、功能及peewee的安装、使用及操作sqlite数据库的方法,需要的朋友可以参考下
    2017-07-07
  • Python如何利用%操作符格式化字符串详解

    Python如何利用%操作符格式化字符串详解

    %是Python风格的字符串格式化操作符,非常类似C语言里的printf()函数的字符串格式化,下面这篇文章主要给大家介绍了关于Python如何利用%操作符格式化字符串的相关资料,需要的朋友可以参考下
    2021-10-10

最新评论