介绍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
