簡體   English   中英

如何在 Python 中轉換數據幀以進行時間序列分析?

[英]How to convert data frame for time series analysis in Python?

我有一個為期兩年的大約 13000 行和 2 列(文本和日期)的數據集。 其中一列是 yyyy-mm-dd 格式的日期。 我想執行時間序列分析,其中 x 軸是日期(每天),y 軸是相應日期的文本頻率。

我想如果我創建一個具有唯一日期和相應日期文本數量的新數據框,就可以解決我的問題。

樣本數據

在此處輸入圖像描述

如何每天創建一個具有文本頻率的新列? 例如:

在此處輸入圖像描述

提前致謝!

根據您要解決的任務,我可以看到此數據集的兩個選項。

  • 或者,正如您在示例中顯示的那樣,計算每天文本字段的出現次數,與文本字段的值無關。
  • 或者,每天計算文本字段的每個唯一值的出現次數。 然后,對於文本字段的每個可能值,您將有一列,如果這些值是純粹的分類值,這可能更有意義。

首先要做的事情:

import pandas as pd
df = pd.DataFrame(data={'Date':['2018-01-01','2018-01-01','2018-01-01', '2018-01-02', '2018-01-03'], 'Text':['A','B','C','A','A']})
df['Date'] = pd.to_datetime(df['Date']) #convert to datetime type if not already done

         Date Text
0  2018-01-01    A
1  2018-01-01    B
2  2018-01-01    C
3  2018-01-02    A
4  2018-01-03    A

然后對於選項一:

df = df.groupby('Date').count()

            Text
Date            
2018-01-01     3
2018-01-02     1
2018-01-03     1

對於選項二:

df[df['Text'].unique()] = pd.get_dummies(df['Text'])
df = df.drop('Text', axis=1)
df = df.groupby('Date').sum()

            A  B  C
Date               
2018-01-01  1  1  1
2018-01-02  1  0  0
2018-01-03  1  0  0

get_dummies function 將為文本字段的每個可能值創建一列。 然后,每一列是 dataframe 的每一行的 boolean 指標,告訴我們文本字段的哪個值出現在這一行中。 然后,我們可以通過 Date 字段簡單地使用 groupby 進行總和聚合。

如果您不熟悉 groupby 和聚合操作的使用,我建議您先閱讀本指南

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM