请从上一个博客下载我们需要处理的数据。
一、复习常用的函数:

import pandas as pd
import numpy as np
import matplotlib as mt
#载入库
from pandas import Series,DataFrame
#载入模块
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')print(data[['sex','day','time']].describe())
#获得数据
#         sex  day    time
#count    244  244     244  有多少条
#unique     2    4       2  有几种类型的
#top     Male  Sat  Dinner  出现最多的数据
#freq     157   87     176  出现最多的数据出现了多少次#这里给大家讲一个函数,可能有些小伙伴这里不明白
print(data.loc[:,['sex']])sex
0    Female
1      Male
2      Male
3      Male
4    Female
..      ...
239    Male
240  Female
241    Male
242    Male
243  Female
表示所有的行sex列拿出来。:代表所有的复习:咱不能只学不复习哈。会忘的。
索引
1.拿某一列,data['sex'],或者按照切片的方法data[0:3]。
2.按照地图的方法找: data.at[1,'time']拿到第一行time的数据,data.iat[1,1]拿第一行第一列的数据。这个方法只能拿一个数据。
3.按地图拿一块数据:data.loc[:,['sex']]拿所有行sex的数据,data.iloc[0:1,0:3]范围是第1行和1,2,3列。le=DataFrame({'id':[1,2],'mas':['hello','car']})
re=DataFrame({'id':[1,2],'mas1':['no','train']})合并的方法:
1.d3=pd.concat([d1,d2])把d1,d2合成一个序列
2.pd.merge(le,re,on='id')通过id合成了一个数据id    mas   mas1
0   1  hello     no
1   2    car  train排序的方法:
1.data.sort_values('tip')根据tip的大小排序
2.data.sort_values(['tip','total_bill'])如果tip相同就按照total_bill排序
3.data.sort_values(['tip','total_bill'],ascending=[True,False])第一个是升序第二个是降序,ascending等于True是升序,等于False是降序。分组:我们希通过sex当作指标把每组的数据进行相加。
data.groupby('sex').sum()total_bill     tip  size
sex
Female     1570.95  246.51   214
Male       3256.82  485.07   413
data.groupby(['sex','size']).sum()第一个是第一层标签,第二个是第二层标签,sum()你们看着不爽可以换成别的数据,显示的数据而已,随便换。total_bill     tip
sex    size
Female 1          20.39    3.832         889.69  146.653         301.66   45.504         272.51   36.195          29.85    5.146          56.85    9.20
Male   1           8.58    1.922        1676.20  256.193         582.89   83.444         786.19  116.825         120.49   15.006          82.47   11.70自定义函数:data[['tip','size']].apply(lambda x:x+x)进行运算tip  size
0     2.02     4
1     3.32     6
2     7.00     6
3     6.62     4
4     7.22     8
..     ...   ...
239  11.84     6
240   4.00     4
241   4.00     4
242   3.50     4
243   6.00     4

二、理解样本数据:

1.Categorical Data类别型的数据:
类别型变量(这个必须明白):有限的取值,比如性别只能是男女;没有加减乘除;分有序的和无序的。

import pandas as pd
import numpy as np
import matplotlib as mt
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')s=Series(["a","b","c","d"],dtype='category')
#生成一个category序列s1=Series(["a","b","c","d"])
s1_cat=s.astype('category',categories=["b","c","d"],ordered=True)
#ordered为True时是有序的,为Fales是无序的
#categories=["b","c","d"]这个来调控b<c<ddata['sex']=data['sex'].astype('category')
#可以把格式换成这个
data.dtypes
total_bill     float64
tip            float64
sex           category#此时数据已经改成这个类型的了
smoker          object
day             object
time            object
size             int64
dtype: objectdata=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')data['sex']=data['sex'].astype('category')data['sex'].cat.ordered
#出现False证明是无序的,True是有序的data['sex']=data['sex'].cat.set_categories(['Male','Female'],ordered=True)
data['sex'].dtype
#CategoricalDtype(categories=['Male', 'Female'], ordered=True)
#得到的是一个categories类型的,Male大于Female.排序的话Male会在前面

咱们接下来做一个练习,按照sex进行统计分组统计 tip/total_bill(自己写写试试)

import pandas as pd
import numpy as np
from pandas import Series,DataFrame
#载入模块
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
a1=data.groupby(by=['sex'])['tip'].agg({np.sum})
a2=data.groupby(by=['sex'])['total_bill'].agg({np.sum})
a1['sum']/a2['sum']
sex
Female    0.156918
Male      0.148940
Name: sum, dtype: float64

#这样就得出来了,当然还有很多解决方法,仁者见仁。

二、Scipy:我们用这个库来验证我们的数据符合某种分布。
(1)下载的方法:
下载我推荐Anaconda Navigator,不用脑子的下载不香吗。

打开以后这个样子,点environmentsn.

选择我们用的环境没有适合的下面有个creat可以创建。在上面installed那里换一下,换成not installed,在右边Search那里输入Scipy,就可以下载了。找不到就换成all,可能你本身就安装了这个。
(2)学习包的使用:
我们先导入数据画出图:

from scipy import stats
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tips_pct']=data['tip']/data['total_bill']
data['tips_pct'].hist(bins=50)


第一眼看过去真像正态分布,我们就可以用scipy包验证这个数据是不是正态分布。下面给出这些验证的方法。

1.看数字特征检验:看分布的数字特征是否与理论
生成一个t分布序列:(前面的一定要看啊)
from scipy import stats
data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tips_pct']=data['tip']/data['total_bill']
np.random.seed(28)
#我会改变随机生成器的种子;传入的数值用于指定随机数生成时所用算法开始时所选定的整数值,如果使用相同的seed()值,则每次生成的随机数都相同;种下一颗种子
x=stats.t.rvs(10,size=1000)
#我们已经生成了自由度为10 的随机数
x.max()
#最大值  4.699548301615589
x.min()
#最小值 -4.1986288377860115
x.mean()
#平均数
x.var()
#方差
m,v,s,k=stats.t.stats(10,moments='mvsk')
#输出距,输出距为1为期望,2为方差,3为偏度,4为峰度。对应m,v,s,k
print(m,v,s,k)
#0.0 1.25 0.0 1.02.更严谨的方法
stats.ttest_1samp(x,m)
# Ttest_1sampResult(statistic=-0.5091015895488764, pvalue=0.6107934417720458)
#第一个是统计量,第二个是p值
stats.kstest(x,'t',(10,))
#t分布,自由度为10KstestResult(statistic=0.021462484753307864, pvalue=0.7463327701571849)
#pvalue越大越感觉接近t分布。p小于0.05那就有把喔说没关系。可以检验很多分布3.卡方检验
from scipy import stats
import pandas as pd
import numpy as np
import matplotlib as mt
np.random.seed(28)
#我会改变随机生成器的种子;传入的数值用于指定随机数生成时所用算法开始时所选定的整数值,如果使用相同的seed()值,则每次生成的随机数都相同;种下一颗种子
x=stats.t.rvs(10,size=1000)
q=[0.0,0.01,0.05,0.1,1-0.10,1-0.05,1-0.01,1.0]
crit=stats.t.ppf(q,10)
#生成自由度为10的t分布n_sample=x.size
np.histogram(x,bins=crit)
#按照crit段分类了
(array([  8,  50,  51, 791,  49,  42,   9], dtype=int64),#占的多少个array([       -inf, -2.76376946, -1.81246112, -1.37218364,  1.37218364,1.81246112,  2.76376946,         inf]))n_sample=x.sizeplt=np.histogram(x,bins=crit)
#按照crit段分类了
tprob=np.diff(q)
# array([0.01, 0.04, 0.05, 0.8 , 0.05, 0.04, 0.01])每个数据所占比例
nprob=np.diff(stats.norm.cdf(crit))
#array([0.00285689, 0.03210059, 0.05004565, 0.82999372, 0.05004565,
#       0.03210059, 0.00285689])
tc,tp=stats.chisquare(freqcount,tprob*n_sample)
#和ttest_1samp一样,freqcount是一个频率就是每一部分有多少个。

(3)假设检验:
1.提出检验假设又称原假设,符号是H0;备择假设的符号是H1。
2、选定统计方法,由样本观察值按相应的公式计算出统计量的大小,如X2值、t值等。根据资料的类型和特点,可分别选用Z检验,T检验,秩和检验和卡方检验等。
3、根据统计量的大小及其分布确定检验假设成立的可能性P的大小并判断结果。若P>α,结论为按α所取水准不显著,不拒绝H0,即认为差别很可能是由于抽样误差造成的,在统计上不成立;如果P≤α,结论为按所取α水准显著,拒绝H0,接受H1,则认为此差别不大可能仅由抽样误差所致,很可能是实验因素不同造成的,故在统计上成立。P值的大小一般可通过查阅相应的界值表得到 。

例题;(在以前留下的资料里偷的/害羞)

1.是单体,均值已知的均值双侧检验,平均重量为15g.
2.H0:μ=15,H1:μ≠15
3.μ和σ都未知:

4.计算:

假设检验的两类错误:第一类检验:弃真错误,P{拒绝H0|H0真}<=α,H0为真拒绝H0,
就是真实发生事情的概率很小,但是确实发生了。
第二类错误:纳伪错误,β=P{接受H0|H0不真} ,H0为假接受H0,
不会发生的事情占的概率太大了。
关系:当样本容量固定给的时候阿尔法和β不可能同时变小,如果要同时变小,只能增加样本容量。

功效分析:1.功效:1-β为正确判断出所有假的概率
2.显著性水平:α产生第一类错误的概率
3.样本大小:n
4.效应值:ES,样本大图变瘦,效应值会变得精确。
用功效分析判断假设检验第一类和第二类错误如何夺舍。

什么是p值:
p=P{|T0|>t0}
我们开始想知道t0落在接受域里,就和上面例题一样,就是根据样本算出的统计量如果落在拒绝域的概率就是p值。p小于例题中的α/2那么就落入拒绝域。就是和a比较
(4)正态分布检验:

from scipy import stats
import pandas as pd
import numpy as np
import matplotlib as mt
np.random.seed(28)
#我会改变随机生成器的种子;传入的数值用于指定随机数生成时所用算法开始时所选定的整数值,如果使用相同的seed()值,则每次生成的随机数都相同;种下一颗种子
x=stats.t.rvs(10,size=1000)
stats.normaltest(x)
#NormaltestResult(statistic=25.64130980996834, pvalue=2.7043339505576926e-06)
#这个p很小,就是在拒绝域里,这个x是t分布里的数据这样很正常data=pd.read_csv(r'C:\Users\13056\Desktop\tips.csv')
data['tip_pct']=data['tip']/data['total_bill']
data.tip_pct.hist()

先画出图:

看起来很像正态分布啊

stats.normaltest(data['tip_pct'])
# NormaltestResult(statistic=220.8879728815828, pvalue=1.0833932598440914e-48)
#看一下p值太小了,可能是异常点造成的。print(data[data['tip_pct']>0.4])
#找到不正常的点total_bill   tip     sex smoker  day    time  size   tip_pct
172        7.25  5.15    Male    Yes  Sun  Dinner     2  0.710345
178        9.60  4.00  Female    Yes  Sun  Dinner     2  0.416667
data1=data.drop([172,178])
#删了他
stats.normaltest(data1['tip_pct'])
# NormaltestResult(statistic=4.684342675054582, pvalue=0.09611870532870112)
这就变得像正态分布了

(5)比较两个样本

1.比较两组均值:
rvs1=stats.norm.rvs(loc=5,scale=10,size=500)
#loc是平均数,scale是标准差,size是数据量。正态分布
rvs2=stats.norm.rvs(loc=5,scale=10,size=500)
stats.ttest_ind(rvs1,rvs2)
#Ttest_indResult(statistic=-0.911553791451031, pvalue=0.36222378086748896)
#假设这两组是相同的
rvs3=stats.norm.rvs(loc=5,scale=10,size=800)
stats.ttest_ind(rvs1,rvs3)
#test_indResult(statistic=-0.17726372402376278, pvalue=0.8593372124371541)
#这一组样本均值差的大2.比较两组分布:
rvs1=stats.norm.rvs(loc=5,scale=10,size=500)
#loc是平均数,scale是标准差,size是数据量。正态分布
rvs2=stats.norm.rvs(loc=5,scale=10,size=500)
rvs3=stats.norm.rvs(loc=5,scale=10,size=800)
stats.ks_2samp(rvs1,rvs2)
# Ks_2sampResult(statistic=0.04, pvalue=0.8191511303355717)
stats.ks_2samp(rvs1,rvs3)
# Ks_2sampResult(statistic=0.032, pvalue=0.9603008958861495)

(6)再次强调下:这几个公式。

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

  1. 【干货下载】大数据分析的四个关键环节

    本文提炼自神策数据与 Ping++ 联合举办的沙龙 Growth Workshop 中神策数据创始人 & CEO 桑文锋的分享,主题为<大数据分析的四个关键环节>.PPT 干货获取 ...

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

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

  3. 数据分析数据挖掘(五)

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

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

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

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

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

  6. 大数据分析的四个关键环节

    ▌ 什么是大数据? 随着大数据时代的到来,AI 概念的火热,人们的认知有所提高.为什么说大数据有价值?这是不是只是一个虚的概念?大家怎么考虑数据驱动问题?为什么掌握更多的数据就会更有效?这些问题很难回 ...

  7. python数据分析的四阶段以及电商数据描述性分析和探索性分析

    目录 数据分析的四阶段 1 需求 数据情况 需求 产出 2 数据规整(数据预处理,数据清洗,数据重构) 2.1 数据预处理 2.1.1 发现错误的对策 2.1.2 修正缺失值 2.2 修正错误数据 方 ...

  8. 利用Python进行数据分析(四):数据加载、存储与文件格式

    标题利用Python进行数据分析(四):数据加载.存储与文件格式 学习笔记来源于:简书https://www.jianshu.com/p/047d8c1c7e14 输入输出通常可以划分为几个大类:读取 ...

  9. 各位集美兄得看过来! 利用AI给青春有你2的选手们做数据分析挖掘(四):AI分析谁最容易出道

    各位集美兄得看过来! 利用AI给青春有你2的选手们做数据分析挖掘(一):爬虫选手信息 各位集美兄得看过来! 利用AI给青春有你2的选手们做数据分析挖掘(二):统计并展示数据 各位集美兄得看过来! 利用 ...

  10. 商业数据分析的四个层次

     1.概述  1.1缘起 为什么要写这系列文章? 商业数据分析的根本目的就是要洞察数据背后的规律,基于此,企业可以制订决策.并采取相应措施和行动,进而达成想要的结果.这是商业数据分析的最大价值所在. ...

最新文章

  1. 要在 create-react-app 脚手架里使用 less 的方法
  2. SQL查找是否存在,别再count了,很耗费时间的
  3. LBS定位应用app的兴趣点与名称搜索
  4. 如何把后台返回数据的根据某个选项去重新排序?
  5. “红人经济第一股”搞虚拟社交,天下秀是变道还是扩道?
  6. 理解和使用systrace
  7. 三位对我影响最深的老师
  8. 测试之道--阿里巴巴八年测试专家倾情奉献
  9. java xms512m_安装版的tomcat设置JAVA_OPTS=-Xms128M -Xmx512M -XX:PermSize=128M -XX:MaxPermSize=512M...
  10. 【kafka】kafka 消费速度 小于 日志清理速度 (kafka数据被清理了)会发生什么 auto.offset.reset 参数
  11. 【jvm】java jvm 报错 OutOfMemoryError: GC overhead limit exceeded
  12. 【Kafka】kafka console received unknown topic or partition error listOffset request
  13. 机器学习与计算机视觉(slam技术)
  14. 原始数据格式无法识别_虹膜识别技术优势明显 为何难以开启“刷眼“时代
  15. Html5 video 标签中视频有声音没画面问题解决过程
  16. Keras AlexNet 网络实现 Kaggle 猫狗大战
  17. hive 旧版本版本下载
  18. 金万维异速联客户端 盛装入驻苹果应用商店
  19. 批判性思维_通过批判性反思评估可视化创作系统
  20. 什么是ubuntu ?

热门文章

  1. 深入浅出讲解LDA主题模型(一)
  2. tensorflow: 重置/清空计算图
  3. CSU1020: 真三国无双
  4. Access手工注入
  5. Spring MVC 学习总结(五)——校验与文件上传
  6. Excel对话框大全
  7. .NET 调用外部exe程序,出现已停止工作
  8. 【驱动】USB驱动·入门
  9. 13个坏习惯让IT工作者中过劳(转)
  10. 看看junit在一个具体的项目中