资讯专栏INFORMATION COLUMN

pandas应用实例之pivot函数详解

89542767 / 523人阅读

  pandas作为一个超大的数据库,会调用到很多的函数,但是在调用函数的时候,会涉及到很多的数据,调用数据的时候,会用到pivot函数,下面就给大家详细的解答下关于这方面函数的内容。


  1、pivot函数的定义

  pivot(index=None,columns=None,values=None)->DataFrame


  2、pivot函数的说明


  通过给定的索引(index)和列(column)的值重新生一个DataFrame对象。


  根据列值对数据进行整形(生成一个“透视”表)。从指定的索引/列中使用唯一的值来形成结果数据帧的轴。此函数不支持数据聚合,多个值将导致列中的多索引。


  3、pivo函数的参数


  index:指定一列做为生成DataFrame对象的索引,如果为空则默认为原来的索引。


  columns:指定一列的值作为列名,必须传值。


  values:指定一列作为生成DataFrame对象的值。可以为空。


  4、pivot函数实例


  df=pd.DataFrame({'foo':['one','one','one','two','two','two'],
  'bar':['A','B','C','A','B','C'],
  'baz':[1,2,3,4,5,6],
  'zoo':['x','y','z','q','w','t']})

01.png

  #指定foo的值为新dataframe的index,bar的值为columns,dataframe中对应的值为baz
  df.pivot(index='foo',columns='bar',values='baz')

02.png

  #没有指定value,列名最外层保留原来的列,如下结果baz和zoo为原dataframe中的列名,新指定的列名bar在里层(暂时这么理解)。
  df.pivot(index='foo',columns='bar')

03.png

  #可以通过索引的方式取指定的列数据
  df.pivot(index='foo',columns='bar')['baz']

 

04.png

  #可以指定多个values
  df.pivot(index='foo',columns='bar',values=['baz','zoo'])

05.png

  #指定多个columns
  df.pivot(index='foo',columns=['bar','baz'],values=['zoo'])

06.png

  #指定多个index
  df.pivot(index=['foo','bar'],columns='baz',values='zoo')

07.png

  #指定多个index可以通过index名取当个index的数据
  df.pivot(index=['foo','bar'],columns='baz',values='zoo').loc["one",:]
  #这两行代码运行将会报错。
  #报错提示:ValueError:Index contains duplicate entries,cannot reshape
  #意思是指定的索引one有两个列bar=A冲突了。
  df=pd.DataFrame({"foo":['one','one','two','two'],
  "bar":['A','A','B','C'],
  "baz":[1,2,3,4]})
  df.pivot(index='foo',columns='bar',values='baz')


  5、pivot函数在实际工作中解决的案例

10.png

  现在要上图中的不同code之间从2020-11-16到2020-11-18三天内num序列数的相关性。


  首先,dataframe对象可以直接调用函数corr()计算不同列之间的相关性,所以现在需要将原始的dataframe对象转换成以code为列,date为索引,num为值的dataframe。


  第一种比较笨的方法就是循环,此方法不但代码量较多而且在数据量很大时会比较耗时。不建议使用。


  grouped=df.groupby(by=["code"])
  df_num=pd.DataFrame()
  for name,group in grouped:
  d=pd.Series(data=group["num"].values,name=name)
  df_num=pd.concat([df_num,d],axis=1)
  df_close

11.png

  第二种方法就是使用pivot函数,一行代码解决,运行快速。

  df_num=df.pivot(index='date',columns='code',values='num')

12.png

  第二种方法就是使用pivot函数,一行代码解决,运行快速。


  #计算列之间的相关性
  df_num.corr()

13.png

  综上所述,这篇文章就给大家介绍到这里了,希望可以给大家带来帮助。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/128355.html

相关文章

  • PYTHON PANDAS数据重塑(Data Reshaping)

    摘要:实际遇到的问题在文件当中或者数据库当的数据通常以长格式或者堆叠格式存储,特别是金融数据中出现的时间序列数据,例如那怎么才能变成以作为列名,同时日期为索引的呢特别需要对同时进行时间序列分析时,这个需求特别强烈。 实际遇到的问题: 在CSV文件当中或者数据库当的数据通常以长格式或者(stacked)堆叠格式存储,特别是金融数据中出现的时间序列数据,例如: In [1]: df Out[1]...

    stefan 评论0 收藏0
  • 【数据科学系统学习】Python # 数据分析基本操作[四] 数据规整化和数据聚合与分组运算

    摘要:数据规整化清理转换合并重塑数据聚合与分组运算数据规整化清理转换合并重塑合并数据集可根据一个或多个键将不同中的行链接起来。函数根据样本分位数对数据进行面元划分。字典或,给出待分组轴上的值与分组名之间的对应关系。 本篇内容为整理《利用Python进行数据分析》,博主使用代码为 Python3,部分内容和书本有出入。 在前几篇中我们介绍了 NumPy、pandas、matplotlib 三个...

    The question 评论0 收藏0
  • Python数据分析学习笔记Pandas入门

    摘要:是一个数据分析的开源库。与表格或关系数据库中的表非常神似。注意带有一个索引,类似于关系数据库中的主键。的统计函数分组与聚合通过方法,可以对数据组施加一系列的函数。函数的作用是串联,追加数据行使用函数。 pandas(Python data analysis)是一个Python数据分析的开源库。pandas两种数据结构:DataFrame和Series 安装:pandas依赖于NumPy...

    zqhxuyuan 评论0 收藏0
  • 8个Python高效数据分析的技巧

    摘要:以指定数目均匀分割区间。所以给定区间和,以及等分分割点数目,将返回一个数组。将一个函数应用于指定轴上的每一个元素。如果您熟悉,那么你也许听说过数据透视表。内置的函数以的形式创建电子表格样式的数据透视表,它可以帮助我们快速查看某几列的数据。 一行代码定义List showImg(https://segmentfault.com/img/remote/1460000015965704?...

    FullStackDeveloper 评论0 收藏0
  • 如何进行python编程:一个简单的收入波动分析模型

    摘要:收入的波动来自于不同部门或类目的收入涨跌。我们的目标是利用实现收入波动的分析模型。有了这个函数,我们只要给到数据源和细分项,就能得到影响最大的细分项。我们来认识下如何处理日期。 环境准备:sublime+ipython 打开代码编辑器sublime——本质上,txt文本编辑器也可以写代码,并保存为以.py为后缀的python文件,但专业的代码编辑器可以实现语法高亮、自动补全等功能,并支...

    antyiwei 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<