数据挖掘与机器学习-第二章 Pandas
1 | 统计学是关于认识客观现象总体数量特征和总体数量关系的科学 |
1 | 统计学常用指标: |
Pandas快速入门
简介
1 | 官网链接:http://pandas.pydata.org/ |
功能


数据结构
Series(一维)
1 | Series是一种类似于一维数组的对象,它由一组数据(各种NumPy数据类型)以及一组与之相关的数据标签(即索引)组成 |
创建
1 | >>>ser1 = pd.Series(range(4)) |

1 | Series的index和values |



读写
下标访问和切片

运算
Series间的计算

Series函数的使用
mean
1 | >>>a = pd.Series([1, 2, 3, 4, 5]) |
isin


unique和value_counts

sort_index和sort_values

sample 抽样
1 | s.sample(n=None,frac=None,replace=False,weights=None,random_state=None,axis=None) # dataframe也可以 |

统计运算(describe、isnull函数)
DataFrame(二维)
创建

查看
head和info
index和columns、dtypes、values
索引对象




索引操作


重新索引


groupby操作



排序和排名
对行或列索引进行排序

汇总和计算描述统计
常用描述和汇总统计函数

唯一值以及成员资格

缺失值处理

滤除缺失数据方法


填充缺失数据






对于DataFrame,根据任意一个轴上的索引进行排序
可以指定升序降序
按值排序
对于DataFrame,可以指定按值排序的列
rank函数
函数应用和映射

apply方法
applymap方法
算数运算

Panel(三维)
正态分布(findn函数需要用到)
名字
1 | 又叫高斯分布、正常分布、常态分布 |
1 | 就是说这些指标背后的数据都会呈现一种中间密集、两边稀疏的特征。 |
连续型随机变量研究区间概率
1 | 首先,正态分布属于“连续型随机变量分布”的一类。我们知道,对于连续型随机变量,我们不关注“点概率”,只关注“区间概率”,这是什么意思? |
1 | 我们看这个例子,假定随机变量X指是“北京市成年男子的身高”,理论上它可以取任意正数,所以我们把它当做一个连续型随机变量(连续型变量,就是指可以取某一区间或整个实数轴上的任意一个值的变量)来看待。这里,我们先想一想如何计算P(X =1.87)? 即身高恰好完全exactly等于1.87的概率是多少,这就是所谓的“点概率”。更极端一点,让随机变量Y是[0,1]这个区间上的任意一点,那么Y的取值有多少个呢?无数多个,我们数不清楚,所以Y 取某一个具体的值的概率是1除以无数,即可以看做是0。于是,这里透露一个很重要的结论:连续型随机变量取任意某个确定的值的概率均为0。因此,对于连续型随机变量,我们通常不研究它取某个特定值的概率,而研究它在某一段区间上的取值,比如身高在1.70~1.80的概率。 |
概率密度函数
1 | 对于初学者来讲,“概率密度”可能是最不友好的一个概念,直接谈概率不行吗,好好的为什么要生出一个“密度”? |
1 | 下图中的三条曲线f(x),就是概率密度函数,各种形式的概率就是相对应的曲线下面积。这里,数学基础不太好的同学不用特别深挖积分的计算过程,但对这三张图与对应的概率表达形式,同学们要熟知。 |

均数和标准差
1 | 前面说对于正态分布的概率密度函数以及积分不用特别关注,那真正需要关注的是什么呢?就是均数和标准差。这里需要明确的是,一旦谈及正态分布,我们首先要想到它的两个参数:均数和标准差。每次一遇到正态分布就迅速找这两个概念,最好形成条件反射,因为这两个数才是我们日后运用正态分布解决实际问题的“利器”。 |
1 | 关于正态分布均数和标准差的性质,我们这里简单总结一下: |

标准化与查表求概率
1 | 接下来,我们通过一个例子来看如何通过查表法计算正态分布变量在某个区间的概率。首先,我们看这个问题,说小明每天上学的通勤时间是一个随机变量X,这个变量服从正态分布。统计他过去20天的通勤时间(单位:分钟):26、33、65、28、34、55、25、44、50、36、26、37、43、62、35、38、45、32、28、34。现在我们想知道他上学花30~45分钟的概率。 |
1 | 然后,我们进行标准化,这一步很重要,也称z变换。通过标准化,所有服从一般正态分布的随机变量都变成了服从均数为0,标准差为1的标准正态分布。对于服从标准正态分布的随机变量,专门用z表示。因此,求P(30 < X < 45),就转换成了求P(-0.77 < Z < 0.54),标准化的具体计算为: |
1 | 下面我们正式看看怎么查表,前面我们已经把问题转化成求P (-0.77 ≤ Z ≤0.54) = P (Z ≤ 0.54)–P (Z ≤ -0.77),于是,我们需要找当Z≤0.54和Z≤-0.77的概率值然后相减即可。 |
标准差(预备知识)
1 | 平均值:(x1+x2+...)/n= |
三个百分数68%、95%、99.7%
1 | 熟悉了Z变换、查表求概率,我们来看看正态分布运用十分广泛的三个百分数:68%,95%,99.7%。先看标准正态分布,我们知道一个变量服从标准正态分布,它的均数是0,标准差是1,那除了这两个数字之外,我们还能获得更多的信息吗?可以,这三个百分数告诉了我们答案。 |
1 | 虽然理论上正态随机变量可以取无数个值,定义域是整个实数轴,但实际上在[-1,1]这个区间就包含了它可以取的68%的值,[-2,2]区间包含了95%的值,[-3,3]包含了它可能取的99.7%的值。这里的1,2,3分别代表一个、两个和三个标准差(标准正态分布的均数为0,标准差为1)。所以,根据这些,我们就可以推断,一个服从标准正态分布的变量,它的取值很不可能超过2,极不可能超过3。这个用处非常大,一下子把我们要研究的重心从整个实数轴缩小到[-3,3]这个区间。另外,这里虽然是以标准正态分布为例进行说明,但这个性质是完全可以推到普通的正态分布的变量的。百分数不变,不过均数和标准差不再是0和1,而是代入具体分布的均数和标准差即可。下面我们来看一个实际应用的例子。 |
1 | 以上即为梳理的有关正态分布的关键知识点,希望大家在遇到假设检验和p值等概念的理解障碍时能回头看看这些最基础的要点,相信对你会有所帮助。 |
numpy.random.seed() 随机数 预备知识
1 | seed() 用于指定随机数生成时所用算法开始的整数值,如果使用相同的seed()值,则每次生成的随即数都相同,如果不设置这个值,则系统根据时间来自己选择这个值,此时每次生成的随机数因时间差异而不同。 |
1 | # 别人的见解 |
1 | 总结: |
