交叉表和透视表

【python数据分析基础】—pandas透视表和交叉表 透视表是excel和其他数据分析软件中一种常见的数据汇总工具。它是根据一个或多个键对数据进行聚合,并根据行和列上的分组键将数据分配到各个矩形区域中。 阅读详情

利用Python实现数据透视表和交叉表

1、透视表 pivot table

透视表(pivot table)是常见的数据汇总工具,它根据一个或多个键对数据进行聚合,根据行和列上的分组键将数据分配到矩形区域中。pandas中使用pivot_table方法创建透视表,

pd.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean'

,fill_value=None,margins=False,dropna=True,margins_name='ALL')
  • data:DataFrame对象
  • values:要聚合的列或列的列表
  • index:数据透视的index,从原始数据的列中筛选
  • columns:数据透视表的columns,从原始数据的列中筛选
  • aggfunc:用于聚合的函数,默认为numpy,mean,支持numpy计算方法
import numpy as np
import pandas as pd              
date = ['2019-1-1','2019-1-2','2019-1-3']*3
date_time = pd.to_datetime(date)
df = pd.DataFrame({'date':date_time,
                   'key':list('abcdabcab'),
                   'values':np.random.rand(9)*10})
print('------------原数据------------')
print(df)
 
print('------------透视表1------------')
#也可以aggfunc='sum'
print(pd.pivot_table(df,values = 'values',index = ['date'],columns='key',aggfunc=np.sum))
 
print('------------透视表2------------')
#分别以date,key共同做数据透视,值为values:统计不同(date,key)情况下values的计数
#aggfunc=len(或者count):计数
print(pd.pivot_table(df,values = 'values',index = ['date','key'],aggfunc=len))

输出结果为:

------------原数据------------
        date key    values
0 2019-01-01   a  6.372699
1 2019-01-02   b  0.649605
2 2019-01-03   c  4.897285
3 2019-01-01   d  7.758373
4 2019-01-02   a  1.576888
5 2019-01-03   b  8.217029
6 2019-01-01   c  5.454403
7 2019-01-02   a  5.072132
8 2019-01-03   b  2.875602
------------透视表1------------
key                a          b         c         d
date                                               
2019-01-01  6.372699        NaN  5.454403  7.758373
2019-01-02  6.649020   0.649605       NaN       NaN
2019-01-03       NaN  11.092630  4.897285       NaN
------------透视表2------------
                values
date       key        
2019-01-01 a       1.0
           c       1.0
           d       1.0
2019-01-02 a       2.0
           b       1.0
2019-01-03 b       2.0
           c       1.0

2、交叉表:crosstab

默认情况下,crosstab计算因子的频率,比如用于str的数据透视分析

pd.crosstab(index,columns,values=None,rownames=None
,colnames=None,aggfunc=None,margins=False,dropna=True,normalize=False)
import numpy as np
import pandas as pd
 
df = pd.DataFrame({'A':[1,2,2,2,2],
                   'B':[3,3,4,4,4],
                   'C':[1,1,np.nan,1,1]})
 
print('------------原数据------------')
print(df)
 
#如果crosstab只接收两个series,他将提供一个频率表
#用A的唯一值,统计B唯一值的出现次数  (A,B)= (1,3)C出现了1次   (A,B)= (2,4)出现了3次
print('------------交叉表1------------')
print(pd.crosstab(df['A'],df['B']))
 
print('------------交叉表2------------')
print(pd.crosstab(df['A'],df['B'],normalize=True))#以频率的方式显示
 
print('------------交叉表3------------')
print(pd.crosstab(df['A'],df['B'],values=df['C'],aggfunc=np.sum))#values:根据因子聚合的值数组
#aggfunc:如果未传递values数组,则计算频率表,如果传递数组,则按照指定计算
#这里相当于以A和B界定分组,计算出每组中第三个系列C的值
 
print('------------交叉表4------------')
print(pd.crosstab(df['A'],df['B'],values=df['C'],aggfunc=np.sum,margins=True))
#margins:布尔值,默认值False,添加行/列边距(小计)
------------原数据------------
   A  B    C
0  1  3  1.0
1  2  3  1.0
2  2  4  NaN
3  2  4  1.0
4  2  4  1.0
------------交叉表1------------
B  3  4
A      
1  1  0
2  1  3
------------交叉表2------------
B    3    4
A          
1  0.2  0.0
2  0.2  0.6
------------交叉表3------------
B    3    4
A          
1  1.0  NaN
2  1.0  2.0
------------交叉表4------------
B      3    4  All
A                 
1    1.0  NaN  1.0
2    1.0  2.0  3.0
All  2.0  2.0  4.0

pandas的文件读取和写入

  • 读取
 
    #excle文件读取
    pd.read_excel(io, sheetname=0, header=0, skiprows=None, skip_footer=0, index_col=None, names=None, parse_cols=None, parse_dates=False, date_parser=None, na_values=None, thousands=None, convert_float=True, has_index_names=None, converters=None, dtype=None, true_values=None, false_values=None, engine=None, squeeze=False, **kwds)
    #参数解析
io:字符串,路径对象(pathlib)。Path或py._path.local.LocalPath)、类似文件的obiect、panda ExcelFile或xlrd工作簿。字符串可以是URL。有效的URL方案包括http、ftp、53和file。对于文件url,需要一个主机。例如,一个本地文件可以是file://localhost/path/to/workbook.xlsx 
sheetname: string, int, string /int的混合列表,或者None,默认值为a字符串用于表名,整数用于零索引的表位置。字符串/整数列表用于请求多个工作表。
#csv文件读取 
 pd.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer', names=None, index_col=None, usecols=None, squeeze=False, prefix=None, mangle_dupe_cols=True, dtype=None, engine=None, converters=None, true_values=None, false_values=None, skipinitialspace=False, skiprows=None, nrows=None, na_values=None, keep_default_na=True, na_filter=True, verbose=False, skip_blank_lines=True, parse_dates=False, infer_datetime_format=False, keep_date_col=False, date_parser=None, dayfirst=False, iterator=False, chunksize=None, compression='infer', thousands=None, decimal=b'.', lineterminator=None, quotechar='"', quoting=0, escapechar=None, comment=None, encoding=None, dialect=None, tupleize_cols=False, error_bad_lines=True, warn_bad_lines=True, skipfooter=0, skip_footer=0, doublequote=True, delim_whitespace=False, as_recarray=False, compact_ints=False, use_unsigned=False, low_memory=True, buffer_lines=None, memory_map=False, float_precision=None)
    #参数解析
    filepath_or_buffer : 字符串文件路径,
        
  • 写入
sq.to_excel(excel_writer, sheet_name='Sheet1', na_rep='', float_format=None, columns=None, header=True, index=True, index_label=None, startrow=0, startcol=0, engine=None, merge_cells=True, encoding=None, inf_rep='inf', verbose=True, freeze_panes=None)

 sheet_name :excel表名命名
 na_rep : 缺失值填充 ,可以设置为字符串,如果na_rep设置为bool值,则写入excel时改为0和1;也可以写入字符串或数字
columns :选择输出的的列存入
header :指定作为列名的行,默认0,即取第一行,数据为列名行以下的数据;若数据不含列名,则设定 header = None;
index:默认为True,显示index,当index=False 则不显示行索引(名字)
index_label:设置索引列的列名
float_format:设置输入格式


# excel文件写入
import pandas as pd
import numpy as np

data = np.arange(1,101).reshape((10,10))
data_df = pd.DataFrame(data)
data_df.columns = ['A','B','C','D','E','F','G','H','I','J']
data_df.index = ['a','b','c','d','e','f','g','h','i','j']

writer = pd.ExcelWriter('my.xlsx')
data_df.to_excel(writer,float_format='%.5f')
writer.save()

Python数据分析 | (31) 透视表和交叉表 目录 1. 透视表 2. 交叉表:crosstab 3. 总结 1. 透视表 透视表(pivot table)是各种电子表格程序和其他数据分析软件中一种常见的 数据汇总工具。它根据一个或多个键对数据进行聚合,并根据行和列上的分 组键将数据分配到各个矩形区域中。在Python和pandas中,可以通过本博客所 介绍的groupby功能以及(能够利用层次化索引的)重塑运算制作透视表。 Da... 阅读详情

相关推荐

第2关:Pandas创建透视表和交叉表

任务描述 本关任务:使用Pandas加载tip.csv文件中的数据集,分别用透视表和交叉表统计顾客在每种用餐时间、每个星期下的小费总和情况。 相关知识 透视表 透视表是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它根据一个或多个键对数据进行聚合,并根据行和列上得分组建将数据分配到各个矩形区域中。在pandas中,可以通过pivot_table函数创建透视表。 pivot_talbe函数的参数: DataFrame.pivot_table(self, values=None, index=No

SorrymakerS的博客 3357

Excel/WPS做数据透视表,即对变量做交叉汇总(列联表)

编号性别家庭地区月生活费月衣物支出买衣服因素1男大城市800200价格2女小城市600180品牌3男中城市500110样式4男小城市900140价格5女中城市500200样式6男大城市600360品牌7女大城市1100650皮牌8男小城市6000200价格9女中城市700410样式注意:数据源的首行必须有列标题。1.选择插入-数据透视表,点击确定则会出现如下的数据透视表的初始状况。2.分别将右边的...

Hellolijunshy的博客 1万+

Pandas 透视表和交叉表

透视表和交叉表都是在数据分析中用于汇总和分析数据的工具,它们背后的数学原理有些类似,但也有一些不同之处。文末附有ppt

m_main的博客 2278

【Python】数据分析.pandas.透视表与交叉表

Python----数据分析-pandas.创建透视表与交叉表 目录: 一、透视表 二、交叉表 一、透视表 数据透视表是数据分析中常见的工具之一,根据一个或多个键值对数据进行聚合,根据行或列的分组将数据划分到各个区域中。说到分组,除了之前所用到的groupby函数,直接使用透视表提供的pivot_table 方法更加方便。 pandas.pivot_table(data,values=None,index=None,columns=None,aggfunc='mean',fill_value=Non

懂得一千零一种,赋予你失败的方法! 5198

Python之美——Python2与Python3多版本共存

Python多版本共存的方法Python2、Python3共存的方法python2下载及环境变量配置第一步、打开Python官网,下载Python2第二步、python2环境变量配置测试结果 Python2、Python3共存的方法 方法如下: 1.先确保不同版本解释器的python.exe所在的路径在环境变量中 2.拷贝各自的python.exe并重命名即可 步骤(理解不了下面有图示): 1、首先你需要将不同的python版本安装,且都已经将跟版本的环境变量配置好了,python3和2的下载方式

chenchen5152的博客 3946

单机多环境部署apollo 2.3.0

理解apollo的整体架构后,对比nacos配置中心功能点,其设计的复杂度以及完整度相较nacos而言更为丰富 对于不同的环境,例如 FAT, PRO 在部署时进程已经完全物理隔离,并且每个环境config/adminservice依赖的数据也完全物理隔离(连接不同的db),在数据隔离与安全方面做的很完善,但同时也提升了架构的复杂度 而 portal 可以管理多个环境,单节点部署虽然有单点问题,但并不会影响业务从configservice读取配置, 挂掉只要重启就可以,只是在

Life is a starting point everywhere 1299

pandas - 交叉表与透视表

学习目标 应用crosstab和pivot_table实现交叉表与透视表 应用:股票的每日涨跌跟星期几关系大 1 交叉表与透视表什么作用 探究股票的涨跌与星期几有关? 以下图当中表示,week代表星期几,1,0代表这一天股票的涨跌幅是好还是坏,里面的数据代表比例 可以理解为所有时间为星期一等等的数据当中涨跌幅好坏的比例 2 使用crosstab(交叉表)实现上图 交叉表:交叉...

apollo_miracle的博客 1799

华为OD机试 - 末世分配资源包 - 二分查找 + 贪心(Python/JS/C/C++ 新系统 100分)

本专栏收录于《华为OD机试真题(Python/JS/C/C++)》。刷的越多,抽中的概率越大,私信哪吒,备注华为OD,加入华为OD刷题交流群,每一题都有详细的答题思路、详细的代码注释、3个测试用例、为什么这道题采用XX算法、XX算法的适用场景,发现新题目,随时更新。末世时代,政府为各地方配资源,现有资源分配表 nums[n],要求按如下规则分配给 k 个营地:在最优平均分配情况下,得到最大团队所获得的资源数4,3,6,9,7 216最佳划分之一:[4,3,6] -> 13 [9,7] -> 16最大

学Java,找哪吒 224

Pandas透视表和交叉表

参考:《利用Python进行数据分析》 透视表与交叉表的介绍和例子

hustqb的博客 3万+

汇川Easy系列斜坡函数功能块(支持状态输出)

IN rSetValue REAL 0.000000 0.000000 不保持 目标值 1IN rMaxValue REAL 0.000000 0.000000 不保持 最大目标值 2IN rMinValue REAL 0.000000 0.000000 不保持 最小目标值 3IN rSmoothTime REAL 100.000000 100.0000 不保持 最小到最大值平滑时间 单位 秒 4IN diTs DINT 10 10 不保持 函数调用周期采样时间中断时间 5。

RXXW_Dor的博客 457

GraphRAG深度解析:架构设计与实战案例

生成模块结合检索到的图数据和用户输入的查询,生成高质量的文本输出。通过结合图数据库中的知识,模型可以更准确地回答用户的问题,提供更优质的客户服务。通过分析用户的行为和偏好,结合图数据库中的知识,模型可以为用户提供个性化的推荐。:通过图数据库存储和检索结构化的知识,为语言模型提供丰富的背景信息,提升生成内容的质量和准确性。:选择合适的图数据库,如Neo4j、OrientDB等,以支持高效的图数据存储和检索。:利用图数据库的高效检索能力,快速找到与用户查询最相关的图元素,提高系统的响应速度。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1593

透视表和交叉表

透视表和交叉表透视表交叉表 透视表 透视表(pivot table)是常见的数据汇总工具,它根据一个或多个键对数据进行聚合,根据行和列上的分组键将数据分配到矩形区域中。pandas中使用pivot_table方法创建透视表, 官方文档中的例子, 以C列作为分组列,将C传入columns参数,生成的透视表中C列不同的值作为分类值。指定A、B两列为索引列,将两列列名传递给index参数。对透视表...

Jakob_Hu的博客 3745

基于STM32的智能婴儿床设计(蓝牙通信+摄像头监控)_315

本项目设计并实现了一款基于STM32微控制器的智能婴儿床系统,通过多种传感器和智能控制模块为家长提供更便捷和高效的婴儿照护解决方案。系统包括婴儿哭泣检测、湿度监测、空气质量检测、温度监控等多项功能,并通过蓝牙与手机APP进行数据传输和远程控制。婴儿床内置摇摇床和安抚音乐播放功能,能够在婴儿哭泣时自动启动摇摇床并播放安抚音乐。此外,系统还支持摄像头远程监控,让家长实时查看婴儿的状态。整个系统采用STM32F103RCT6作为核心控制单元,结合声音传感器、湿度传感器、MQ135空气质量传感器。

865

Pandas中透视表和交叉表

一、 什么是透视表? 二、为什么要使用pivot_table? 三、pivot_table api认识 四、如何使用pivot_table? 五、pivot_table vs. groupby 六、轴转换(透视功能)unstack 七、交叉表crosstab 八、小结

但行好事,莫问前程 2411

【三维激光扫描】第二章:国内外三维激光扫描设备简介

地面三维激光扫描仪是地面激光扫描系统中最主要的硬件设备,近年来得到了快速发展,主要体现在品牌数量、性能指标、类型等方面的变化。本章主要介绍国内外主要设备的基本情况,对国内外研究现状进行分析,最后指出目前存在的问题与未来的发展趋势。 2.1 国外地面三维激光扫描仪简介 目前,生产地面三维激光扫描仪的公司比较多,随着地面三维激光扫描技术应用普及程度的不断提高,国外产品在中国的市场目前还占主导地位。它们各自的产品在性能指标上有所不同,以下简要介绍有代表性的公司产品。 2.1.1 奥地利 Riegl公司的.

智慧空间实验室 4643

如何在 Mac 上下载安装 Xcode——并为 iOS 开发更新它原文

下载 Xcode安装命令行工具打开新版本删除文件注意,我在下面的步骤中列出了一些终端命令。这些命令可以被输入到你现在的工作目录中。这意味着你不需要导航到任何特定的文件夹。如果你真的想这样做,你可以在输入下面的步骤中的命令之前先输入== cd==。这将使你返回到主文件夹。

专注于AI领域前沿知识,业余爱好开发软件 4667

Pandas:交叉表和透视表

print("交叉表结果:")交叉表和透视表都是强大的数据分析工具,能够帮助你从复杂的数据集中提取有价值的信息。选择哪种方法取决于数据的特性及分析的需求。

Wei_sx的博客 653

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Pandas_07透视表和交叉表

一、透视表 透视表(pivottable)是各种电子表格程序和其他数据分析软件中一种常见的数据汇总工具。它根据一个或多个键对数据进行聚合,并根据行和列上得分组建将数据分配到各个矩形区域中。在Python和pandas中,可以通过groupby功能以及(能够利用层次化索引的)重塑运算制作透视表。DataFrame有一个pivot_table方法,此外还有一个顶级的pandas.pivot_table函数。除了能为groupby提供便利之外,pivot_table还可以添加分项小计(也叫margins)。

baidu_41805096的博客 949

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

pandas交叉表与透视表pd.crosstab()和pd.pivot_table()函数详解

pandas中交叉表与透视表,什么是交叉表,什么是透视表pandas.crosstab(index,columns,values=None,rownames=None,colnames=None,aggfunc=None)DataFrame.pivot_table(values=None,index=None,columns=None,aggfunc='mean',fill_value=None,margins=False,dropna=True)

我的个人博客 8005

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

Pandas:透视表(pivotTab)和交叉表(crossTab) 一、透视表(pivotTab) 透视表就是将指定原有DataFrame的列分别作为行索引和列索引,然后对指定的列应用聚集函数(默认情况下式mean函数)。   import numpy as np import pandas as pd from pandas import Series,DataFrame df =...

weixin_39667003的博客 1301

python_透视表和交叉表

Pivot Tables and Cross-Tabulation # Python和pandas中,可以通过本章所介绍的groupby功能以及 # (能够利⽤层次化索引的)重塑运算制作透视表。 DataFrame有 # ⼀个pivot_table⽅法,此外还有⼀个顶级的pandas.pivot_table函 # 数。除能为groupby提供便利之外, pivot_table还可以添加分项 # ...

wj1298250240的博客 489
上一篇: pandas的高级使用
下一篇: Scipy简介
Are you ready
博客等级 码龄8年 312粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值