2016-06-19 2 views
2

저는 파이썬과 팬더로 간단한 시간차 분석에 접근하는 가장 좋은 방법을 찾고 있습니다. 이것은 단지 재미있는 일이므로, 더 많은 것을 배울 수 있도록 해답을 설명해주십시오.팬더와 시간 차이 분석을 수행하는 가장 좋은 방법은 무엇입니까?

나는 임의의 데이터를 생성하기 시작했습니다. 첫 번째는 2 명의 사용자에 대한 4 세션의 총 기간에 대해 20 초의 시간 소인 빈도가있는 날짜입니다. 사용자는 123과 345입니다.

여기 시뮬레이션은 사용자가 온라인 상태인지 아닌지를 20 초마다 보여주는 스냅 샷입니다. 나는 각 사용자 레코드 사이의 시간 간격을 측정하고 다시 레코드를 추가 할

달성하기 위해 노력하고

import pandas as pd 

session_one = pd.date_range('2016-01-01', periods=100, freq='20S') 
session_two = pd.date_range('2016-02-01', periods=75, freq='20S') 
session_three = pd.date_range('2016-01-01', periods=125, freq='20S') 
session_four = pd.date_range('2016-02-01', periods=25, freq='20S') 

user_one = [session_one, session_two] 
user_two = [session_three, session_four] 

data = [] 

for sessions in user_one: 
    for dates in sessions: 
     data.append([123,dates]) 

for sessions in user_two: 
    for dates in sessions: 
     data.append([345,dates]) 

# Make our dataframe with our randomly generated data 
df = pd.DataFrame(data=data, columns=['ID', 'Timestamp']) 

.

SQL 접근

나는 좋은 SQL 접근 방식을 가지고 있지만, 서로 ontop이 데이터 세트에 가입하고 팬더 제대로 시간을 상쇄 복제 할 수없는 것. 예를 들어, 같은 팬더 병합을 (가입)하고 :

df['Timestamp'] + datetime.timedelta(0,20) 

답변

1

난 당신이 각 UserIDdiff에 의해 groupby 필요하다고 생각 : 예수는

df['diff'] = df.groupby('UserID')['Timestamp'].diff() 
+0

였습니다 얼마나 쉬운가. * bonk * – Fastidious

+1

질문이 더 복잡해 보였기 때문에 확실하지 않았습니다. 행운을 빕니다! – jezrael

+0

그래, .diff()가 SQL에서와 같이 DATEDIFF (SECONDS, field1, field2)와 같은 작업을 수행하는 데 비해 시간 차이를 보여주기 위해 다음 레코드를 반복 할 것이라고 생각하지 않았습니다. – Fastidious

관련 문제