의 dataframe 제작 : 그룹에 URL 및 타임 스탬프, 총 열 값의 데이터를 내가 원하는는 DASK의 dataframe를 집계하고 나는이처럼 보이는 DASK의 dataframe가 집계
url referrer session_id ts customer
url1 ref1 xxx 2017-09-15 00:00:00 a.com
url2 ref2 yyy 2017-09-15 00:00:00 a.com
url2 ref3 yyy 2017-09-15 00:00:00 a.com
url1 ref1 xxx 2017-09-15 01:00:00 a.com
url2 ref2 yyy 2017-09-15 01:00:00 a.com
을하고하고자했다 dataframe을 생산 이 대신에 같이 다음과 같이
스파크 SQL에서customer url ts page_views visitors referrers
a.com url1 2017-09-15 00:00:00 1 1 [ref1]
a.com url2 2017-09-15 00:00:00 2 2 [ref2, ref3]
, 나는이 작업을 수행 할 수 있습니다
select
customer,
url,
ts,
count(*) as page_views,
count(distinct(session_id)) as visitors,
collect_list(referrer) as referrers
from df
group by customer, url, ts
Dask 데이터 프레임으로 수행 할 수있는 방법이 있습니까? 나는했지만, 다음과 같이 나는 단지, 별도로 집계 열을 계산할 수 있습니다
# group on timestamp (rounded) and url
grouped = df.groupby(['ts', 'url'])
# calculate page views (count rows in each group)
page_views = grouped.size()
# collect a list of referrer strings per group
referrers = grouped['referrer'].apply(list, meta=('referrers', 'f8'))
# count unique visitors (session ids)
visitors = grouped['session_id'].count()
을하지만 내가 필요로 결합 dataframe을 생산하는 좋은 방법을 찾을 수 없습니다.
gb = df.groupby(['customer', 'url', 'ts'])
gb.apply(lambda d: pd.DataFrame({'views': len(d),
'visitiors': d.session_id.count(),
'referrers': [d.referer.tolist()]})).reset_index()
(가정 방문자가 위의 SQL에 따라 고유해야합니다) 당신은 출력의 meta
을 정의 할 수 있습니다 :
팬더에서이 작업을 수행 할 수있는 좋은 방법이 있습니까? 그런 식으로 dask.dataframe을 사용할 수 있습니까? – MRocklin