pandas作為一個超大的數(shù)據(jù)庫,會調(diào)用到很多的函數(shù),但是在調(diào)用函數(shù)的時候,會涉及到很多的數(shù)據(jù),調(diào)用數(shù)據(jù)的時候,會用到pivot函數(shù),下面就給大家詳細(xì)的解答下關(guān)于這方面函數(shù)的內(nèi)容。
1、pivot函數(shù)的定義
pivot(index=None,columns=None,values=None)->DataFrame
2、pivot函數(shù)的說明
通過給定的索引(index)和列(column)的值重新生一個DataFrame對象。
根據(jù)列值對數(shù)據(jù)進(jìn)行整形(生成一個“透視”表)。從指定的索引/列中使用唯一的值來形成結(jié)果數(shù)據(jù)幀的軸。此函數(shù)不支持?jǐn)?shù)據(jù)聚合,多個值將導(dǎo)致列中的多索引。
3、pivo函數(shù)的參數(shù)
index:指定一列做為生成DataFrame對象的索引,如果為空則默認(rèn)為原來的索引。
columns:指定一列的值作為列名,必須傳值。
values:指定一列作為生成DataFrame對象的值??梢詾榭?。
4、pivot函數(shù)實例
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中對應(yīng)的值為baz df.pivot(index='foo',columns='bar',values='baz')
#沒有指定value,列名最外層保留原來的列,如下結(jié)果baz和zoo為原dataframe中的列名,新指定的列名bar在里層(暫時這么理解)。 df.pivot(index='foo',columns='bar')
#可以通過索引的方式取指定的列數(shù)據(jù) 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名取當(dāng)個index的數(shù)據(jù) 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函數(shù)在實際工作中解決的案例
現(xiàn)在要上圖中的不同code之間從2020-11-16到2020-11-18三天內(nèi)num序列數(shù)的相關(guān)性。
首先,dataframe對象可以直接調(diào)用函數(shù)corr()計算不同列之間的相關(guān)性,所以現(xiàn)在需要將原始的dataframe對象轉(zhuǎn)換成以code為列,date為索引,num為值的dataframe。
第一種比較笨的方法就是循環(huán),此方法不但代碼量較多而且在數(shù)據(jù)量很大時會比較耗時。不建議使用。
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
第二種方法就是使用pivot函數(shù),一行代碼解決,運行快速。
df_num=df.pivot(index='date',columns='code',values='num')
第二種方法就是使用pivot函數(shù),一行代碼解決,運行快速。
#計算列之間的相關(guān)性 df_num.corr()
綜上所述,這篇文章就給大家介紹到這里了,希望可以給大家?guī)韼椭?/p>
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/128355.html
摘要:實際遇到的問題在文件當(dāng)中或者數(shù)據(jù)庫當(dāng)?shù)臄?shù)據(jù)通常以長格式或者堆疊格式存儲,特別是金融數(shù)據(jù)中出現(xiàn)的時間序列數(shù)據(jù),例如那怎么才能變成以作為列名,同時日期為索引的呢特別需要對同時進(jìn)行時間序列分析時,這個需求特別強烈。 實際遇到的問題: 在CSV文件當(dāng)中或者數(shù)據(jù)庫當(dāng)?shù)臄?shù)據(jù)通常以長格式或者(stacked)堆疊格式存儲,特別是金融數(shù)據(jù)中出現(xiàn)的時間序列數(shù)據(jù),例如: In [1]: df Out[1]...
摘要:數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑數(shù)據(jù)聚合與分組運算數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑合并數(shù)據(jù)集可根據(jù)一個或多個鍵將不同中的行鏈接起來。函數(shù)根據(jù)樣本分位數(shù)對數(shù)據(jù)進(jìn)行面元劃分。字典或,給出待分組軸上的值與分組名之間的對應(yīng)關(guān)系。 本篇內(nèi)容為整理《利用Python進(jìn)行數(shù)據(jù)分析》,博主使用代碼為 Python3,部分內(nèi)容和書本有出入。 在前幾篇中我們介紹了 NumPy、pandas、matplotlib 三個...
摘要:是一個數(shù)據(jù)分析的開源庫。與表格或關(guān)系數(shù)據(jù)庫中的表非常神似。注意帶有一個索引,類似于關(guān)系數(shù)據(jù)庫中的主鍵。的統(tǒng)計函數(shù)分組與聚合通過方法,可以對數(shù)據(jù)組施加一系列的函數(shù)。函數(shù)的作用是串聯(lián),追加數(shù)據(jù)行使用函數(shù)。 pandas(Python data analysis)是一個Python數(shù)據(jù)分析的開源庫。pandas兩種數(shù)據(jù)結(jié)構(gòu):DataFrame和Series 安裝:pandas依賴于NumPy...
摘要:以指定數(shù)目均勻分割區(qū)間。所以給定區(qū)間和,以及等分分割點數(shù)目,將返回一個數(shù)組。將一個函數(shù)應(yīng)用于指定軸上的每一個元素。如果您熟悉,那么你也許聽說過數(shù)據(jù)透視表。內(nèi)置的函數(shù)以的形式創(chuàng)建電子表格樣式的數(shù)據(jù)透視表,它可以幫助我們快速查看某幾列的數(shù)據(jù)。 一行代碼定義List showImg(https://segmentfault.com/img/remote/1460000015965704?...
摘要:收入的波動來自于不同部門或類目的收入漲跌。我們的目標(biāo)是利用實現(xiàn)收入波動的分析模型。有了這個函數(shù),我們只要給到數(shù)據(jù)源和細(xì)分項,就能得到影響最大的細(xì)分項。我們來認(rèn)識下如何處理日期。 環(huán)境準(zhǔn)備:sublime+ipython 打開代碼編輯器sublime——本質(zhì)上,txt文本編輯器也可以寫代碼,并保存為以.py為后綴的python文件,但專業(yè)的代碼編輯器可以實現(xiàn)語法高亮、自動補全等功能,并支...
閱讀 923·2023-01-14 11:38
閱讀 896·2023-01-14 11:04
閱讀 756·2023-01-14 10:48
閱讀 2056·2023-01-14 10:34
閱讀 961·2023-01-14 10:24
閱讀 840·2023-01-14 10:18
閱讀 510·2023-01-14 10:09
閱讀 588·2023-01-14 10:02