zoukankan      html  css  js  c++  java
  • pandas交叉表和透视表及案例分析

    一.交叉表:

    作用:

    交叉表是一种用于计算分组频率的特殊透视图,对数据进行汇总

    考察预测数据和正式数据的对比情况,一个作为行,一个作为列

    案例:

    医院预测病人病情:

    真实病情如下数组(B:有病,M:没病)

    true = np.load("./cancer_true.npy")     #load()加载数据
    true

    算法预测病情数据如下:

    predict = np.load("./cancer_predict.npy")
    predict

    现在要知道预测结果有多少预测正确,多少预测失败

    使用交叉表:

    #使用交叉表,调用crosstab()函数。

    参数如下:

    ['index', 'columns', 'values=None', 'rownames=None', 'colnames=None', 'aggfunc=None', 'margins=False', "margins_name='All'", 'dropna=True', 'normalize=False'],

    预测结果:

    pd.crosstab(index = true,columns=predict,rownames = ["确诊"],colnames = ["预测"],margins=True)

    可以看到预测正确的结果有36+17个,2个漏诊,2个误诊

    二.透视表:

    它根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中

    分组查看数据,和数据库中的group by是相同的功能。

    案例:

    分析人的使用左右手跟情商(eq)、智商(iq)的关系

     添加数据(伪造)

    df =DataFrame({"HAND":np.random.randint(0,10,size = 200),"sex":np.random.randint(0,2,size = 200),"iq":np.random.randint(0,100,size =200),"eq":np.random.randint(0,100,size = 200)})
    df

    (部分数据)

     对数据进行处理:

    使用透视表:

    调用pivot_table()函数

    参数有:

    ['data', 'values=None', 'index=None', 'columns=None', "aggfunc='mean'", 'fill_value=None',
    'margins=False', 'dropna=True', "margins_name='All'"],

    pd.set_option("display.float_format",lambda x:"%0.1f"%(x))

    pd.pivot_table(data = df,values = ["iq","eq"],index = ["HAND","sex"],aggfunc= "mean",margins = True)

     

    通过表分析字段之间的关系。

  • 相关阅读:
    antd vue如何在父组件里打开子组件(子组件是个模态框)?
    webpack知识点整理
    JavaScript中常用的方法汇总,全部整理好了,一定要收藏!
    从地址栏里面获取参数的值
    何为垫片?垫片是一种什么概念在js中?
    async 与 await使用
    纯手撸Promise
    如何使用 Promise?
    Notification 浏览器桌面通知的使用
    学习骨架屏(Skeleton Screens)技术
  • 原文地址:https://www.cnblogs.com/kuangkuangduangduang/p/10273857.html
Copyright © 2011-2022 走看看