亚洲中字慕日产2020,大陆极品少妇内射AAAAAA,无码av大香线蕉伊人久久,久久精品国产亚洲av麻豆网站

資訊專欄INFORMATION COLUMN

PYTHON PANDAS之?dāng)?shù)據(jù)重塑(Data Reshaping)

stefan / 1548人閱讀

摘要:實(shí)際遇到的問題在文件當(dāng)中或者數(shù)據(jù)庫當(dāng)?shù)臄?shù)據(jù)通常以長格式或者堆疊格式存儲,特別是金融數(shù)據(jù)中出現(xiàn)的時(shí)間序列數(shù)據(jù),例如那怎么才能變成以作為列名,同時(shí)日期為索引的呢特別需要對同時(shí)進(jìn)行時(shí)間序列分析時(shí),這個(gè)需求特別強(qiáng)烈。

實(shí)際遇到的問題

在CSV文件當(dāng)中或者數(shù)據(jù)庫當(dāng)?shù)臄?shù)據(jù)通常以長格式或者(stacked)堆疊格式存儲,特別是金融數(shù)據(jù)中出現(xiàn)的時(shí)間序列數(shù)據(jù),例如:

In [1]: df
Out[1]: 
         date variable     value
0  2000-01-03        A  0.469112
1  2000-01-04        A -0.282863
2  2000-01-05        A -1.509059
3  2000-01-03        B -1.135632
4  2000-01-04        B  1.212112
5  2000-01-05        B -0.173215
6  2000-01-03        C  0.119209
7  2000-01-04        C -1.044236
8  2000-01-05        C -0.861849
9  2000-01-03        D -2.104569
10 2000-01-04        D -0.494929
11 2000-01-05        D  1.071804

那怎么才能變成以A,B,C,D作為列名,同時(shí)日期為索引的dataframe呢?特別需要對A,B,C,D同時(shí)進(jìn)行時(shí)間序列分析時(shí),這個(gè)需求特別強(qiáng)烈。

解決方案:
這里引出一個(gè)重要的概念,data reshaping,即數(shù)據(jù)重塑,

選出變量A的所有數(shù)據(jù)我們只需要如下操作,然后分別選出B,C,D,然后再再水平方向進(jìn)行concat操作,這樣當(dāng)然也可以得到指定的數(shù)據(jù)框,但這樣無疑編寫、執(zhí)行效率都有點(diǎn)低:

In [2]: df[df["variable"] == "A"]
Out[2]: 
        date variable     value
0 2000-01-03        A  0.469112
1 2000-01-04        A -0.282863
2 2000-01-05        A -1.509059

但是如果我們希望對變量進(jìn)行時(shí)間序列操作,那么我們可能將需要將每個(gè)變量多帶帶作為一列來表示,因此需要使用pivot()函數(shù)對數(shù)據(jù)進(jìn)行reshape操作:

In [3]: df.pivot(index="date", columns="variable", values="value")
Out[3]: 
variable           A         B         C         D
date                                              
2000-01-03  0.469112 -1.135632  0.119209 -2.104569
2000-01-04 -0.282863  1.212112 -1.044236 -0.494929
2000-01-05 -1.509059 -0.173215 -0.861849  1.071804

如果上述函數(shù)當(dāng)中的values參數(shù)被省略,得到的dataframe就會有帶有層次化的列,列的頂層是帶每個(gè)值列的列名,假如我們現(xiàn)在有value1,value2兩列:

In [4]: df["value2"] = df["value"] * 2

In [5]: pivoted = df.pivot("date", "variable")

In [6]: pivoted
Out[6]: 
               value                                  value2            
variable           A         B         C         D         A         B   
date                                                                     
2000-01-03  0.469112 -1.135632  0.119209 -2.104569  0.938225 -2.271265   
2000-01-04 -0.282863  1.212112 -1.044236 -0.494929 -0.565727  2.424224   
2000-01-05 -1.509059 -0.173215 -0.861849  1.071804 -3.018117 -0.346429   

                                
variable           C         D  
date                            
2000-01-03  0.238417 -4.209138  
2000-01-04 -2.088472 -0.989859  
2000-01-05 -1.723698  2.143608  

對于以上多層次列數(shù)據(jù)框,此時(shí)也可以只顯示value2這一列:

In [7]: pivoted["value2"]
Out[7]: 
variable           A         B         C         D
date                                              
2000-01-03  0.938225 -2.271265  0.238417 -4.209138
2000-01-04 -0.565727  2.424224 -2.088472 -0.989859
2000-01-05 -3.018117 -0.346429 -1.723698  2.143608

可見pivot()函數(shù)是一個(gè)非常實(shí)用的,用來實(shí)現(xiàn)數(shù)據(jù)重塑的方法。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://www.ezyhdfw.cn/yun/41429.html

相關(guān)文章

  • 數(shù)據(jù)科學(xué)系統(tǒng)學(xué)習(xí)】Python # 數(shù)據(jù)分析基本操作[四] 數(shù)據(jù)規(guī)整化和數(shù)據(jù)聚合與分組運(yùn)算

    摘要:數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑數(shù)據(jù)聚合與分組運(yùn)算數(shù)據(jù)規(guī)整化清理轉(zhuǎn)換合并重塑合并數(shù)據(jù)集可根據(jù)一個(gè)或多個(gè)鍵將不同中的行鏈接起來。函數(shù)根據(jù)樣本分位數(shù)對數(shù)據(jù)進(jìn)行面元劃分。字典或,給出待分組軸上的值與分組名之間的對應(yīng)關(guān)系。 本篇內(nèi)容為整理《利用Python進(jìn)行數(shù)據(jù)分析》,博主使用代碼為 Python3,部分內(nèi)容和書本有出入。 在前幾篇中我們介紹了 NumPy、pandas、matplotlib 三個(gè)...

    The question 評論0 收藏0
  • Python 數(shù)據(jù)分析 pandas 進(jìn)階(二)

    摘要:九時(shí)間序列時(shí)區(qū)表示時(shí)區(qū)轉(zhuǎn)換時(shí)區(qū)跨度轉(zhuǎn)換十畫圖圖片描述十一從版本開始,可以在中支持類型的數(shù)據(jù)。 六、分組 對于group by操作,我們通常是指以下一個(gè)或多個(gè)操作步驟:(Splitting)按照一些規(guī)則將數(shù)據(jù)分為不同的組(Applying)對于每組數(shù)據(jù)分別執(zhí)行一個(gè)函數(shù)(Combining)將結(jié)果組合刀一個(gè)數(shù)據(jù)結(jié)構(gòu)中將要處理的數(shù)組是: df = pd.DataFrame({ ...

    lingdududu 評論0 收藏0
  • Pandas庫基礎(chǔ)分析——數(shù)據(jù)規(guī)整化處理

    摘要:前言在數(shù)據(jù)分析和建模之前需要審查數(shù)據(jù)是否滿足數(shù)據(jù)處理應(yīng)用的要求,以及對數(shù)據(jù)進(jìn)行清洗,轉(zhuǎn)化,合并,重塑等一系列規(guī)整化處理。通過數(shù)據(jù)信息查看可知數(shù)據(jù)中存在缺失值,比如各存在個(gè),各存在個(gè)。 前言 在數(shù)據(jù)分析和建模之前需要審查數(shù)據(jù)是否滿足數(shù)據(jù)處理應(yīng)用的要求,以及對數(shù)據(jù)進(jìn)行清洗,轉(zhuǎn)化,合并,重塑等一系列規(guī)整化處理。pandas標(biāo)準(zhǔn)庫提供了高級靈活的方法,能夠輕松地將數(shù)據(jù)規(guī)整化為正確的形式,本文通...

    roundstones 評論0 收藏0
  • 數(shù)據(jù)科學(xué)系統(tǒng)學(xué)習(xí)】Python # 數(shù)據(jù)分析基本操作[二] pandas

    摘要:中面向行和面向列的操作基本是平衡的。用層次化索引,將其表示為更高維度的數(shù)據(jù)。使用浮點(diǎn)值表示浮點(diǎn)和非浮點(diǎn)數(shù)組中的缺失數(shù)據(jù)。索引的的格式化輸出形式選取數(shù)據(jù)子集在內(nèi)層中進(jìn)行選取層次化索引在數(shù)據(jù)重塑和基于分組的操作中很重要。 我們在上一篇介紹了 NumPy,本篇介紹 pandas。 pandas入門 Pandas 是基于Numpy構(gòu)建的,讓以NumPy為中心的應(yīng)用變的更加簡單。 pandas...

    jayzou 評論0 收藏0
  • Python 實(shí)現(xiàn)最小二乘法擬合直線

    摘要:線性回歸線性回歸是回歸分析中最常見的一種建模方式。當(dāng)因變量是連續(xù)的,自變量是連續(xù)的或者離散的,且二者的關(guān)系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。 線性回歸 線性回歸是回歸分析中最常見的一種建模方式。當(dāng)因變量是連續(xù)的,自變量是連續(xù)的或者離散的,且二者的關(guān)系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。用方程 y = mx + c,其中 y為結(jié)果,x為特征,m為...

    woshicixide 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<