数据分析处理——透析表和交叉表

1透视表

  数据透视表(Pivot Table)是一种交互式的表,可以进行某些计算,如求和与计数等。所进行的计算与数据跟数据透视表中的排列有关。 之所以称为数据透视表,是因为可以动态地改变它们的版面布置,以便按照不同方式分析数据,也可以重新安排行号、列标和页字段。

  数据分析中的透析表十分强大,甚至可以说是相当于分组聚合外加哑变量三个步骤了。但有个前提就是:在使用透析表之前,你必须明确知道自己想要的是什么,需要做什么!

  当然,有时候你很难直接看出需求。这时候我们就得添加项目和检查每一步来验证我们一步一步得到期望的结果。为了查看什么样的外观最能满足你的需要,就不要害怕处理顺序和变量的繁琐。

函数

pands.pivot_table(data, values=None, index=None, columns=None, aggfunc=‘mean‘, fill_value=None, margins=False, dropna=True, margins_name=‘All‘)

名称 说明
data 接收DataFrame。表示透视表的数据。无默认。
values 接收字符串。用于指定想要聚合的数据字段名,默认使用全部数据。默认为None。
index 接收string或list。表示行分组键。默认为None。
columns 接收string或list。表示列分组键。默认为None。
aggfunc 接收functions。表示聚合函数。默认为mean。
fill_value 接受scalar。表示是否将fill_value的数值代替缺失值。默认为None。
margins 接收boolearn。表示汇总(Total)功能的开关,设为True后结果集中会出现名为“ALL”的行和列。默认为True。
dropna 接收boolearn。表示是否删掉全为NaN的列。默认为False。
margins_name  接收string。表示margins为True时,‘All‘的名称。

OK,下面开始示范。

# 导入库包
import pandas as pd
import numpy as np

#数据,自编
data = pd.read_csv(‘./data.csv‘,encoding=‘gbk‘)
data.head()
  detail_id order_id dishes_id logicprn_name parent_class_name dishes_name itemis_add counts amounts cost place_order_time discount_amt discount_reason kick_back add_inprice add_info bar_code picture_file emp_id
0 2956 417 610062 NaN NaN 蒜蓉生蚝 0 1 49 NaN 2016/8/111:05:00 NaN NaN NaN 0 NaN NaN caipu/104001.jpg 1442
1 2958 417 609957 NaN NaN 蒙古烤羊腿 0 1 48 NaN 2016/8/111:07:00 NaN NaN NaN 0 NaN NaN caipu/202003.jpg 1442
2 2961 417 609950 NaN NaN 大蒜苋菜 0 1 30 NaN 2016/8/111:07:00 NaN NaN NaN 0 NaN NaN caipu/303001.jpg 1442
3 2966 417 610038 NaN NaN 芝麻烤紫菜 0 1 25 NaN 2016/8/111:11:00 NaN NaN NaN 0 NaN NaN caipu/105002.jpg 1442
4 2968 417 610003 NaN NaN 蒜香包 0 1 13 NaN 2016/8/111:11:00 NaN NaN NaN 0 NaN NaN caipu/503002.jpg 1442
# 先看一下数据大小
data.shape
(10037, 19)
# 取4列中的前20行
pd.pivot_table(data[[‘order_id‘,‘counts‘,‘amounts‘,‘dishes_name‘]][:20], values=[‘counts‘], index=‘order_id‘, columns=‘dishes_name‘, aggfunc=‘count‘, fill_value=0, margins=False, dropna=True, margins_name=‘All‘)
  counts
dishes_name 大蒜苋菜 干锅田鸡 桂圆枸杞鸽子汤 爆炒鳝碌 番茄有机花菜 番茄炖秋葵 番茄甘蓝 白斩鸡 白饭/大碗 皮蛋瘦肉粥 芝士烩波士顿龙虾 芝麻烤紫菜 葱姜炒蟹 蒙古烤羊腿 蒜蓉生蚝 蒜香包 重庆特色油烧兔 长城窖酿解百纳红酒干红葡萄酒 香烤牛排
order_id                                      
301 0 1 1 0 1 0 0 1 1 0 0 0 0 0 0 0 0 0 1
413 0 1 0 1 0 1 1 0 0 1 1 0 1 0 0 0 1 1 0
417 1 0 0 0 0 0 0 0 0 0 0 1 0 1 1 1 0 0 0

2交叉表

  交叉表是一种特殊的透视表,主要用于计算分组频率。利用pandas提供的crosstab函数可以制作交叉表,crosstab函数的常用参数和使用格式格式如下。

函数

pandas.crosstab(index, columns, values=None, rownames=None, colnames=None, aggfunc=None, margins=False, dropna=True, normalize=False)

名称 说明
index 接收string或list。表示行索引键。无默认。
columns 接收string或list。表示列索引键。无默认。
values 接收array。表示聚合数据。默认为None。
aggfunc 接收function。表示聚合函数。默认为None。
rownames 表示行分组键名。无默认。
colnames 表示列分组键名。无默认。
dropna 接收boolearn。表示是否删掉全为NaN的。默认为False。
margins 接收boolearn。默认为True。汇总(Total)功能的开关,设为True后结果集中会出现名为“ALL”的行和列。
normalize 接收boolearn。表示是否对值进行标准化。默认为False。
# 与上边透析表一样的行列和值(输出结果有点多,故后边省略)
pd.crosstab(index=data[‘order_id‘],columns=data[‘dishes_name‘],values = data[‘counts‘],aggfunc = np.sum)

原文地址:https://www.cnblogs.com/WoLykos/p/9408147.html

时间: 2024-11-05 18:29:38

数据分析处理——透析表和交叉表的相关文章

RS导出Excel交叉表角对应的列占用多列问题

在Cognos报表展示的时候,很多用户为了计算会把数据报表导出成excel然后再做统计,于是乎我做的一张报表导出成Excel的时候就出现了这样的问题 从上图可以看出交叉表角对应的列 ‘一级手术’和‘二级手术’在报表里面是一列数据,但是导出的时候却占用了两列,而后面非交叉表角对应的列导出显示正常 问题分析: 1:是表格布局问题,于是看了看其他导出正常的,表格布局正常啊,于是排除了表格的问题 2:由于交叉表角对应的列才有导出问题,于是把原因归结在交叉表角以及所对应的列的范围内 解决办法: 首先来看一

实验8-SPSS交叉表分析

SPSS---交叉表分析 除了对单个变量的分析,在实际研究中,还需要对多个变量在不同取值情况下的数据分布情况,从而进一步分析变量之间的相互影响和关系,这就要用到交叉表分析. 交叉表是一种行列交叉的分类汇总表格,行和列上至少各有一个分类变量,行和列的交叉处可以对数据 进行多种汇总计算,如求和.平均值.计数等. 交叉表分析是用于分析两个或两个以上分组变量之间的关联关系,以交叉表格的形式进行分组变量间关系的对比分析.它的原理是从数据的不同角度综合进行分组细分,以进一步了解数据的构成.分布特征,它也是描

交叉表与透视变

交叉表与透视表什么作用 分析两个离散值值间得相关性 探究股票的涨跌与星期几有关? 以下图当中表示,week代表星期几,1,0代表这一天股票的涨跌幅是好还是坏,里面的数据代表比例 可以理解为所有时间为星期一等等的数据当中涨跌幅好坏的比例 使用crosstab(交叉表)实现上图 交叉表:交叉表用于计算一列数据对于另外一列数据的分组个数(寻找两个列之间的关系) pd.crosstab(value1, value2) DataFrame.pivot_table([], index=[]) 原文地址:ht

Pandas:透视表(pivotTab)和交叉表(crossTab)

import numpy as np import pandas as pd from pandas import Series,DataFrame 一.透视表(pivotTab) 透视表就是将指定原有DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数(默认情况下式mean函数). df = DataFrame({'类别':['水果','水果','水果','蔬菜','蔬菜','肉类','肉类'], '产地':['美国','中国','中国','中国','新西兰','新西兰',

【资源分享】透析表

今日分享excel的透析表内容 链接: https://pan.baidu.com/s/1vCST7la0V_5wX0T1aZzHnw 原文地址:https://www.cnblogs.com/zhoujianjie1988/p/11330324.html

DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表

原文:DevExpress XtraReports 入门六 控件以程序方式创建一个 交叉表 报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 在继续本示例之前,要把所有 必需的程序集 添加到项目的 引用 列表中,并且把一个按钮拖放到窗体上. 然后,以下列方式接管此按钮的

DevExpress XtraReports 入门五 创建交叉表报表

原文:DevExpress XtraReports 入门五 创建交叉表报表 本文只是为了帮助初次接触或是需要DevExpress XtraReports报表的人群使用的,为了帮助更多的人不会像我这样浪费时间才写的这篇文章,高手不想的看请路过 本文内容来DevExpress XtraReports帮助文档,如看过类似的请略过. 废话少说 开始正事 一.准备数据绑定 XRPivotGrid 控件 启动 MS Visual Studio (2005.2008 或 2010),并且新建一个或者打开一个现

JasperReport报表开发之转置交叉表

使用Jasper或BIRT等报表工具时,常会碰到一些非常规的统计,用报表工具本身或SQL都难以处理,比如源数据不符合交叉表的要求,需要转置后再呈现.集算器具有结构化强计算引擎,集成简单,可以协助报表工具方便地实现此类需求.下面通过一个例子来说明转置交叉表的实现过程. 数据库表booking汇总着各年度商品的预定数据,有四个字段,包括年份和三种预定状态,部分数据如下: 报表要求呈现指定年份及上一年的预定情况,其中行组有三项,即三种预定状态,列组是年份,测度是当年的预定数据.此外要汇总出指定年份各预

交叉表、行列转换和交叉查询经典

交叉表.行列转换和交叉查询经典分类: SqlServer 2007-12-05 16:01 6776人阅读 评论(1) 收藏 举报sqlsqlserverinsertnull产品sql server交叉表.行列转换和交叉查询经典一.什么是交叉表“交叉表”对象是一个网格,用来根据指定的条件返回值.数据显示在压缩行和列中.这种格式易于比较数据并辨别其趋势.它由三个元素组成: 行列摘要字段“交叉表”中的行沿水平方向延伸(从一侧到另一侧).在上面的示例中,“手套”(Gloves) 是一行.“交叉表”中的