探索变量之间的关系(python3)

在做数据分析的过程中。我们往往是–理解需求–获取数据–清洗数据–简单描述统计–统计型分析报告;
其实到这里还没完。如果我们还需要深入探索数据的价值,那么,单变量的分布检验–探索变量间的关系–建立关系模型–评估–总结等。
接下来就来看看数据分析的其中重要的一环–探索变量间的关系。

探索变量之间的关系

探索数据变量之间是否存在某种关系/关联。大致步骤有:

  • 变量的类型:类别型/数值型
  • 可视化给出可能的方向:散点图、箱型图、直方图、…
  • 需建立更严格的分析方式:假设检验。假设变量间存在某种函数/逻辑等关联关系,进行检验。

一、准备工具和数据

1.1、工具:我们用python3

通常我们把用于做数据分析的几个库直接先导入,基本是固定导入使用。

import numpy as np               #科学计算基础库,多维数组对象ndarray
import pandas as pd              #数据处理库,DataFrame(二维数组)
import matplotlib as mpl         #画图基础库
import matplotlib.pyplot as plt  #最常用的绘图库
from scipy import stats          #scipy库的stats模块

mpl.rcParams["font.family"]="SimHei"  #使用支持的黑体中文字体
mpl.rcParams["axes.unicode_minus"]=False # 用来正常显示负号  "-"
plt.rcParams['font.sans-serif']=['SimHei'] # 用来正常显示中文标签
# % matplotlib inline  #jupyter中用于直接嵌入图表,不用plt.show()
import warnings
warnings.filterwarnings("ignore") #用于排除警告
 
#用于显示使用库的版本
print("numpy_" + np.__version__)
print("pandas_" + pd.__version__)
print("matplotlib_"+ mpl.__version__)
numpy_1.17.4
pandas_0.23.4
matplotlib_2.2.3

1.2、案例数据

某餐厅顾客消费记录数据作为主要的案例数据。

数据源:https://download.csdn.net/download/weixin_41685388/12144418

'''
某餐厅顾客消费记录.
解释数据结构:
total_bill:消费,tip:小费,sex:服务员性别,
smoker:是否抽烟,day:星期几,time:午餐/晚餐,size:本桌人数
'''
tips = pd.read_csv(r"E:\tips.txt",sep='\t',encoding='utf-8') #导入txt格式数据
display(tips.shape)  #样本量
display(tips.sample(5))  #随机抽样5行
(244, 7)
total_bill tip sex smoker day time size
96 27.28 4.00 Male Yes Fri Dinner 2
230 24.01 2.00 Male Yes Sat Dinner 4
17 16.29 3.71 Male No Sun Dinner 3
110 14.00 3.00 Male No Sat Dinner 2
235 10.07 1.25 Male No Sat Dinner 2

二、数据变量与变量间的关系

2.1、类别型数据 ~ 类别型数据间的独立性检验

在这里插入图片描述
在这里插入图片描述
通用:用卡方检验

小样本:用费舍尔检验(劣势:只能检验2*2)

  • 问题1:探索案例数据中服务员性别与星期几的关系?

卡方检验

'''①看变量的类型:类别型/数值型'''
display(tips.sample(3))  #随机抽样3行

statistics = tips[["sex","day"]].describe() #统计
display(statistics)

#两个变量均是类别型数据,统计往往是进行分类汇总,即需要生成交叉表,用pd.crosstab()
count=pd.crosstab(tips.sex, tips.day)  
display(count)
total_bill tip sex smoker day time size
116 29.93 5.07 Male No Sun Dinner 4
146 18.64 1.36 Female No Thur Lunch 3
169 10.63 2.00 Female Yes Sat Dinner 2
sex day
count 244 244
unique 2 4
top Male Sat
freq 157 87
day Fri Sat Sun Thur
sex
Female 9 28 18 32
Male 10 59 58 30
'''②可视化给出可能的方向'''
count.T.plot(kind='bar')
plt.show()

在这里插入图片描述

count=pd.crosstab(tips.sex, tips.day)  #构造交叉表
print(stats.chi2_contingency(count,correction=False))
#chi2 卡方检验   contingency列联表  列联表中每个格子数量至少为5
#对性别和星期几进行卡方检验
chi2, p, dof, ex = stats.chi2_contingency(count, correction=False)  #卡方检验,p值很小,AB有关
print(p)
#P值很小,拒绝原假设,说明性别与星期几有关系
#独立性检验中,H0:AB无关,H1:AB有关系
(13.22200137240661, 0.004180302092822257, 3, array([[ 6.77459016, 31.0204918 , 27.09836066, 22.10655738],
       [12.22540984, 55.9795082 , 48.90163934, 39.89344262]]))
0.004180302092822257
  • 问题2:探索服务员性别与顾客是否吸烟是否有关?

费舍尔精确检验(小样本)

  • 10
    点赞
  • 64
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值