簡體   English   中英

大熊貓的時間序列分析

[英]Time series analysis in pandas

我有一個包含一個網站上的訪問一個數據幀熊貓,我有兩列ID號和date格式YYYY-mm-dd HH:mm:ss

我想獲得一個包含客戶任何訪問之間的時間差的數據框。 我找到了如何使用 GROUPBY 獲取訪問次數,但我不知道其余的。

編輯:

No.      IDs      date
 1      4678     2012-11-30 23:59:59
 2      4703     2012-11-30 23:59:23
 3      4678     2012-11-30 23:58:46
 4      5803     2012-11-30 23:58:19
 5      4678     2012-11-30 23:58:07

我想為每個 ID 號獲取如下信息:

      Visit_number      duration since last visit
4678        1                    0
            2                    73s
            3                    39s

現在我只能用array.groupby(['IDs']).size()來計算每個 ID 號的訪問次數

要計算訪問次數,您可以使用 groupby 和cumcount

In [76]: df['Visit_Number'] = df.groupby('IDs').cumcount() + 1

接下來,在持續時間內,您可以對每個組使用diff

In [77]: df['duration'] = - df.groupby('IDs')['date'].diff()


In [78]: df
Out[78]: 
    IDs                date  Visit_Number  duration
0  4678 2012-11-30 23:59:59             1       NaT
1  4703 2012-11-30 23:59:23             1       NaT
2  4678 2012-11-30 23:58:46             2  00:01:13
3  5803 2012-11-30 23:58:19             1       NaT
4  4678 2012-11-30 23:58:07             3  00:00:39

這為您提供了作為timedelta的差異,以秒為單位並填充 NaN 值:

In [79]: df['duration'] = df['duration'].astype('timedelta64[s]').fillna(0)

In [80]: df
Out[80]: 
    IDs                date  Visit_Number  duration
0  4678 2012-11-30 23:59:59             1         0
1  4703 2012-11-30 23:59:23             1         0
2  4678 2012-11-30 23:58:46             2        73
3  5803 2012-11-30 23:58:19             1         0
4  4678 2012-11-30 23:58:07             3        39

類似於以下內容:

import pandas as pd
import datetime

a = pd.read_csv("a.csv")
a.date = a.date.map(lambda s: datetime.datetime.strptime(s, "%Y-%m-%d %H:%M:%S"))
for user_id, series in a.sort("date").groupby("id"):
    print user_id, series.date.diff()

輸出:

4678 4        NaT
2   00:00:39
0   00:01:13
Name: date, dtype: timedelta64[ns]
4703 1   NaT
Name: date, dtype: timedelta64[ns]
5803 3   NaT
Name: date, dtype: timedelta64[ns]

暫無
暫無

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

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