Python数据分析之pandas统计分析 |
您所在的位置:网站首页 › pandas最大值最小值 › Python数据分析之pandas统计分析 |
pandas模块为我们提供了非常多的描述性统计分析的指标函数,如总和、均值、最小值、最大值等,我们来具体看看这些函数: 1、随机生成三组数据 import numpy as np import pandas as pd np.random.seed(1234) d1 = pd.Series(2*np.random.normal(size = 100)+3) d2 = np.random.f(2,4,size = 100) d3 = np.random.randint(1,100,size = 100) 2、统计分析用到的函数 d1.count() #非空元素计算 d1.min() #最小值 d1.max() #最大值 d1.idxmin() #最小值的位置,类似于R中的which.min函数 d1.idxmax() #最大值的位置,类似于R中的which.max函数 d1.quantile(0.1) #10%分位数 d1.sum() #求和 d1.mean() #均值 d1.median() #中位数 d1.mode() #众数 d1.var() #方差 d1.std() #标准差 d1.mad() #平均绝对偏差 d1.skew() #偏度 d1.kurt() #峰度 d1.describe() #一次性输出多个描述性统计指标 必须注意的是,descirbe方法只能针对序列或数据框,一维数组是没有这个方法的自定义一个函数,将这些统计指标汇总在一起: def status(x) : return pd.Series([x.count(),x.min(),x.idxmin(),x.quantile(.25),x.median(), x.quantile(.75),x.mean(),x.max(),x.idxmax(),x.mad(),x.var(), x.std(),x.skew(),x.kurt()],index=['总数','最小值','最小值位置','25%分位数', '中位数','75%分位数','均值','最大值','最大值位数','平均绝对偏差','方差','标准差','偏度','峰度'])执行该函数,查看一下d1数据集的这些统计函数值: df = pd.DataFrame(status(d1)) df结果: 在实际的工作中,我们可能需要处理的是一系列的数值型数据框,如何将这个函数应用到数据框中的每一列呢?可以使用apply函数,这个非常类似于R中的apply的应用方法。 将之前创建的d1,d2,d3数据构建数据框: df = pd.DataFrame(np.array([d1,d2,d3]).T, columns=['x1','x2','x3']) df.head() df.apply(status)结果:
student: score: 现实生活中的数据是非常杂乱的,其中缺失值也是非常常见的,对于缺失值的存在可能会影响到后期的数据分析或挖掘工作,那么我们该如何处理这些缺失值呢?常用的有三大类方法,即删除法、填补法和插值法。 删除法当数据中的某个变量大部分值都是缺失值,可以考虑删除改变量;当缺失值是随机分布的,且缺失的数量并不是很多是,也可以删除这些缺失的观测。 替补法对于连续型变量,如果变量的分布近似或就是正态分布的话,可以用均值替代那些缺失值;如果变量是有偏的,可以使用中位数来代替那些缺失值;对于离散型变量,我们一般用众数去替换那些存在缺失的观测。 插补法插补法是基于蒙特卡洛模拟法,结合线性模型、广义线性模型、决策树等方法计算出来的预测值替换缺失值。 此处测试使用上面学生成绩数据进行处理 查询某一字段数据为空的数量 sum(pd.isnull(stu_score2['Score'])) 结果:2 直接删除缺失值 stu_score2.dropna()删除前: 使用一个常量来填补缺失值,可以使用fillna函数实现简单的填补工作: 1、用0填补所有缺失值 df.fillna(0)实际工作中,经常会碰到多个DataFrame合并后希望将数据进行打乱。在pandas中有sample函数可以实现这个操作。 df = df.sample(frac=1) 这样对可以对df进行shuffle。其中参数frac是要返回的比例,比如df中有10行数据,我只想返回其中的30%,那么frac=0.3。有时候,我们可能需要打混后数据集的index(索引)还是按照正常的排序。我们只需要这样操作 df = df.sample(frac=1).reset_index(drop=True) |
今日新闻 |
推荐新闻 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |