
๐ธ ํด์ผํ ์ผ ๐ธ
timestamp ๋ฐ์ดํฐ ์์ผ / ์๊ฐ๋(์ค์ , ์คํ ์ผ๊ฐ)์ผ๋ก labeling ํด์ฃผ๊ธฐ์์ผ / ์๊ฐ๋์ ๋ฐ๋ฅธ ๋ฐ์ดํฐ ๋ถํฌ ํ์ธํ๋ฉด์ ์ ์๋ฏธํ์ง ํ์ ํ๊ธฐ- ์ ์๋ฏธํ๋ค๋ฉด, ์์ผ / ์๊ฐ๋์ ๋ฐ๋ผ ์ด๋ค ํน์ง์ด ์๋์ง ์ถ๊ฐ ๋ถ์ ์งํํ๊ธฐ
- ์๊ฐ๋๋ฅผ ์ด๋ป๊ฒ ๋ถํ ํด์ผ ๋ ์๋ฏธ์์์ง ๋ถ์ํด๋ณด๊ธฐ
โ๏ธ ๋ ์นธ๋์์ ์ฐ๋ ํ๋ก์ ํธ ์ค๋น ๊ณผ์ . ๋ด์ผ ํ์ํ๊ธฐ ์ ์ ์ค๋น๋ฅผ ํด์ผํ๋ค. ์ค๋ ํ ์ผ์ ์์ผ๊ณผ ์๊ฐ๋๋ก timestamp๋ฅผ labelingํ๋ ๊ฒ์ด๋ค.
โ ์ฐธ๊ณ ์๋ฃ
-๐timestamp์ ์ฐํ ์๊ฐ์ 0~6์ผ๋ก ๋ผ๋ฒจ๋งํ๋ ๊ณผ์ ์ ๊ฑฐ์น ์ด์ ์ถ๊ฐํ๋ ๊ฒ.

-๐๊ฐ์ ์์ผ ๋ผ๋ฒจ๋ง ๊ฐ์ ๊ฐ๋ event์ groupingํ์ฌ ๋ถ์.

-๐์์ผ๋ณ Top 20 frequencies aids ๋ถ์. for๋ฌธ ๋๋ฆฌ๋ฉด ๋ ๊ฑธ ๋ด๊ฐ ๋
ธ๊ฐ๋คํ๋ค. 7๊ฐ ๋๋ฌด ๋ง์์ 2๊ฐ๋ง ๊ทธ๋ฆผ ๋ฃ์๋ค
mon_aid_counts = df1[df1['weekday']==0].groupby('aid')[['aid']].count()
tue_aid_counts = df1[df1['weekday']==1].groupby('aid')[['aid']].count()
wed_aid_counts = df1[df1['weekday']==2].groupby('aid')[['aid']].count()
thu_aid_counts = df1[df1['weekday']==3].groupby('aid')[['aid']].count()
fri_aid_counts = df1[df1['weekday']==4].groupby('aid')[['aid']].count()
sat_aid_counts = df1[df1['weekday']==5].groupby('aid')[['aid']].count()
sun_aid_counts = df1[df1['weekday']==6].groupby('aid')[['aid']].count()
mon_aid_counts = mon_aid_counts.rename(columns={'aid': 'count'}).reset_index()
tue_aid_counts = tue_aid_counts.rename(columns={'aid': 'count'}).reset_index()
wed_aid_counts = wed_aid_counts.rename(columns={'aid': 'count'}).reset_index()
thu_aid_counts = thu_aid_counts.rename(columns={'aid': 'count'}).reset_index()
fri_aid_counts = fri_aid_counts.rename(columns={'aid': 'count'}).reset_index()
sat_aid_counts = sat_aid_counts.rename(columns={'aid': 'count'}).reset_index()
sun_aid_counts = sun_aid_counts.rename(columns={'aid': 'count'}).reset_index()
mon_aid_counts.sort_values(by='count', ascending=False, inplace=True)
tue_aid_counts.sort_values(by='count', ascending=False, inplace=True)
wed_aid_counts.sort_values(by='count', ascending=False, inplace=True)
thu_aid_counts.sort_values(by='count', ascending=False, inplace=True)
fri_aid_counts.sort_values(by='count', ascending=False, inplace=True)
sat_aid_counts.sort_values(by='count', ascending=False, inplace=True)
sun_aid_counts.sort_values(by='count', ascending=False, inplace=True)
mon_20_most_frequent_aids = mon_aid_counts.set_index('aid').head(20).to_dict()['count']
tue_20_most_frequent_aids = tue_aid_counts.set_index('aid').head(20).to_dict()['count']
wed_20_most_frequent_aids = wed_aid_counts.set_index('aid').head(20).to_dict()['count']
thu_20_most_frequent_aids = thu_aid_counts.set_index('aid').head(20).to_dict()['count']
fri_20_most_frequent_aids = fri_aid_counts.set_index('aid').head(20).to_dict()['count']
sat_20_most_frequent_aids = sat_aid_counts.set_index('aid').head(20).to_dict()['count']
sun_20_most_frequent_aids = sun_aid_counts.set_index('aid').head(20).to_dict()['count']
def visualize_aid_frequencies(aid_frequencies, title):
fig, ax = plt.subplots(figsize=(6, 4), dpi=100)
ax.barh(range(len(aid_frequencies)), aid_frequencies.values(), align='center')
ax.set_xlabel('')
ax.set_ylabel('')
ax.set_yticks(range(len(aid_frequencies)))
ax.set_yticklabels([f'{x} ({value_count:,})' for x, value_count in aid_frequencies.items()])
ax.set_title(title, size=20, pad=15)
plt.gca().invert_yaxis()
plt.show()
for most_frequent_aids in [mon_20_most_frequent_aids, tue_20_most_frequent_aids, wed_20_most_frequent_aids, thu_20_most_frequent_aids, fri_20_most_frequent_aids, sat_20_most_frequent_aids, sun_20_most_frequent_aids] :
visualize_aid_frequencies(
aid_frequencies=most_frequent_aids,
title='Top 20 Most Frequent aids'
)

+๋๋ฌด ๊ธธ์ด์ ์งค๋ผ๋ฃ์๋ค. ๊ทธ๋ฅ aid number๋ง printํ ๊ฒ์ด ์๋.

๐ ์ธ์ ๋ฅผ ์ค์ /์คํ/์ผ๊ฐ์ผ๋ก ์ง์ ํ ์ง๋ ์ผ๋จ ์ค๋ ์ค๋น ๋๋ ๋ด๊ฐ ์์๋ก ๊ธฐ์ค์ ์ ํ๊ณ , ๋ด์ผ ์์ง์ ์ด์ผ๊ธฐํ๋ฉด์ ์๋ฏธ ์๋ ๊ธฐ์ค์ผ๋ก ์ ํด์ผ๊ฒ ๋ค.
๐ pandas์ between_time ๋ฉ์๋๋ฅผ ์ด์ฉํ์ฌ ๋ชจ๋ ๋ ์ง ํน์ ์๊ฐ ๊ธฐ๊ฐ์ ๊ด์ธก๊ฐ์ ์ถ์ถํ ์ ์๋ค.
TypeError: Index must be DatetimeIndex

๐ ํน์ ์๊ฐ๋์ ๋ํ์ฌ df๋ฅผ ๋ถํ ํ๋ ๊ฒ๊น์ง ์งํํ์๋ค. ์ด์ ์ด ํน์ ์กฐ๊ฑด์ ๋ง๋ ๋ฐ์ดํฐ๋ค์๊ฒ ๊ฐ์์ ๋ง๋ ๋ผ๋ฒจ์ด ๋ถ์ฌ๋ Column์ ์ถ๊ฐํ๋ฉด ๋ ๊ฒ ๊ฐ๋ค.




์ด hour๊ฐ์ 0~23 ๋ฒ์์ ์ ์๊ฐ์ผ ๊ฒ์ด๋ฏ๋ก ๊ธฐ์กด datetime๋ณด๋ค ๋ค๋ฃจ๊ธฐ๊ฐ ์ฌ์ธ ๊ฒ ๊ฐ๋ค. hour์ ๋ํ ์กฐ๊ฑด์ผ๋ก ๋ผ๋ฒจ๋ง์ ํ ์ ์์๊น?

์ด๋ ๊ฒ ํ๋ฉด ๋ด๊ฐ ์๋ํ๋๋ก ๋๋ ๊ฒ ๊ฐ๋ค. ๊ทผ๋ฐ ์ด๊ฒ ์ข์ ๋ฐฉ๋ฒ์ธ์ง ์ ๋ชจ๋ฅด๊ฒ ๋ค.
๐ ์์์ ํ๋ ๋ถ์ ์๊ฐ๋๋ณ๋ก๋ ํด๋ดค๋ค. Top 20 aids๋ 3๊ฐ ์๊ฐํํ๋๋ฐ ์ฌ๊ธฐ์๋ 0์ผ๋๋ง(์ค์ ) ๋ฃ์๋ค.

๐ ์ด์ pandas ๋ง๊ณ scikitlearn์ ์ฌ์ฉํด๋ณด์. ํจ์ค์ค๋น ๊ฐ ์๋ ค์ค label encoder๋ฅผ ๋จผ์ ์ฌ์ฉํด๋ณด์๋ค.

์ ํ ์ ์๋ํ์ง ์๋ ๊ฒ ๊ฐ๋ค. ๋ญ๊ฐ ์ ์ฒ๋ฆฌ๋ฅผ ํ๊ณ ๋ชจ๋ธ์ fit ์์ผ์ผ ํ ๊ฒ ๊ฐ๋ค.
๐ get_dummies๋ฅผ ์ฌ์ฉํด๋ณด์. ๋ด๊ฐ ๋ญ๊ฐ ๋์ ๊ธฐ๋ฅ์ ์๋ชป์ดํดํ ๊ฒ ๊ฐ๋ค. ๋ด๊ฐ ์์์ pandas๋ฅผ ๊ฐ์ง๊ณ timestamp๋ฅผ 0~6(์์ผ)์ด๋ 0~2(์ค์ /์คํ/์ผ๊ฐ)์ผ๋ก labeling ํ๋ฉด ๊ทธ์ ๋ํด์ get_dummies์ label_encoder๋ก one-hot enconding์ ์งํํ๋๊ฒ ๋ง๋ ๊ฑธ๊น?
๐ง ๋ด์ผ ํด์ผํ ์ผ ๐ง
- ์ ์๋ฏธํ๋ค๋ฉด, ์์ผ / ์๊ฐ๋์ ๋ฐ๋ผ ์ด๋ค ํน์ง์ด ์๋์ง ์ถ๊ฐ ๋ถ์ ์งํํ๊ธฐ
- ์๊ฐ๋๋ฅผ ์ด๋ป๊ฒ ๋ถํ ํด์ผ ๋ ์๋ฏธ์์์ง ๋ถ์ํด๋ณด๊ธฐ
- get_dummies. LabelEncoder๋ก One-hot-Encoding ์ฒ๋ฆฌ ํด๋ณด๊ธฐ
- CF ๋ชจ๋ธ ๋ณต์ตํ๊ธฐ
- ๋ด์ผ ํ์ ๋ณด๊ณ ์ค๋นํ๊ธฐ