摘要:實際遇到的問題在文件當中或者數據庫當的數據通常以長格式或者堆疊格式存儲,特別是金融數據中出現的時間序列數據,例如那怎么才能變成以作為列名,同時日期為索引的呢特別需要對同時進行時間序列分析時,這個需求特別強烈。
實際遇到的問題:
在CSV文件當中或者數據庫當的數據通常以長格式或者(stacked)堆疊格式存儲,特別是金融數據中出現的時間序列數據,例如:
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作為列名,同時日期為索引的dataframe呢?特別需要對A,B,C,D同時進行時間序列分析時,這個需求特別強烈。
解決方案:
這里引出一個重要的概念,data reshaping,即數據重塑,
選出變量A的所有數據我們只需要如下操作,然后分別選出B,C,D,然后再再水平方向進行concat操作,這樣當然也可以得到指定的數據框,但這樣無疑編寫、執行效率都有點低:
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
但是如果我們希望對變量進行時間序列操作,那么我們可能將需要將每個變量多帶帶作為一列來表示,因此需要使用pivot()函數對數據進行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
如果上述函數當中的values參數被省略,得到的dataframe就會有帶有層次化的列,列的頂層是帶每個值列的列名,假如我們現在有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
對于以上多層次列數據框,此時也可以只顯示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()函數是一個非常實用的,用來實現數據重塑的方法。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41429.html
摘要:數據規整化清理轉換合并重塑數據聚合與分組運算數據規整化清理轉換合并重塑合并數據集可根據一個或多個鍵將不同中的行鏈接起來。函數根據樣本分位數對數據進行面元劃分。字典或,給出待分組軸上的值與分組名之間的對應關系。 本篇內容為整理《利用Python進行數據分析》,博主使用代碼為 Python3,部分內容和書本有出入。 在前幾篇中我們介紹了 NumPy、pandas、matplotlib 三個...
摘要:九時間序列時區表示時區轉換時區跨度轉換十畫圖圖片描述十一從版本開始,可以在中支持類型的數據。 六、分組 對于group by操作,我們通常是指以下一個或多個操作步驟:(Splitting)按照一些規則將數據分為不同的組(Applying)對于每組數據分別執行一個函數(Combining)將結果組合刀一個數據結構中將要處理的數組是: df = pd.DataFrame({ ...
摘要:前言在數據分析和建模之前需要審查數據是否滿足數據處理應用的要求,以及對數據進行清洗,轉化,合并,重塑等一系列規整化處理。通過數據信息查看可知數據中存在缺失值,比如各存在個,各存在個。 前言 在數據分析和建模之前需要審查數據是否滿足數據處理應用的要求,以及對數據進行清洗,轉化,合并,重塑等一系列規整化處理。pandas標準庫提供了高級靈活的方法,能夠輕松地將數據規整化為正確的形式,本文通...
摘要:中面向行和面向列的操作基本是平衡的。用層次化索引,將其表示為更高維度的數據。使用浮點值表示浮點和非浮點數組中的缺失數據。索引的的格式化輸出形式選取數據子集在內層中進行選取層次化索引在數據重塑和基于分組的操作中很重要。 我們在上一篇介紹了 NumPy,本篇介紹 pandas。 pandas入門 Pandas 是基于Numpy構建的,讓以NumPy為中心的應用變的更加簡單。 pandas...
摘要:線性回歸線性回歸是回歸分析中最常見的一種建模方式。當因變量是連續的,自變量是連續的或者離散的,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。 線性回歸 線性回歸是回歸分析中最常見的一種建模方式。當因變量是連續的,自變量是連續的或者離散的,且二者的關系可用一條直線近似表示,這種回歸分析稱為一元線性回歸分析。用方程 y = mx + c,其中 y為結果,x為特征,m為...
閱讀 1835·2021-11-25 09:43
閱讀 1344·2021-11-22 15:08
閱讀 3746·2021-11-22 09:34
閱讀 3228·2021-09-04 16:40
閱讀 3027·2021-09-04 16:40
閱讀 546·2019-08-30 15:54
閱讀 1338·2019-08-29 17:19
閱讀 1755·2019-08-28 18:13