zoukankan      html  css  js  c++  java
  • Python大数据分析之数据分析

    # -*- coding: utf-8 -*-
    
    #1,基本统计分析
    ==================
    常用统计函数:
    size:计数,不需要括号
    sum():求和
    mean():均值
    var():方差
    std():标准差
    ==================
    
    import pandas as pd
    df = pd.read_excel(r'd:
    z.xlsx',sheet_name='Sheet3')
    
    print(df.数分.describe())
    print(df.describe())
    print(df.解几.size)
    print(df.解几.sum())
    print(df.解几.var())
    
    import numpy as np
    print(np.average(df['数分']))  #用numpy的ave函数求均值
    print(df.mode())  #计算众数
    
    
    #2,分组分析
    ==================
    根据分组字段将分析对象划分成不同的部分,以对比分析各组之间差异性。
    df.groupby(by=['分类1','分类2',...])['被统计的列'].agg({列名1:统计函数1,
             列名2:统计函数2,...})
    by表示按列进行分组,常用统计函数有size计数,sum求和,mean求均值
    ==================
    
    import numpy as np
    from pandas import read_excel
    df = read_excel(r'd:
    z.xlsx',sheet_name='Sheet3')
    #英语、体育、军训列的分数必须为int,否则结果会空
    print(df.groupby(by='班级')['英语','体育','军训'].mean())
    print(df.groupby(by=['班级','性别'])['军训'].agg(
            {'总分':np.sum,
             '人数':np.size,
             '平均值':np.mean,
             '方差':np.var,
             '标准差':np.std,
             '最高分':np.max,
             '最低分':np.min}))
    
    #3,分布分析
    #根据分析的目的,将数据进行等距或不等距分组,研究各组分布规律。
    import pandas as pd
    import numpy
    df = pd.read_excel(r'd:
    z.xlsx',sheet_name='Sheet3')
    df['总分']=df.英语+df.体育+df.军训+df.数分+df.高代+df.解几
    #将数据分为3段
    bins=[min(df.总分)-1,400,450,max(df.总分)+1]
    #给3段数据贴标签
    labels=['400以下','400到450','450以上']
    df['总分分层']=pd.cut(df.总分,bins,labels=labels)
    print(df)
    
    
    #4,交叉分析
    ==================
    分析两个或以上分组变量之间的关系,以交叉表形式进行变量间关系的对比分析。
    pivot_table(values,index,columns,aggfunc,fill_value),将数据列透视为新表。
    values表示透视新表中的值,可选参数
    index透视表中的索引,必选参数
    columns透视表中的列,用来分割数据,可选参数
    aggfunc统计函数,可选参数
    fill_value表示NA值的统一替换,可选参数
    ==================
    #接上面代码
    #按index进行分组,透视所有int列
    print(df.pivot_table(index=['班级','姓名'])) 
    #透视指定列
    print(df.pivot_table(['军训','英语','体育'],index=['班级','姓名']))
    #按index进行分组,透视values列,列名按性别分开显示
    print(df.pivot_table(values=['总分'],
                         index=['总分分层'],
                         columns=['性别'],
                         aggfunc=[numpy.size,numpy.mean]))
    
    
    #5,结构分析
    #在分组分析及交叉分析的基础之上,计算各组成部分所占的比重。
    df_pt=df.pivot_table(values=['总分'],
                         index=['班级'],
                         columns=['性别'],
                         aggfunc=[numpy.sum])
    print(df_pt)
    print("!!!!",df_pt.sum())    #默认按行合计
    print("@@@@",df_pt.sum(axis=1))  #按列合计 
    print("####",df_pt.div(df_pt.sum(axis=1),axis=0))  #按列占比
    print("$$$$",df_pt.div(df_pt.sum(axis=0),axis=1))  #按行占比
    
    
    #6,相关分析
    ==================
    研究现象之间是否存在某种依赖关系,并对具有依赖关系的现象探讨相关方向和程度
    DataFrame.corr() 计算每列两两之间的相似度,返回DataFrame
    Series.corr() 计算该序列与传入的序列之间的相关度,返回一个数值型,大小为相关度
    ==================
    
    import pandas as pd
    import numpy as np
    df = pd.read_excel(r'd:
    z.xlsx',sheet_name='Sheet3')
    print(df['高代'].corr(df['数分']))
    print(df.loc[:,['英语','体育','军训','解几','数分','高代']].corr())
  • 相关阅读:
    WinCE启动次数的记录
    基于eclipse创建android的helloworld工程
    Android上常见度量单位【xdpi、hdpi、mdpi、ldpi】解读
    广东华信金溢信息技术有限公司(Android+WINCE)
    深圳华禹工控(Android+WINCE)
    广州捷宝科技(Android+WINCE+JBOS)
    WinCE NAND flash
    C#验证是否是真的图片格式
    解决Jquery对input file控件的onchange事件只生效一次的问题
    IE input file隐藏不能上传文件解决方法
  • 原文地址:https://www.cnblogs.com/xiaohuhu/p/12027267.html
Copyright © 2011-2022 走看看