pandas透视表常用方法

在实际工作中,字段较多的数据常以params - values形式存储,一个id对应多行,使用时希望一个id对应一行。可通过操作将其处理成所需形式,避免写长SQL,还可对columns重命名、重置索引。此外,能用pivot_table透视表实现crosstable功能,统计频数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在实际工作中,一些字段较多的数据,存储时往往以params-values的形式存储。如下所示:

test = pd.DataFrame([['a','var1',1],['a','var2',2],['b','var1',1],['b','var2',2]],columns=['id','params','values'])
test

在这里插入图片描述
一个id对应多行。然而在使用数据的过程中,往往希望一个id对应一行。

下面的操作可以帮助我们迅速处理成我们需要的形式,而避免写太长的sql。

p = pd.pivot_table(test,index=['id'],columns=['params'],values=['values'],aggfunc=np.max)
p

在这里插入图片描述
还需要做下处理,转换成常规的Dataframe。
我们可以看下p.columns。
在这里插入图片描述
可以看到columns,多层级结构

p.columns.levels[1]

Index([‘var1’, ‘var2’], dtype=‘object’, name=‘params’)

因此我们可以对columns重命名

p.columns = list(p.columns.levels[1])
p

在这里插入图片描述

p=p.reset_index()
p

在这里插入图片描述
重置索引,就可以得到我们想要的。

另外,也可以用pivot_table透视表实现crosstable的功能。

test = pd.DataFrame([['a','var1',1],['a','var2',2],['b','var1',1],['b','var2',2],['b','var2',2]],columns=['id','params','values'])
test

在这里插入图片描述
我们来统计每个id下,不同params下的频数。

c = pd.pivot_table(test[['id','params']],index=['id'],columns=['params'],aggfunc=len,fill_value=0,margins=True,)
c

在这里插入图片描述

pandas中,数据透视是一种可以对数据动态排布并且分类汇总的格格式,通过使用`pandas.pivot_table()`函数或`pandas.DataFrame.pivot_table()`函数来创建透视透视可以对数据进行各种计算操作,如求和、计数等,并根据不同的布局方式重新排列行号、列标和页字段。每次改变布局后,透视会重新计算数据。在使用Excel进行数据分析时,透视是非常常用的功能,Pandas提供了透视功能来满足类似的需求。 `pandas.pivot_table()`函数的主要参数有: - `data`: 数据源,即一个DataFrame对象 - `index`: 行索引,传入原始数据的列名 - `columns`: 列索引,传入原始数据的列名 - `values`: 要进行聚合操作的列名 - `aggfunc`: 聚合函数,用于对数据进行计算 而`pandas.DataFrame.pivot_table()`函数与`pandas.pivot_table()`函数相似,只是没有`data`参数,因为它是作为DataFrame对象的一个方法来使用的。 通过使用这些函数,我们可以创建数据透视来对数据进行分析和汇总。123 #### 引用[.reference_title] - *1* [python入门——Pandas透视(pivot_table)](https://blog.csdn.net/weixin_49249463/article/details/127578300)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] - *2* *3* [pandas 数据透视](https://blog.csdn.net/ljh18885466426/article/details/120048268)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT0_1"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值