# aggregate시 /기분으로 join
sample_df[["id","period2","event"]].groupby(["id","period2"]).aggregate(lambda x: '/'.join(str(v) for v in x))
# timestamp -> datetime
df["period"] = pd.to_datetime(df["period"],unit="us")
# display max rows 설정
pd.set_option('display.max_rows', 1000)
# event가 user_engagement가 아닌 df
df = df[df["event"] != "user_engagement"]
# event에 start/load/abc 이런식으로 있는 경우 테이블로 늘림
group_df["event"].str.split('/').apply(pd.Series, 1)
# CLK_filter를 하고 TakePhoto를 하지 않은 사람
for i in range(0,len(group_df1)):
if sum(group_df1.ix[i,1:].str.contains('CLK_Filter')[~group_df1.ix[i,1:].str.contains('TakePhoto')]) >= 1:
cluster_list.append(1)
else:
cluster_list.append(0)
# df 우측에 단순히 붙이기 (axis=0이면 하단에 붙이기)
pd.concat(['group_df1','temp_df'], axis=1)
# list를 dataframe으로 변경
temp_df = pd.DataFrame(result_list, columns=["cluster"])
# ''로 join한 후 우측으로 붙이기!
group_df1 = df[["id","event"]].groupby(["id"]).aggregate(lambda x: ''.join(str(v) for v in x))
print("1")
group_df1 = pd.concat([group_df1, group_df1["event"].str.split('Launch').apply(pd.Series, 1)], axis=1)
print("2")
group_df1 = group_df1.fillna("")
print("3")
group_df1 = group_df1.reset_index(drop=False)
# event가 CLK_Album이 아닌 이벤트만 설정
df = df[df["event"] != "CLK_Album"]
# index 기준으로 랜덤 샘플링
df1 = df.ix[np.random.choice(df.index, 10000)]
# df에 있는 event_date(datetime 객체)를 필터링하고 싶은 경우! 맨 아래 쿼리도 동일한 결과값 나옴..! 하지만 더 편하네요 쩐당
df.query('20170501 <= event_date <= 20170507')
# df[df['event_date'] >= '2017-05-01'][df['event_date'] <= '2017-05-07']
# lag 함수 구현
df['Data_lagged'] = df.groupby(['Group'])['Data'].shift(1)
# 누적합
df['asq_cum']=df['asq'].cumsum()
# timedelta64 -> float64 변환
data['difference'].astype('timedelta64[D]')
# pivot
day_df[day_df['event_name'] == 'event_name'][['event_date','platform','tu']].pivot(index='event_date',columns='platform',values='tu').plot()
# 이동평균
series.rolling(window=3, center=False).mean().plot(style='--') # window는 간격을 의미!
# 기간 mast
mask = (df['date'] > start_date) & (df['date'] <= end_date)
df.loc[mask]
# re-ordering columns in dataframe column name
df.reindex_axis(sorted(df.columns), axis=1)
# key value 반전
df = pd.DataFrame(dict([ (k,pd.Series(v)) for k,v in test_dict.items() ]))
# value에 특정 값을 포함하는 dataframe 추출 ( | = or)
df[df['A'].str.contains("Hello|Britain")==True]
# 특정 값이 1개라면
df[df['A'].str.contains("hello")]
# numpy 객체로 변환해 용량 줄이는 코드
import numpy as np
for c, dtype in zip(df.columns, df.dtypes):
if dtype == np.float64:
prop[c] = prop[c].astype(np.float32)