具體來說,我們將使用python建立此圖表,該圖表顯示了我們每月隨時間發布的頻率:
1)我多久發布一次?
步驟2:匯入和格式化資料
接下來,我們必須將這些資料放入pandas資料框中,因此啟動jupyter notebooks(如果需要複習,這裡是jupyter notebooks的初學者指南)。我們將從匯入資料並將其讀取到dataframe開始。
內建pd.read_json()函式將能夠自動解釋dataframe中的json資料。(你會看到,它並不完美,但是在這裡可以滿足我們的目的)。
如我們所見,這並不完美。我們的某些列在每一行中都有巢狀的子列,這些子列仍為json格式。如果我們想使用這些資料,則需要處理。
接下來,我們將確保timestamp列的格式正確,然後使用將其轉換為datetime物件to_datetime()。'date'為了清楚起見,我們還將重新命名它並刪除一些不必要的列-嚴格來說這不是必須的步驟,但這有助於我們更輕鬆地進行檢視。
現在,我們有了一些更清潔的東西可以使用!如果我們要檢查正在分析的帖子df.shape數,可以用來計算行數。
第3步:計算月度帖子計數
現在我們有了資料,我們需要將其轉換成一種可以告訴我們有關發布頻率的格式。鑑於我們在這裡已有多年的歷史,所以逐月檢視它是最有意義的。這意味著我們需要'date'按月對列進行分組,並計算每個月與多少行(即帖子)相關聯。
幸運的是,pandas的設計使使用時間序列資料變得相對簡單。我們需要在這裡做兩件事:
1)將date列設定為我們的dataframe的索引。
2)按月重新取樣資料,計算每個月有多少帖子。
第一步,我們可以使用set_index()。第二步比較複雜,所以讓我們將其分為四個單獨的步驟,以分解我們需要編寫的**:
1)選擇我們要重取樣的列-在這種情況下,就是該data列。
2)將.resample()函式與引數一起使用'ms'(「月開始」),可以按月對資料進行重新取樣。
3)使用.size()指定我們想要每個月來衡量-在這種情況下,行(即職位)具有落入該月內的乙個發布日期的數量。
4)將結果系列分配給名為的變數post_counts。
這是實際的情況:
看起來很棒!我們按月細分了發帖計數,如果我們檢查原始資料集,我們可以很快看到計數是正確的。
請注意,沒有帖子的月份被正確地計為0而不是被略過。這就是為什麼使用resample(),旨在與時間序列配合使用的原因,比起使用類似的東西更好的原因,使用,groupby()如果我們不小心,很容易跳過沒有資料的月份。
無論如何,既然我們已經完成了棘手的部分,剩下的就是樂趣:視覺化!為此,我們將匯入matplotlib(並使用%matplotlib inline魔術使圖表顯示在jupyter notebook中。還將匯入seaborn和numpy,這將有助於我們製作更具可讀性的圖表。
匯入完成後,將用於sns.set()設定圖表的大小和字型大小。由於我們在此處處理大量資料,因此我們將使圖表很大,並確保字型大小足夠大以便可讀。
然後,我們將設定x標籤以使用post_counts(日期)的索引,並用於sns.barplot()建立條形圖。在的引數中sns.barplot(),我們將告訴函式使用定義的x標籤,在中繪製資料post_counts,並使條形變為藍色。
僅此一項就足以建立基本圖表,但是在這種情況下,我們將要採取一些其他步驟來使圖表更具可讀性。具體來說,我們希望將x軸上的刻度位置安排為每24個月一次,以便在結果圖表中每隔一年檢視一次刻度。我們還希望重新格式化圖表中的日期,以便僅顯示年份。
2)我們將json檔案讀入pandas dataframe中
3)我們按月細分了資料,並統計了每個月的帖子數
摘自:
Python大資料分析 開篇
python大資料分析 開篇 目前在網上看了很多部落格,都是一些關於資料處理的,且都淺嘗輒止,沒有形成乙個系列,只言片語,不能給人以更深層次的啟發。加之,最近在用python做金融大資料這塊的分析,故寫部落格以記之,以供他人閱,相互交流。大資料分析的意義,我自不用多述。眾多金融公司,無不在挖掘其價值...
python大資料分析 Matplotlib庫
matplotlib作圖基本 import numpy as np import matplotlib.pyplot as plt x np.linspace 0,10,1000 x軸的自變數 y np.sin x 1 函式 z np.cos x 2 1 函式 plt.figure figsize ...
Python金融大資料分析 回歸分析
回歸分析是金融中乙個繞不過的話題,其實最好的工具應該是r語言,但是pandas其實也是能夠勝任絕大部分工作的。這裡我們就簡單介紹一下。import pandas as pd import numpy as np import matplotlib.pyplot as plt noise np.ran...