数据从 数据分析数据挖掘(三) 去找
一、探索变量的关系
1.事件相互独立的条件:
P(AB)=P(A)P(B)则称为事件A和B相互独立,简称A与B独立。
P(A)P(B)>0,若A与B独立的充分必要条件是P(A|B)=P(A),P(B|A)=P(B)。事件A的发生与B相互无关。

2.导入库导入数据:

import pandas as pd
import numpy as np
import matplotlib as plt
#载入库
from pandas import Series,DataFrame
from scipy import stats
#载入模块
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tips_pct']=data['tip']/data['total_bill']
#数据导入成功
1.看数字特征,均值,方差,峰度,偏度等
2.分布:模式,异常
有时候我们可以把异常分析成新的模式我们对两个或更多变量的分析:
找到变量之间的关系
case '没找到':Nothing more to do
case '有关系':找有多大关系,有什么样子的关系。

(1)可视化分析:
先写个画图的例子:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#载入库
from pandas import Series,DataFrame
from scipy import stats
#载入模块
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tips_pct']=data['tip']/data['total_bill']
fig=plt.figure(figsize=(8,6))
#只有这个不能画图
ax=fig.add_subplot(1,1,1)
#表示“1×1网格,第一子图
ax.plot(np.random.rand(50).cumsum(),'.')
#cumsum(),是累加的为了画图好看,随机50个点
ax.plot(np.random.rand(50).cumsum(),'o')

图:

画图补充:

fig,ax=plt.subplots(2,1,figsize=(8,6))
#这样就会有2行每行1个8×6大小的子图。

开始可视化咱们需要处理的数据:(探究女性给的小费和男性给的小费的关系)

fig,ax=plt.subplots(1,1,figsize=(8,6))
#这样就会1行每行1个8×6大小的子图。
ax.plot(data[data['sex']=='Male']['tip'],'o',label='Male')
ax.plot(data[data['sex']=='Female']['tip'],'o',label='Feale')
ax.legend(loc='best')
#蓝色的点是Male,红色的点是Female

画图:

清除图:

ax.clear()

使用散点图,分组:

ax.plot(data[data['sex']=='Male']['total_bill'],#这个表示x值data[data['sex']=='Male']['tip'],#这个表示y值'o',label='Male')
ax.plot(data[data['sex']=='Female']['total_bill'],#这个表示x值data[data['sex']=='Female']['tip'],#这个表示y值'o',label='Female')
ax.legend(loc='best')#程序自动选择表示男、女是什么标志标签放哪里

咱们这样一看,好像是女性花费比男性少。

为什么用可视化?
–更容易发现‘模式’

用直方图:
载入模块

data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tips_pct']=data['tip']/data['total_bill']
data['tips_pct'].hist(by=data['sex'],bins=50,range=[0,0.8])
#横坐标范围0到0.8


箱线图(盒需图):

有中位数;四分位数全距IQR=Q3-Q1;箱线图的上下限制线比Q1低1.5和比Q3高1.5的位置上而且都等于IQR;
异常值在限制线外部。
代码:比较男性女性的消费水平

data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tips_pct']=data['tip']/data['total_bill']
rvs1=data[data['sex']=='Male']['tips_pct']
rvs2=data[data['sex']=='Female']['tips_pct']
plt.boxplot([rvs2,rvs1],labels=['Female','male'])


比较数据是不是很方便。
我们可以用可视化给出可能的方向,然后用假设检验等更严格的分析方式来处理数据。
回忆变量的类型(类别型,数值型):

在现实生活中,提出变量关系的方式有特别多种:
运气和星座有关?星座和运气
对不同商家的评价差别大吗?评价和商家
我们就需要独立性检验的知识来判断其中的关系。
二、独立性检验:
–首先画图
–然后用定量方法确定答案
例:来的客人的性别是否和星期几有关系。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#载入库
from pandas import Series,DataFrame
from scipy import stats
#载入模块
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tips_pct']=data['tip']/data['total_bill']
count=pd.crosstab(data.sex, data.day)
#咱们用crosstab画图
count.T.plot(kind='bar')
#咱们转置了一下
chi_value,pvalue,ziyoudu,pinlv=stats.chi2_contingency(count,correction=False)
#重要的点pvalue,给的p值是0.004180302092822257,太小了,这就不是卡方检验。

count是一个列联表。
画出图:

费舍尔精准检验(样本数据小的情况下)只能对2×2的表进行检验
性别和是否吸烟的比较:

count=pd.crosstab(data.sex, data.smoker)#表格结合
oddsratio,pvalue=stats.fisher_exact(count)
#oddsratio是让步比,大于1是很重要
#oddsratio是1.0121836925960637,pvalue是1.0是否吸烟
count.iat[0,0]=2#修改一个值
oddsratio,pvalue=stats.fisher_exact(count)
#得到新的数据,pvalue很小

数值型和数值型之间的关系分析:
相关度:
Pearson:积差相关系数。反应两变量之间线性相关性

stats.pearsonr(data.total_bill, data.tip)
(0.6757341092113645, 6.692470646863477e-34)
第一个参数是相关系数,第二个是p值,p值越小,表示相关系数越显著,一般p值在500个样本以上时有较高的可靠性。
和之前看正态分布的p值不一样哈

Spearman:等级相关系数(ranked data)
-不假设变量为正态分布,-1到+1衡量变量之间的单调性

比较注重单调性。

np.random.seed(123)
x=np.random.randn(100,2)
y=np.random.randn(100,2)
rho,pval=stats.spearmanr(x,y)
rho,pval=stats.spearmanr(x.T,y.T,axis=1)

相关系数的分类
0.8-1.0:极强相关
0.6-0.8:强相关
0.4-0.6:中等强度相关
0.2-0.4:弱相关
0.0-0.2:极弱或者无相关
Kendall’s Tau:非参数等级相关系数
相关系数tau:
tau=(P-Q)/sqrt((P+Q+T)*(P+Q+U))
P:同步数据对数,Q:异步,T:tie in x,U:tie in y
x=[1,2,3,4,5,6,-1]
y=[2,4,2,5,5,3,8]
同步就是1和2差1,2和3差1,3和4差1,那么同步就是1.
异步就是2和4差2,4和2差-2就是异步。一个增加一个减小
T就是x,y同时有相等那就不变,如果x相等y不相等T加一,y相等x不相等就是U加一。

x=[1,2,3,4,5,6,-1]
y=[2,4,2,5,5,3,8]
tau,p_value=stats.kendalltau(x, y)
print(tau,p_value)
#-0.05006261743217588 0.8778504987103269

数值型~类别型:
给小费的概率与男女性别的关系:
t检验:

rvs1=data[data['sex']=='Male']['tip']
rvs2=data[data['sex']=='Female']['tip']
stats.ttest_ind(rvs1, rvs2)
#Ttest_indResult(statistic=1.3878597054212687, pvalue=0.16645623503456763)
#这个没有理由拒绝
stats.ttest_rel(rvs1[:87], rvs2[:87])
#这个必须一样长,和上面的函数一样,进行双侧检验的
#Ttest_relResult(statistic=1.3639526706337008, pvalue=0.1761417001637746)

ANOVA方差分析:
为什么用ANOVA:
在做一些实验时,我们通常会把样本分成不同的组,给予不同的对待。例如,我们想研究某种药物在不同剂量下对人们的作用。我们可能会将病人随机分为同等大小的三组,A组每天吃一片,B组每天吃两片,C组每天吃三片。因为我们只研究这个药品计量对病人的影响,所以是单因素分析,如果想要加入别的因素,例如,年龄,就需要用到多因素分析了。在上述实验中,我们给了三种不同的计量,所以这个药物计量因素下有三个水平(level)。实验结束以后,你老板问你,这三组病人的表现有显著的区别吗?这个时候,你就可以使用ANOVA来回答你老板的问题啦。
目的是检验每个组的平均数是否相同:H0:μ1=μ2=μ3

SSt是总的平方和。
单因素方差分析:
假设检验统计量和分布:
F=(SSA/(α-1))/(SSE/(n-α))=MSA/MSE
F~F(α-1.n-α)
p值与显著水平α比较,p<α,拒绝H0,否则,接受H0.

rvs1=data[data['sex']=='Male']['tip']
rvs2=data[data['sex']=='Female']['tip']
stats.f_oneway(rvs1,rvs2)
F_onewayResult(statistic=1.9261545619320048, pvalue=0.166456235034572)
不能拒绝原假设,所以这个两个变量之间没关系。

相关系数只能做线性相关性的检验。不能做独立检验的,相关系数给的点估计,pvalue给的区间估计。

练习:星期几(day)和人数(size)对小费(yip)比例是否有影响。

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#载入库
from pandas import Series,DataFrame
from scipy import stats
#载入模块
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tips_pct']=data['tip']/data['total_bill']
rvs1=data[data['day']=='Sun']['tips_pct']
rvs2=data[data['day']=='Sat']['tips_pct']
rvs3=data[data['day']=='Thur']['tips_pct']
rvs4=data[data['day']=='Fri']['tips_pct']
rvs5=data[data['day']=='Thur']['tips_pct']
print(stats.f_oneway(rvs1,rvs2,rvs3,rvs4,rvs5))
#F_onewayResult(statistic=0.7249204278156822, pvalue=0.5754852922769325)
#跟是否星期几也没关系
print(stats.spearmanr(data['size'],data['tips_pct']))
#SpearmanrResult(correlation=-0.1521643902958691, pvalue=0.017381095227391195)
#相关显著水平比较高,人数对小费的有影响

方差分析检验对数据的假设:
1.样本之间相互独立
2.样本均来自正态分布
3.方差齐次性:各组方差相等

检验:
方差齐次性:

stats.fligner(rvs1,rvs2)

如果不是正态分布:
–H0:各组中值相等
–对数据也有假设:卡方分布,因此每组样本容量不小于5
–stats.kruskal(rvs1,rvs2)不如上面的方法给的可信。

一个数据模拟的实例:
帕累托分布:

分布密度为:

期望为: (如果k<=1 期望值为无穷大)

且随机变量的标准差为:(如果k<=2标准差不存在)。

理解例子:
–人类居住区的大小
–油田的石油储备量
–少部分人穷,大部分人富有。(我就是大部分人)

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#载入库
from pandas import Series,DataFrame
from scipy import stats#生成帕累托数据
x=stats.pareto.cdf(1000,b=1.5,loc=50/6-1)
#求出来是小于1---的概率
p=1-x
#3.197384328168518e-05这就是生成一个点大于1000的数据的概率
#我们需要知道起码得多少个数才能产生一个
y=stats.binom.cdf(1,100000,p)#二项分布
#生成十万个数保证有0.8284618411416711的概率有数据大于1000的

兄弟们,哪里看不懂说一下,谢谢大家。

数据分析数据挖掘(五)相关推荐

  1. 【原】数据分析/数据挖掘 入门级选手建议

    1.数据分析和数据挖掘联系和区别 联系:都是搞数据的 区别:数据分析偏统计,可视化,出报表和报告,需要较强的表达能力.数据挖掘偏算法,重模型,需要很深的代码功底,要码代码,很多= =. 2.怎么入门 ...

  2. 数据分析的五个阶段及价值

    如果将数据分析的产出作为产品来看,套用产品演进模型我们可以将数据分析分为五个阶段.在这五个阶段中每个都有固定的工作内容和价值体现,但总体来说,这又不仅是产品的演进路径,同时也是数据分析师自身的成长路径 ...

  3. 优化大数据分析的五个小技巧

    数据正在变得越来越重要,一些企业甚至把数据当成自己的"天".近年来越来越多的公司已经意识到数据分析可以带来的价值,并且已经跳上了大数据旅行车.实际上,现在所有的一切都在被监控和测量 ...

  4. 数据分析数据挖掘(三)

    前面我自己写的我看着都头大,我看看能不能给大家写的精简点,好理解. 我们需要的数据: 链接:https://pan.baidu.com/s/1xr4x43bfEe4hVWYtwiFGRw 提取码:ya ...

  5. 数据分析 —— 数据挖掘是什么、能干嘛、怎么做

    数据分析 数据挖掘 什么是数据挖掘 数据挖掘:用于寻找数据中隐含的知识,并用于产生商业价值的一种手段 为什么要做数据挖掘 技术和商业就像一对双生子,在互相促进中不断演进发展.随之而来的就是个大公司的业 ...

  6. 【数据分析数据挖掘】异常值的判断与去除——3σ 箱线图分析

    [数据分析&数据挖掘]异常值的判断与去除--3σ & 箱线图分析 参考文章: (1)[数据分析&数据挖掘]异常值的判断与去除--3σ & 箱线图分析 (2)https: ...

  7. Datawhale分组学习—动手学数据分析(五)

    Datawhale分组学习-动手学数据分析(五)主要是做数据建模以及模型评估.模型搭建部分:1)切分数据集为训练集和测试集:2)搭建逻辑回归模型或随机森林模型完成分类任务,通过不断调参来优化模型.模型 ...

  8. 用大数据分析预测五组大乐透的开奖号码

    很抱歉,我不能用大数据分析预测五组大乐透的开奖号码.虽然大数据分析可以在某些情况下帮助我们发现模式和趋势,但彩票号码的随机性质使其无法被准确预测.每一期开奖的号码都是独立的,之前的开奖结果不会对下一次 ...

  9. Python 数据分析 数据挖掘 学习路径图

    话不多说,相信看到这篇文章的你一定是对数据分析,数据挖掘有兴趣,或者想从事和方面.本文不再累述python对数据分析的重要,数据分析这门的由来之类的. 在这里,我单刀直入,已我学习数据挖掘3年来的经历 ...

最新文章

  1. python恶搞小程序-知道了这个,你也能写出 Python 趣味小程序
  2. twisted.internet.error.TimeoutError错误的解决方法
  3. Mining Precision Interface From Query Logs -- 学习笔记(三)
  4. Linux常用备份恢复工具
  5. FreeRTOS空闲任务
  6. 【Opencv综合应用】自制训练集的人脸识别1——拍摄10张人脸图片
  7. C语言:快速排序(详解)
  8. Qt 远程开关机 WakeOnLAN 重启
  9. 各种转码(bytes、string、base64、numpy array、io、BufferedReader )
  10. centos 下mono安装
  11. 卫生事业单位计算机科学与技术,卫生事业单位考试-计算机科学与技术的知识点.doc...
  12. vue中el-radio-group点击事件,双击取消
  13. 一节课精通Emmet编写开发工具-姜威-专题视频课程
  14. 初识 Linux — 文本编辑器
  15. ASP.NET 数据绑定详解 代码+步骤
  16. jsp002网络问卷调查系统
  17. 【人工智能哲学01/2】人工智能前世今生
  18. 网店代运营_云集微店
  19. @media媒体查询——详解
  20. (13)雅思屠鸭第十三天:小作文攻略

热门文章

  1. eclipse maven plugin 插件安装和配置
  2. Leetcode 814.二叉树剪枝
  3. 解决Mac按列浏览图加载慢的问题
  4. JavaScript-Load-Image
  5. Hadoop-熟悉常用的HDFS操作
  6. 软件测试(原书第2版中文)PDF版
  7. 大型网站的架构设计与演进
  8. 新添加到Windows Azure 技术内容的现场记录和现实世界的指导
  9. arraylist/vector add()方法诡异之---多次add进去的对象最终都变成最后一次add进去的对象值...
  10. 引用 一个较优雅的GridView隐藏列取值解决方案