1. 本际云推荐 - 专业推荐VPS、服务器,IDC点评首页
  2. 云主机运维
  3. VPS运维

pandas应用实例之pivot函数详解

介绍Pandas中的pivot函数

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

pandas应用实例之pivot函数详解

1、pivot函数的定义

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

2、pivot函数的说明

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

3、pivot函数的参数

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’]})
  #指定foo的值为新dataframe的index,bar的值为columns,dataframe中对应的值为baz
  df.pivot(index=’foo’,columns=’bar’,values=’baz’)  #没有指定value,列名最外层保留原来的列,如下结果baz和zoo为原dataframe中的列名,新指定的列名bar在里层(暂时这么理解)。
  df.pivot(index=’foo’,columns=’bar’)  #可以通过索引的方式取指定的列数据
  df.pivot(index=’foo’,columns=’bar’)[‘baz’]   #可以指定多个values
  df.pivot(index=’foo’,columns=’bar’,values=[‘baz’,’zoo’])  #指定多个columns
  df.pivot(index=’foo’,columns=[‘bar’,’baz’],values=[‘zoo’])  #指定多个index
  df.pivot(index=[‘foo’,’bar’],columns=’baz’,values=’zoo’)  #指定多个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函数在实际工作中解决的案例

现在要上图中的不同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)

第二种方法就是使用pivot函数,一行代码解决,运行快速。df_num=df.pivot(index=’date’,columns=’code’,values=’num’)

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

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

原创文章,作者:小编小本本,如若转载,请注明出处:https://www.benjiyun.com/yunzhujiyunwei/vps-yunwei/7183.html