如何使用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绘制Jazz网络图的例子

    利用Python绘制Jazz网络图的例子

    今天小编就为大家分享一篇利用Python绘制Jazz网络图的例子,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-11-11
  • Python图像处理库PIL的ImageFilter模块使用介绍

    Python图像处理库PIL的ImageFilter模块使用介绍

    这篇文章主要介绍了Python图像处理库PIL的ImageFilter模块使用介绍,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-02-02
  • Python批量上传文件信息到服务器的实现示例

    Python批量上传文件信息到服务器的实现示例

    在进行软件测试的过程中,经常会需要准备一批数据,本文主要介绍了Python批量上传文件信息到服务器的实现示例,具有一定的参考价值,感兴趣的可以了解一下
    2023-12-12
  • Python并发编程线程消息通信机制详解

    Python并发编程线程消息通信机制详解

    这篇文章主要为大家介绍了Python并发编程之线程消息通信机制的示例详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2021-10-10
  • python实现在线翻译

    python实现在线翻译

    这篇文章主要介绍了python实现在线翻译,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-06-06
  • python使用super()出现错误解决办法

    python使用super()出现错误解决办法

    这篇文章主要介绍了python使用super()出现错误解决办法的相关资料,对于TypeError: must be type, not classobj的错误进行处理,需要的朋友可以参考下
    2017-08-08
  • python 使用ctypes调用C/C++ dll详情

    python 使用ctypes调用C/C++ dll详情

    这篇文章主要介绍了python 使用ctypes调用C/C++ dll详情,文章首先通过导入ctypes模块,加载C/C++ dll到python进程空间展开主题相关内容,需要的小伙伴可以参考一下
    2022-04-04
  • 对Django 中request.get和request.post的区别详解

    对Django 中request.get和request.post的区别详解

    今天小编就为大家分享一篇对Django 中request.get和request.post的区别详解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Windows系统下实现pycharm运行.sh文件(本地运行和打开服务器终端)

    Windows系统下实现pycharm运行.sh文件(本地运行和打开服务器终端)

    PyCharm是Python开发的高效率IDE,但是很多时候需要同时开发Bash(shell)脚本,下面这篇文章主要给大家介绍了关于Windows系统下实现pycharm运行.sh文件(本地运行和打开服务器终端)的相关资料,需要的朋友可以参考下
    2022-09-09
  • 在前女友婚礼上用python把婚礼现场的WIFI名称改成了

    在前女友婚礼上用python把婚礼现场的WIFI名称改成了

    大家好,我是Lex 喜欢欺负超人那个Lex 擅长领域:python开发,网络安全渗透,Windows域控Exchange架构 今日重点:python暴力拿下WiFi密码;python拿下路由器管理页面 代码干货满满,建议收藏+实操!有问题及需要,请留言哦
    2021-08-08

最新评论