{
"cells": [
{
"cell_type": "code",
"execution_count": 4,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"파일 다운로드 완료\n",
"====================\n",
"\n",
"데이터셋: 사용자이탈예측\n",
"파일경로: data\\class.csv\n",
"\n",
"====================\n",
"파일 다운로드 완료\n",
"====================\n",
"\n",
"데이터셋: 사용자이탈예측\n",
"파일경로: data\\event.csv\n",
"\n",
"====================\n",
"파일 다운로드 완료\n",
"====================\n",
"\n",
"데이터셋: 사용자이탈예측\n",
"파일경로: data\\logs.csv\n",
"\n",
"====================\n",
"파일 다운로드 완료\n",
"====================\n",
"\n",
"데이터셋: 사용자이탈예측\n",
"파일경로: data\\user_info.csv\n",
"\n",
"====================\n"
]
}
],
"source": [
"import numpy as np\n",
"import pandas as pd\n",
"import matplotlib.pyplot as plt\n",
"import seaborn as sns\n",
"\n",
"!pip install --upgrade mySUNI -q\n",
"from mySUNI import cds\n",
"cds.download_data('사용자이탈예측')"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" log | \n",
" userid | \n",
" date | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" L00000049012330 | \n",
" AS009373 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" 1 | \n",
" L00000049012331 | \n",
" AS015315 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" 2 | \n",
" L00000049012332 | \n",
" AS040841 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" 3 | \n",
" L00000049012333 | \n",
" AS046594 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" 4 | \n",
" L00000049012334 | \n",
" AS073285 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 197423 | \n",
" L00000049209753 | \n",
" TS977703 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
" 197424 | \n",
" L00000049209754 | \n",
" TS979550 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
" 197425 | \n",
" L00000049209755 | \n",
" TS995299 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
" 197426 | \n",
" L00000049209756 | \n",
" TS995853 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
" 197427 | \n",
" L00000049209757 | \n",
" TS999079 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
"
\n",
"
197428 rows × 3 columns
\n",
"
"
],
"text/plain": [
" log userid date\n",
"0 L00000049012330 AS009373 2018-04-01\n",
"1 L00000049012331 AS015315 2018-04-01\n",
"2 L00000049012332 AS040841 2018-04-01\n",
"3 L00000049012333 AS046594 2018-04-01\n",
"4 L00000049012334 AS073285 2018-04-01\n",
"... ... ... ...\n",
"197423 L00000049209753 TS977703 2019-03-31\n",
"197424 L00000049209754 TS979550 2019-03-31\n",
"197425 L00000049209755 TS995299 2019-03-31\n",
"197426 L00000049209756 TS995853 2019-03-31\n",
"197427 L00000049209757 TS999079 2019-03-31\n",
"\n",
"[197428 rows x 3 columns]"
]
},
"execution_count": 5,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# logs.csv 파일을 읽으세요.\n",
"df_logs = pd.read_csv('data/logs.csv')\n",
"df_logs"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" -1 | \n",
"
\n",
" \n",
" 4 | \n",
" HD661448 | \n",
" C03 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" -1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" HD676663 | \n",
" C01 | \n",
" M | \n",
" 2019-03-14 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
"
\n",
" \n",
" 4188 | \n",
" HD246549 | \n",
" C01 | \n",
" F | \n",
" 2019-03-14 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
"
\n",
" \n",
" 4189 | \n",
" GD037007 | \n",
" C03 | \n",
" M | \n",
" 2019-03-14 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
"
\n",
" \n",
" 4190 | \n",
" OA953150 | \n",
" C01 | \n",
" M | \n",
" 2019-03-14 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" -1 | \n",
"
\n",
" \n",
" 4191 | \n",
" IK692635 | \n",
" C02 | \n",
" F | \n",
" 2019-03-15 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 7 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted\n",
"0 OA832399 C01 F 2015-05-01 0:00 NaN CA1 0\n",
"1 PL270116 C01 M 2015-05-01 0:00 NaN CA1 0\n",
"2 OA974876 C01 M 2015-05-01 0:00 NaN CA1 0\n",
"3 HD024127 C01 F 2015-05-01 0:00 NaN CA1 -1\n",
"4 HD661448 C03 F 2015-05-01 0:00 NaN CA1 -1\n",
"... ... ... ... ... ... ... ...\n",
"4187 HD676663 C01 M 2019-03-14 0:00 NaN CA1 0\n",
"4188 HD246549 C01 F 2019-03-14 0:00 NaN CA1 0\n",
"4189 GD037007 C03 M 2019-03-14 0:00 NaN CA1 0\n",
"4190 OA953150 C01 M 2019-03-14 0:00 NaN CA1 -1\n",
"4191 IK692635 C02 F 2019-03-15 0:00 NaN CA1 0\n",
"\n",
"[4192 rows x 7 columns]"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user_info.csv 파일을 읽으세요.\n",
"df_user_info = pd.read_csv('data/user_info.csv')\n",
"df_user_info"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" class | \n",
" class_name | \n",
" price | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" C01 | \n",
" all | \n",
" 10000 | \n",
"
\n",
" \n",
" 1 | \n",
" C02 | \n",
" day | \n",
" 7000 | \n",
"
\n",
" \n",
" 2 | \n",
" C03 | \n",
" night | \n",
" 5000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" class class_name price\n",
"0 C01 all 10000\n",
"1 C02 day 7000\n",
"2 C03 night 5000"
]
},
"execution_count": 7,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# class.csv 파일을 읽으세요.\n",
"df_class = pd.read_csv('data/class.csv')\n",
"df_class"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" event_type\\tevent_name | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" CA1\\tNone | \n",
"
\n",
" \n",
" 1 | \n",
" CA2\\tSale | \n",
"
\n",
" \n",
" 2 | \n",
" CA3\\tFree | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" event_type\\tevent_name\n",
"0 CA1\\tNone\n",
"1 CA2\\tSale\n",
"2 CA3\\tFree"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# event.csv 파일을 읽으세요.\n",
"df_event = pd.read_csv('data/event.csv')\n",
"df_event"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" event_type | \n",
" event_name | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" CA1 | \n",
" None | \n",
"
\n",
" \n",
" 1 | \n",
" CA2 | \n",
" Sale | \n",
"
\n",
" \n",
" 2 | \n",
" CA3 | \n",
" Free | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" event_type event_name\n",
"0 CA1 None\n",
"1 CA2 Sale\n",
"2 CA3 Free"
]
},
"execution_count": 9,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# event.csv 파일을 다시 읽으세요.\n",
"# 구분자는 \\t 입니다.\n",
"df_event = pd.read_csv('data/event.csv', sep='\\t')\n",
"df_event"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK947853 | \n",
" C02 | \n",
" F | \n",
" 2019-03-09 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
"
\n",
" \n",
" 4188 | \n",
" OA301090 | \n",
" C02 | \n",
" F | \n",
" 2019-03-12 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
"
\n",
" \n",
" 4189 | \n",
" OA643695 | \n",
" C02 | \n",
" F | \n",
" 2019-03-12 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
"
\n",
" \n",
" 4190 | \n",
" HD522396 | \n",
" C02 | \n",
" F | \n",
" 2019-03-13 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
"
\n",
" \n",
" 4191 | \n",
" IK692635 | \n",
" C02 | \n",
" F | \n",
" 2019-03-15 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 9 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 0:00 NaN CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 0:00 NaN CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 0:00 NaN CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 0:00 NaN CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 0:00 NaN CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4187 IK947853 C02 F 2019-03-09 0:00 NaN CA1 0 \n",
"4188 OA301090 C02 F 2019-03-12 0:00 NaN CA1 0 \n",
"4189 OA643695 C02 F 2019-03-12 0:00 NaN CA1 0 \n",
"4190 HD522396 C02 F 2019-03-13 0:00 NaN CA1 0 \n",
"4191 IK692635 C02 F 2019-03-15 0:00 NaN CA1 0 \n",
"\n",
" class_name price \n",
"0 all 10000 \n",
"1 all 10000 \n",
"2 all 10000 \n",
"3 all 10000 \n",
"4 all 10000 \n",
"... ... ... \n",
"4187 day 7000 \n",
"4188 day 7000 \n",
"4189 day 7000 \n",
"4190 day 7000 \n",
"4191 day 7000 \n",
"\n",
"[4192 rows x 9 columns]"
]
},
"execution_count": 10,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 파편화된 데이터를 병합 합니다.\n",
"# 1. df_user_info와 df_class을 class를 기준으로 병합하세요. \n",
"user = pd.merge(df_user_info, df_class, on='class')\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK562610 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 0:00 | \n",
" 2019-02-28 0:00 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 0:00 | \n",
" NaN | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 0:00 | \n",
" NaN | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
" 4190 | \n",
" GD082270 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 0:00 | \n",
" 2019-02-28 0:00 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 0:00 | \n",
" NaN | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 10 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type \\\n",
"0 OA832399 C01 F 2015-05-01 0:00 NaN CA1 \n",
"1 PL270116 C01 M 2015-05-01 0:00 NaN CA1 \n",
"2 OA974876 C01 M 2015-05-01 0:00 NaN CA1 \n",
"3 HD024127 C01 F 2015-05-01 0:00 NaN CA1 \n",
"4 IK271057 C01 M 2015-05-01 0:00 NaN CA1 \n",
"... ... ... ... ... ... ... \n",
"4187 IK562610 C02 F 2018-12-13 0:00 2019-02-28 0:00 CA3 \n",
"4188 HI599354 C02 M 2018-12-13 0:00 NaN CA3 \n",
"4189 GD796859 C02 F 2018-12-14 0:00 NaN CA3 \n",
"4190 GD082270 C02 F 2018-12-14 0:00 2019-02-28 0:00 CA3 \n",
"4191 OA426023 C02 F 2018-12-14 0:00 NaN CA3 \n",
"\n",
" is_deleted class_name price event_name \n",
"0 0 all 10000 None \n",
"1 0 all 10000 None \n",
"2 0 all 10000 None \n",
"3 -1 all 10000 None \n",
"4 0 all 10000 None \n",
"... ... ... ... ... \n",
"4187 1 day 7000 Free \n",
"4188 0 day 7000 Free \n",
"4189 0 day 7000 Free \n",
"4190 1 day 7000 Free \n",
"4191 0 day 7000 Free \n",
"\n",
"[4192 rows x 10 columns]"
]
},
"execution_count": 11,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 2. user와 df_event를 event_type을 기준으로 병합하세요.\n",
"user = pd.merge(user, df_event, on='event_type')\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Int64Index: 4192 entries, 0 to 4191\n",
"Data columns (total 10 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 userid 4192 non-null object\n",
" 1 class 4192 non-null object\n",
" 2 gender 4192 non-null object\n",
" 3 start_date 4192 non-null object\n",
" 4 end_date 1350 non-null object\n",
" 5 event_type 4192 non-null object\n",
" 6 is_deleted 4192 non-null int64 \n",
" 7 class_name 4192 non-null object\n",
" 8 price 4192 non-null int64 \n",
" 9 event_name 4192 non-null object\n",
"dtypes: int64(2), object(8)\n",
"memory usage: 360.2+ KB\n"
]
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user 데이터 프레임의 정보를 조회하세요\n",
"user.info()"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"userid 0\n",
"class 0\n",
"gender 0\n",
"start_date 0\n",
"end_date 2842\n",
"event_type 0\n",
"is_deleted 0\n",
"class_name 0\n",
"price 0\n",
"event_name 0\n",
"dtype: int64"
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 결측치를 조회하세요.\n",
"user.isna().sum()"
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 0:00 | \n",
" NaN | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4184 | \n",
" AS310166 | \n",
" C02 | \n",
" F | \n",
" 2018-12-12 0:00 | \n",
" NaN | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
" 4186 | \n",
" HD071461 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 0:00 | \n",
" NaN | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 0:00 | \n",
" NaN | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 0:00 | \n",
" NaN | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 0:00 | \n",
" NaN | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
"
\n",
" \n",
"
\n",
"
2842 rows × 10 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 0:00 NaN CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 0:00 NaN CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 0:00 NaN CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 0:00 NaN CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 0:00 NaN CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4184 AS310166 C02 F 2018-12-12 0:00 NaN CA3 0 \n",
"4186 HD071461 C02 F 2018-12-13 0:00 NaN CA3 0 \n",
"4188 HI599354 C02 M 2018-12-13 0:00 NaN CA3 0 \n",
"4189 GD796859 C02 F 2018-12-14 0:00 NaN CA3 0 \n",
"4191 OA426023 C02 F 2018-12-14 0:00 NaN CA3 0 \n",
"\n",
" class_name price event_name \n",
"0 all 10000 None \n",
"1 all 10000 None \n",
"2 all 10000 None \n",
"3 all 10000 None \n",
"4 all 10000 None \n",
"... ... ... ... \n",
"4184 day 7000 Free \n",
"4186 day 7000 Free \n",
"4188 day 7000 Free \n",
"4189 day 7000 Free \n",
"4191 day 7000 Free \n",
"\n",
"[2842 rows x 10 columns]"
]
},
"execution_count": 14,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# end_date컬럼이 결측치인 데이터만 선택하여 출력하세요\n",
"user.loc[user['end_date'].isna(), :]"
]
},
{
"cell_type": "code",
"execution_count": 15,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" 0 2131\n",
"-1 711\n",
"Name: is_deleted, dtype: int64"
]
},
"execution_count": 15,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# end_date컬럼이 결측치인 데이터의 is_deleted 컬럼의 값별 개수를 카운트 하세요.\n",
"user.loc[user['end_date'].isna(), 'is_deleted'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 16,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
" 1 1013\n",
"-1 337\n",
"Name: is_deleted, dtype: int64"
]
},
"execution_count": 16,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# end_date컬럼이 결측치가 아닌 데이터의 is_deleted 컬럼의 값별 개수를 카운트 하세요.\n",
"user.loc[~user['end_date'].isna(), 'is_deleted'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"class_name\n",
"all 2045\n",
"day 1019\n",
"night 1128\n",
"Name: userid, dtype: int64"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# class_name을 기준으로 그룹을 생성하고 userid의 개수를 조회하세요.\n",
"user.groupby('class_name')['userid'].count()"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"event_name\n",
"Free 492\n",
"None 3050\n",
"Sale 650\n",
"Name: userid, dtype: int64"
]
},
"execution_count": 18,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# event_name을 기준으로 그룹을 생성하고 userid의 개수를 조회하세요.\n",
"user.groupby('event_name')['userid'].count()"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"gender\n",
"F 1983\n",
"M 2209\n",
"Name: userid, dtype: int64"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# gender를 기준으로 그룹을 생성하고 userid의 개수를 조회하세요.\n",
"user.groupby('gender')['userid'].count()"
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"is_deleted\n",
"-1 1048\n",
" 0 2131\n",
" 1 1013\n",
"Name: userid, dtype: int64"
]
},
"execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# is_deleted를 기준으로 그룹을 생성하고 userid의 개수를 조회하세요.\n",
"user.groupby('is_deleted')['userid'].count()"
]
},
{
"cell_type": "code",
"execution_count": 21,
"metadata": {},
"outputs": [],
"source": [
"# 코드를 입력해 주세요\n",
"# start_date 컬럼과 end_date 컬럼을 datetime 형태로 변환하세요\n",
"user['start_date'] = pd.to_datetime(user['start_date'])\n",
"user['end_date'] = pd.to_datetime(user['end_date'])"
]
},
{
"cell_type": "code",
"execution_count": 22,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"\n",
"Int64Index: 4192 entries, 0 to 4191\n",
"Data columns (total 10 columns):\n",
" # Column Non-Null Count Dtype \n",
"--- ------ -------------- ----- \n",
" 0 userid 4192 non-null object \n",
" 1 class 4192 non-null object \n",
" 2 gender 4192 non-null object \n",
" 3 start_date 4192 non-null datetime64[ns]\n",
" 4 end_date 1350 non-null datetime64[ns]\n",
" 5 event_type 4192 non-null object \n",
" 6 is_deleted 4192 non-null int64 \n",
" 7 class_name 4192 non-null object \n",
" 8 price 4192 non-null int64 \n",
" 9 event_name 4192 non-null object \n",
"dtypes: datetime64[ns](2), int64(2), object(6)\n",
"memory usage: 360.2+ KB\n"
]
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# datetime으로 변경을 확인하기 위해 정보를 조회하세요\n",
"user.info()"
]
},
{
"cell_type": "code",
"execution_count": 23,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" start_year | \n",
" start_month | \n",
" start_day | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK562610 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 13 | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 13 | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 14 | \n",
"
\n",
" \n",
" 4190 | \n",
" GD082270 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 14 | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 14 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 13 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 NaT CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 NaT CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 NaT CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 NaT CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 NaT CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4187 IK562610 C02 F 2018-12-13 2019-02-28 CA3 1 \n",
"4188 HI599354 C02 M 2018-12-13 NaT CA3 0 \n",
"4189 GD796859 C02 F 2018-12-14 NaT CA3 0 \n",
"4190 GD082270 C02 F 2018-12-14 2019-02-28 CA3 1 \n",
"4191 OA426023 C02 F 2018-12-14 NaT CA3 0 \n",
"\n",
" class_name price event_name start_year start_month start_day \n",
"0 all 10000 None 2015 5 1 \n",
"1 all 10000 None 2015 5 1 \n",
"2 all 10000 None 2015 5 1 \n",
"3 all 10000 None 2015 5 1 \n",
"4 all 10000 None 2015 5 1 \n",
"... ... ... ... ... ... ... \n",
"4187 day 7000 Free 2018 12 13 \n",
"4188 day 7000 Free 2018 12 13 \n",
"4189 day 7000 Free 2018 12 14 \n",
"4190 day 7000 Free 2018 12 14 \n",
"4191 day 7000 Free 2018 12 14 \n",
"\n",
"[4192 rows x 13 columns]"
]
},
"execution_count": 23,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# start_date 컬럼을 기반으로 start_year, start_month, start_day 컬럼을 추가하세요\n",
"# dt 사용\n",
"user['start_year'] = user['start_date'].dt.year\n",
"user['start_month'] = user['start_date'].dt.month\n",
"user['start_day'] = user['start_date'].dt.day\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 24,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" start_year | \n",
" start_month | \n",
" start_day | \n",
" end_year | \n",
" end_month | \n",
" end_day | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2015 | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK562610 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 13 | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 13 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 14 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 4190 | \n",
" GD082270 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 14 | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 12 | \n",
" 14 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 16 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 NaT CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 NaT CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 NaT CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 NaT CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 NaT CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4187 IK562610 C02 F 2018-12-13 2019-02-28 CA3 1 \n",
"4188 HI599354 C02 M 2018-12-13 NaT CA3 0 \n",
"4189 GD796859 C02 F 2018-12-14 NaT CA3 0 \n",
"4190 GD082270 C02 F 2018-12-14 2019-02-28 CA3 1 \n",
"4191 OA426023 C02 F 2018-12-14 NaT CA3 0 \n",
"\n",
" class_name price event_name start_year start_month start_day \\\n",
"0 all 10000 None 2015 5 1 \n",
"1 all 10000 None 2015 5 1 \n",
"2 all 10000 None 2015 5 1 \n",
"3 all 10000 None 2015 5 1 \n",
"4 all 10000 None 2015 5 1 \n",
"... ... ... ... ... ... ... \n",
"4187 day 7000 Free 2018 12 13 \n",
"4188 day 7000 Free 2018 12 13 \n",
"4189 day 7000 Free 2018 12 14 \n",
"4190 day 7000 Free 2018 12 14 \n",
"4191 day 7000 Free 2018 12 14 \n",
"\n",
" end_year end_month end_day \n",
"0 NaN NaN NaN \n",
"1 NaN NaN NaN \n",
"2 NaN NaN NaN \n",
"3 NaN NaN NaN \n",
"4 NaN NaN NaN \n",
"... ... ... ... \n",
"4187 2019.0 2.0 28.0 \n",
"4188 NaN NaN NaN \n",
"4189 NaN NaN NaN \n",
"4190 2019.0 2.0 28.0 \n",
"4191 NaN NaN NaN \n",
"\n",
"[4192 rows x 16 columns]"
]
},
"execution_count": 24,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# end_date 컬럼을 기반으로 end_year, end_month, end_day 컬럼을 추가하세요\n",
"# dt 사용\n",
"user['end_year'] = user['end_date'].dt.year\n",
"user['end_month'] = user['end_date'].dt.month\n",
"user['end_day'] = user['end_date'].dt.day\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 25,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/plain": [
"start_year start_month\n",
"2015 5 62\n",
" 6 69\n",
" 7 53\n",
" 8 53\n",
" 9 71\n",
" 10 54\n",
" 11 63\n",
" 12 67\n",
"2016 1 56\n",
" 2 48\n",
" 3 55\n",
" 4 57\n",
" 5 56\n",
" 6 76\n",
" 7 69\n",
" 8 77\n",
" 9 75\n",
" 10 71\n",
" 11 65\n",
" 12 76\n",
"2017 1 75\n",
" 2 74\n",
" 3 72\n",
" 4 99\n",
" 5 105\n",
" 6 95\n",
" 7 100\n",
" 8 122\n",
" 9 115\n",
" 10 98\n",
" 11 108\n",
" 12 160\n",
"2018 1 122\n",
" 2 104\n",
" 3 94\n",
" 4 175\n",
" 5 193\n",
" 6 166\n",
" 7 135\n",
" 8 102\n",
" 9 88\n",
" 10 66\n",
" 11 65\n",
" 12 157\n",
"2019 1 90\n",
" 2 74\n",
" 3 65\n",
"Name: userid, dtype: int64"
]
},
"execution_count": 25,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# start_year와 start_month 컬럼을 이용하여 월별 신규 회원의 수를 조회하세요\n",
"user.groupby(['start_year', 'start_month'])['userid'].count()"
]
},
{
"cell_type": "code",
"execution_count": 26,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 해당 결과를 시각화 하세요\n",
"user.groupby(['start_year', 'start_month'])['userid'].count().plot()\n",
"plt.show()"
]
},
{
"cell_type": "code",
"execution_count": 27,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"end_year end_month\n",
"2018.0 4.0 121\n",
" 5.0 125\n",
" 6.0 106\n",
" 7.0 102\n",
" 8.0 113\n",
" 9.0 104\n",
" 10.0 90\n",
" 11.0 89\n",
" 12.0 111\n",
"2019.0 1.0 129\n",
" 2.0 149\n",
" 3.0 111\n",
"Name: userid, dtype: int64"
]
},
"execution_count": 27,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# end_year와 end_month 컬럼을 이용하여 월별 탈퇴 회원의 수를 조회하세요\n",
"user.groupby(['end_year', 'end_month'])['userid'].count()"
]
},
{
"cell_type": "code",
"execution_count": 28,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
""
]
},
"execution_count": 28,
"metadata": {},
"output_type": "execute_result"
},
{
"data": {
"image/png": "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\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 해당 결과를 시각화 하세요\n",
"user.groupby(['end_year', 'end_month'])['userid'].count().plot()"
]
},
{
"cell_type": "code",
"execution_count": 29,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"start_year start_month\n",
"2018 5 193\n",
" 4 175\n",
" 6 166\n",
"2017 12 160\n",
"2018 12 157\n",
"Name: userid, dtype: int64"
]
},
"execution_count": 29,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 신규 가입이 가장 많은 상위 5개의 달을 조회하세요.\n",
"user.groupby(['start_year', 'start_month'])['userid'].count().sort_values(ascending=False).head()"
]
},
{
"cell_type": "code",
"execution_count": 30,
"metadata": {
"scrolled": true
},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" start_year | \n",
" start_month | \n",
" start_day | \n",
" end_year | \n",
" end_month | \n",
" end_day | \n",
"
\n",
" \n",
" \n",
" \n",
" 3204 | \n",
" HD805503 | \n",
" C01 | \n",
" M | \n",
" 2018-05-01 | \n",
" NaT | \n",
" CA2 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" Sale | \n",
" 2018 | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 3205 | \n",
" IK000432 | \n",
" C01 | \n",
" F | \n",
" 2018-05-01 | \n",
" 2019-03-31 | \n",
" CA2 | \n",
" 1 | \n",
" all | \n",
" 10000 | \n",
" Sale | \n",
" 2018 | \n",
" 5 | \n",
" 1 | \n",
" 2019.0 | \n",
" 3.0 | \n",
" 31.0 | \n",
"
\n",
" \n",
" 3206 | \n",
" AS247467 | \n",
" C01 | \n",
" M | \n",
" 2018-05-01 | \n",
" 2018-11-30 | \n",
" CA2 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" Sale | \n",
" 2018 | \n",
" 5 | \n",
" 1 | \n",
" 2018.0 | \n",
" 11.0 | \n",
" 30.0 | \n",
"
\n",
" \n",
" 3207 | \n",
" OA777947 | \n",
" C01 | \n",
" M | \n",
" 2018-05-01 | \n",
" 2018-12-31 | \n",
" CA2 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" Sale | \n",
" 2018 | \n",
" 5 | \n",
" 1 | \n",
" 2018.0 | \n",
" 12.0 | \n",
" 31.0 | \n",
"
\n",
" \n",
" 3208 | \n",
" HI630247 | \n",
" C01 | \n",
" M | \n",
" 2018-05-01 | \n",
" NaT | \n",
" CA2 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" Sale | \n",
" 2018 | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4153 | \n",
" PL850297 | \n",
" C02 | \n",
" F | \n",
" 2018-04-15 | \n",
" 2018-05-31 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 4 | \n",
" 15 | \n",
" 2018.0 | \n",
" 5.0 | \n",
" 31.0 | \n",
"
\n",
" \n",
" 4154 | \n",
" HD104614 | \n",
" C02 | \n",
" F | \n",
" 2018-04-15 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 4 | \n",
" 15 | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
"
\n",
" \n",
" 4155 | \n",
" AS628722 | \n",
" C02 | \n",
" F | \n",
" 2018-04-15 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 4 | \n",
" 15 | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
"
\n",
" \n",
" 4156 | \n",
" GD716223 | \n",
" C02 | \n",
" F | \n",
" 2018-04-15 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 4 | \n",
" 15 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 4157 | \n",
" HD981197 | \n",
" C02 | \n",
" F | \n",
" 2018-04-15 | \n",
" 2018-12-31 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 2018 | \n",
" 4 | \n",
" 15 | \n",
" 2018.0 | \n",
" 12.0 | \n",
" 31.0 | \n",
"
\n",
" \n",
"
\n",
"
534 rows × 16 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"3204 HD805503 C01 M 2018-05-01 NaT CA2 -1 \n",
"3205 IK000432 C01 F 2018-05-01 2019-03-31 CA2 1 \n",
"3206 AS247467 C01 M 2018-05-01 2018-11-30 CA2 -1 \n",
"3207 OA777947 C01 M 2018-05-01 2018-12-31 CA2 -1 \n",
"3208 HI630247 C01 M 2018-05-01 NaT CA2 0 \n",
"... ... ... ... ... ... ... ... \n",
"4153 PL850297 C02 F 2018-04-15 2018-05-31 CA3 1 \n",
"4154 HD104614 C02 F 2018-04-15 2019-02-28 CA3 1 \n",
"4155 AS628722 C02 F 2018-04-15 2019-02-28 CA3 1 \n",
"4156 GD716223 C02 F 2018-04-15 NaT CA3 0 \n",
"4157 HD981197 C02 F 2018-04-15 2018-12-31 CA3 1 \n",
"\n",
" class_name price event_name start_year start_month start_day \\\n",
"3204 all 10000 Sale 2018 5 1 \n",
"3205 all 10000 Sale 2018 5 1 \n",
"3206 all 10000 Sale 2018 5 1 \n",
"3207 all 10000 Sale 2018 5 1 \n",
"3208 all 10000 Sale 2018 5 1 \n",
"... ... ... ... ... ... ... \n",
"4153 day 7000 Free 2018 4 15 \n",
"4154 day 7000 Free 2018 4 15 \n",
"4155 day 7000 Free 2018 4 15 \n",
"4156 day 7000 Free 2018 4 15 \n",
"4157 day 7000 Free 2018 4 15 \n",
"\n",
" end_year end_month end_day \n",
"3204 NaN NaN NaN \n",
"3205 2019.0 3.0 31.0 \n",
"3206 2018.0 11.0 30.0 \n",
"3207 2018.0 12.0 31.0 \n",
"3208 NaN NaN NaN \n",
"... ... ... ... \n",
"4153 2018.0 5.0 31.0 \n",
"4154 2019.0 2.0 28.0 \n",
"4155 2019.0 2.0 28.0 \n",
"4156 NaN NaN NaN \n",
"4157 2018.0 12.0 31.0 \n",
"\n",
"[534 rows x 16 columns]"
]
},
"execution_count": 30,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 2018년 4~6월 데이터만 추출하세요. 결과를 top3 변수에 저장하세요.\n",
"top3 = user.loc[ (user['start_year'] == 2018) & (user['start_month'].isin([4,5,6])), : ]\n",
"top3"
]
},
{
"cell_type": "code",
"execution_count": 31,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"Sale 359\n",
"Free 175\n",
"Name: event_name, dtype: int64"
]
},
"execution_count": 31,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# top3 데이터 프레임의 event_name 컬럼의 고유값별 개수를 조회하세요\n",
"top3['event_name'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 32,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"all 272\n",
"night 140\n",
"day 122\n",
"Name: class_name, dtype: int64"
]
},
"execution_count": 32,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# top3 데이터 프레임의 class_name 컬럼의 고유값별 개수를 조회하세요\n",
"top3['class_name'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 33,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" log | \n",
" userid | \n",
" date | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" L00000049012330 | \n",
" AS009373 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" 1 | \n",
" L00000049012331 | \n",
" AS015315 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" 2 | \n",
" L00000049012332 | \n",
" AS040841 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" 3 | \n",
" L00000049012333 | \n",
" AS046594 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" 4 | \n",
" L00000049012334 | \n",
" AS073285 | \n",
" 2018-04-01 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 197423 | \n",
" L00000049209753 | \n",
" TS977703 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
" 197424 | \n",
" L00000049209754 | \n",
" TS979550 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
" 197425 | \n",
" L00000049209755 | \n",
" TS995299 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
" 197426 | \n",
" L00000049209756 | \n",
" TS995853 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
" 197427 | \n",
" L00000049209757 | \n",
" TS999079 | \n",
" 2019-03-31 | \n",
"
\n",
" \n",
"
\n",
"
197428 rows × 3 columns
\n",
"
"
],
"text/plain": [
" log userid date\n",
"0 L00000049012330 AS009373 2018-04-01\n",
"1 L00000049012331 AS015315 2018-04-01\n",
"2 L00000049012332 AS040841 2018-04-01\n",
"3 L00000049012333 AS046594 2018-04-01\n",
"4 L00000049012334 AS073285 2018-04-01\n",
"... ... ... ...\n",
"197423 L00000049209753 TS977703 2019-03-31\n",
"197424 L00000049209754 TS979550 2019-03-31\n",
"197425 L00000049209755 TS995299 2019-03-31\n",
"197426 L00000049209756 TS995853 2019-03-31\n",
"197427 L00000049209757 TS999079 2019-03-31\n",
"\n",
"[197428 rows x 3 columns]"
]
},
"execution_count": 33,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs의 date 컬럼을 datetime 형식으로 변경하세요.\n",
"df_logs['date'] = pd.to_datetime(df_logs['date'])\n",
"df_logs"
]
},
{
"cell_type": "code",
"execution_count": 34,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" log | \n",
" userid | \n",
" date | \n",
" month | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" L00000049012330 | \n",
" AS009373 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
"
\n",
" \n",
" 1 | \n",
" L00000049012331 | \n",
" AS015315 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
"
\n",
" \n",
" 2 | \n",
" L00000049012332 | \n",
" AS040841 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
"
\n",
" \n",
" 3 | \n",
" L00000049012333 | \n",
" AS046594 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
"
\n",
" \n",
" 4 | \n",
" L00000049012334 | \n",
" AS073285 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 197423 | \n",
" L00000049209753 | \n",
" TS977703 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
"
\n",
" \n",
" 197424 | \n",
" L00000049209754 | \n",
" TS979550 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
"
\n",
" \n",
" 197425 | \n",
" L00000049209755 | \n",
" TS995299 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
"
\n",
" \n",
" 197426 | \n",
" L00000049209756 | \n",
" TS995853 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
"
\n",
" \n",
" 197427 | \n",
" L00000049209757 | \n",
" TS999079 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
"
\n",
" \n",
"
\n",
"
197428 rows × 4 columns
\n",
"
"
],
"text/plain": [
" log userid date month\n",
"0 L00000049012330 AS009373 2018-04-01 201804\n",
"1 L00000049012331 AS015315 2018-04-01 201804\n",
"2 L00000049012332 AS040841 2018-04-01 201804\n",
"3 L00000049012333 AS046594 2018-04-01 201804\n",
"4 L00000049012334 AS073285 2018-04-01 201804\n",
"... ... ... ... ...\n",
"197423 L00000049209753 TS977703 2019-03-31 201903\n",
"197424 L00000049209754 TS979550 2019-03-31 201903\n",
"197425 L00000049209755 TS995299 2019-03-31 201903\n",
"197426 L00000049209756 TS995853 2019-03-31 201903\n",
"197427 L00000049209757 TS999079 2019-03-31 201903\n",
"\n",
"[197428 rows x 4 columns]"
]
},
"execution_count": 34,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# df_logs의 date 컬럼을 년월 형태로 표현하세요.\n",
"# dt와 strftime 함수 이용\n",
"df_logs['month'] = df_logs['date'].dt.strftime('%Y%m')\n",
"df_logs"
]
},
{
"cell_type": "code",
"execution_count": 35,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"month userid \n",
"201804 AS002855 4\n",
" AS009013 2\n",
" AS009373 3\n",
" AS015315 6\n",
" AS015739 7\n",
" ..\n",
"201903 TS995853 8\n",
" TS998593 8\n",
" TS999079 3\n",
" TS999231 6\n",
" TS999855 4\n",
"Name: log, Length: 36842, dtype: int64"
]
},
"execution_count": 35,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs에서 date와 userid를 기준으로 그룹을 생성 후 log의 개수를 카운트하세요.\n",
"df_logs_month = df_logs.groupby(['month','userid'])['log'].count()\n",
"df_logs_month"
]
},
{
"cell_type": "code",
"execution_count": 36,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" month | \n",
" userid | \n",
" log | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 201804 | \n",
" AS002855 | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" 201804 | \n",
" AS009013 | \n",
" 2 | \n",
"
\n",
" \n",
" 2 | \n",
" 201804 | \n",
" AS009373 | \n",
" 3 | \n",
"
\n",
" \n",
" 3 | \n",
" 201804 | \n",
" AS015315 | \n",
" 6 | \n",
"
\n",
" \n",
" 4 | \n",
" 201804 | \n",
" AS015739 | \n",
" 7 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 36837 | \n",
" 201903 | \n",
" TS995853 | \n",
" 8 | \n",
"
\n",
" \n",
" 36838 | \n",
" 201903 | \n",
" TS998593 | \n",
" 8 | \n",
"
\n",
" \n",
" 36839 | \n",
" 201903 | \n",
" TS999079 | \n",
" 3 | \n",
"
\n",
" \n",
" 36840 | \n",
" 201903 | \n",
" TS999231 | \n",
" 6 | \n",
"
\n",
" \n",
" 36841 | \n",
" 201903 | \n",
" TS999855 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
36842 rows × 3 columns
\n",
"
"
],
"text/plain": [
" month userid log\n",
"0 201804 AS002855 4\n",
"1 201804 AS009013 2\n",
"2 201804 AS009373 3\n",
"3 201804 AS015315 6\n",
"4 201804 AS015739 7\n",
"... ... ... ...\n",
"36837 201903 TS995853 8\n",
"36838 201903 TS998593 8\n",
"36839 201903 TS999079 3\n",
"36840 201903 TS999231 6\n",
"36841 201903 TS999855 4\n",
"\n",
"[36842 rows x 3 columns]"
]
},
"execution_count": 36,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs_month 데이터 프레임의 인덱스를 초기화 하세요.\n",
"df_logs_month = df_logs_month.reset_index()\n",
"df_logs_month"
]
},
{
"cell_type": "code",
"execution_count": 37,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" month | \n",
" userid | \n",
" freq | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 201804 | \n",
" AS002855 | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" 201804 | \n",
" AS009013 | \n",
" 2 | \n",
"
\n",
" \n",
" 2 | \n",
" 201804 | \n",
" AS009373 | \n",
" 3 | \n",
"
\n",
" \n",
" 3 | \n",
" 201804 | \n",
" AS015315 | \n",
" 6 | \n",
"
\n",
" \n",
" 4 | \n",
" 201804 | \n",
" AS015739 | \n",
" 7 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 36837 | \n",
" 201903 | \n",
" TS995853 | \n",
" 8 | \n",
"
\n",
" \n",
" 36838 | \n",
" 201903 | \n",
" TS998593 | \n",
" 8 | \n",
"
\n",
" \n",
" 36839 | \n",
" 201903 | \n",
" TS999079 | \n",
" 3 | \n",
"
\n",
" \n",
" 36840 | \n",
" 201903 | \n",
" TS999231 | \n",
" 6 | \n",
"
\n",
" \n",
" 36841 | \n",
" 201903 | \n",
" TS999855 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
36842 rows × 3 columns
\n",
"
"
],
"text/plain": [
" month userid freq\n",
"0 201804 AS002855 4\n",
"1 201804 AS009013 2\n",
"2 201804 AS009373 3\n",
"3 201804 AS015315 6\n",
"4 201804 AS015739 7\n",
"... ... ... ...\n",
"36837 201903 TS995853 8\n",
"36838 201903 TS998593 8\n",
"36839 201903 TS999079 3\n",
"36840 201903 TS999231 6\n",
"36841 201903 TS999855 4\n",
"\n",
"[36842 rows x 3 columns]"
]
},
"execution_count": 37,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs_month 데이터 프레임의 log 컬럼의 이름을 freq로 변경하세요\n",
"df_logs_month.rename(columns={'log':'freq'}, inplace=True)\n",
"df_logs_month"
]
},
{
"cell_type": "code",
"execution_count": 38,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" min | \n",
" median | \n",
" mean | \n",
" max | \n",
" sum | \n",
"
\n",
" \n",
" userid | \n",
" | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" AS002855 | \n",
" 2 | \n",
" 5.0 | \n",
" 4.500000 | \n",
" 7 | \n",
" 54 | \n",
"
\n",
" \n",
" AS008805 | \n",
" 1 | \n",
" 4.0 | \n",
" 4.000000 | \n",
" 8 | \n",
" 40 | \n",
"
\n",
" \n",
" AS009013 | \n",
" 2 | \n",
" 2.0 | \n",
" 2.000000 | \n",
" 2 | \n",
" 2 | \n",
"
\n",
" \n",
" AS009373 | \n",
" 3 | \n",
" 5.0 | \n",
" 5.083333 | \n",
" 7 | \n",
" 61 | \n",
"
\n",
" \n",
" AS015233 | \n",
" 4 | \n",
" 7.0 | \n",
" 7.545455 | \n",
" 11 | \n",
" 83 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" TS995853 | \n",
" 8 | \n",
" 9.5 | \n",
" 9.500000 | \n",
" 11 | \n",
" 19 | \n",
"
\n",
" \n",
" TS998593 | \n",
" 7 | \n",
" 8.0 | \n",
" 8.142857 | \n",
" 9 | \n",
" 57 | \n",
"
\n",
" \n",
" TS999079 | \n",
" 2 | \n",
" 5.5 | \n",
" 4.916667 | \n",
" 9 | \n",
" 59 | \n",
"
\n",
" \n",
" TS999231 | \n",
" 1 | \n",
" 5.0 | \n",
" 4.666667 | \n",
" 8 | \n",
" 56 | \n",
"
\n",
" \n",
" TS999855 | \n",
" 3 | \n",
" 4.0 | \n",
" 4.583333 | \n",
" 7 | \n",
" 55 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 5 columns
\n",
"
"
],
"text/plain": [
" min median mean max sum\n",
"userid \n",
"AS002855 2 5.0 4.500000 7 54\n",
"AS008805 1 4.0 4.000000 8 40\n",
"AS009013 2 2.0 2.000000 2 2\n",
"AS009373 3 5.0 5.083333 7 61\n",
"AS015233 4 7.0 7.545455 11 83\n",
"... ... ... ... ... ...\n",
"TS995853 8 9.5 9.500000 11 19\n",
"TS998593 7 8.0 8.142857 9 57\n",
"TS999079 2 5.5 4.916667 9 59\n",
"TS999231 1 5.0 4.666667 8 56\n",
"TS999855 3 4.0 4.583333 7 55\n",
"\n",
"[4192 rows x 5 columns]"
]
},
"execution_count": 38,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs_month 데이터 프레임의 userid를 이용하여 freq 컬럼의 최소, 중앙값, 평균, 최대, 합계를 계산하세요.\n",
"user_log = df_logs_month.groupby('userid')['freq'].agg(['min', 'median', 'mean', 'max', 'sum'])\n",
"user_log"
]
},
{
"cell_type": "code",
"execution_count": 39,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" min | \n",
" median | \n",
" mean | \n",
" max | \n",
" sum | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" AS002855 | \n",
" 2 | \n",
" 5.0 | \n",
" 4.500000 | \n",
" 7 | \n",
" 54 | \n",
"
\n",
" \n",
" 1 | \n",
" AS008805 | \n",
" 1 | \n",
" 4.0 | \n",
" 4.000000 | \n",
" 8 | \n",
" 40 | \n",
"
\n",
" \n",
" 2 | \n",
" AS009013 | \n",
" 2 | \n",
" 2.0 | \n",
" 2.000000 | \n",
" 2 | \n",
" 2 | \n",
"
\n",
" \n",
" 3 | \n",
" AS009373 | \n",
" 3 | \n",
" 5.0 | \n",
" 5.083333 | \n",
" 7 | \n",
" 61 | \n",
"
\n",
" \n",
" 4 | \n",
" AS015233 | \n",
" 4 | \n",
" 7.0 | \n",
" 7.545455 | \n",
" 11 | \n",
" 83 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" TS995853 | \n",
" 8 | \n",
" 9.5 | \n",
" 9.500000 | \n",
" 11 | \n",
" 19 | \n",
"
\n",
" \n",
" 4188 | \n",
" TS998593 | \n",
" 7 | \n",
" 8.0 | \n",
" 8.142857 | \n",
" 9 | \n",
" 57 | \n",
"
\n",
" \n",
" 4189 | \n",
" TS999079 | \n",
" 2 | \n",
" 5.5 | \n",
" 4.916667 | \n",
" 9 | \n",
" 59 | \n",
"
\n",
" \n",
" 4190 | \n",
" TS999231 | \n",
" 1 | \n",
" 5.0 | \n",
" 4.666667 | \n",
" 8 | \n",
" 56 | \n",
"
\n",
" \n",
" 4191 | \n",
" TS999855 | \n",
" 3 | \n",
" 4.0 | \n",
" 4.583333 | \n",
" 7 | \n",
" 55 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 6 columns
\n",
"
"
],
"text/plain": [
" userid min median mean max sum\n",
"0 AS002855 2 5.0 4.500000 7 54\n",
"1 AS008805 1 4.0 4.000000 8 40\n",
"2 AS009013 2 2.0 2.000000 2 2\n",
"3 AS009373 3 5.0 5.083333 7 61\n",
"4 AS015233 4 7.0 7.545455 11 83\n",
"... ... ... ... ... ... ...\n",
"4187 TS995853 8 9.5 9.500000 11 19\n",
"4188 TS998593 7 8.0 8.142857 9 57\n",
"4189 TS999079 2 5.5 4.916667 9 59\n",
"4190 TS999231 1 5.0 4.666667 8 56\n",
"4191 TS999855 3 4.0 4.583333 7 55\n",
"\n",
"[4192 rows x 6 columns]"
]
},
"execution_count": 39,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user_log 데이터 프레임의 인덱스를 초기화 하세요.\n",
"user_log.reset_index(inplace=True)\n",
"user_log"
]
},
{
"cell_type": "code",
"execution_count": 40,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" log | \n",
" userid | \n",
" date | \n",
" month | \n",
" wday | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" L00000049012330 | \n",
" AS009373 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
" 6 | \n",
"
\n",
" \n",
" 1 | \n",
" L00000049012331 | \n",
" AS015315 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" L00000049012332 | \n",
" AS040841 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
" 6 | \n",
"
\n",
" \n",
" 3 | \n",
" L00000049012333 | \n",
" AS046594 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
" 6 | \n",
"
\n",
" \n",
" 4 | \n",
" L00000049012334 | \n",
" AS073285 | \n",
" 2018-04-01 | \n",
" 201804 | \n",
" 6 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 197423 | \n",
" L00000049209753 | \n",
" TS977703 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
" 6 | \n",
"
\n",
" \n",
" 197424 | \n",
" L00000049209754 | \n",
" TS979550 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
" 6 | \n",
"
\n",
" \n",
" 197425 | \n",
" L00000049209755 | \n",
" TS995299 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
" 6 | \n",
"
\n",
" \n",
" 197426 | \n",
" L00000049209756 | \n",
" TS995853 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
" 6 | \n",
"
\n",
" \n",
" 197427 | \n",
" L00000049209757 | \n",
" TS999079 | \n",
" 2019-03-31 | \n",
" 201903 | \n",
" 6 | \n",
"
\n",
" \n",
"
\n",
"
197428 rows × 5 columns
\n",
"
"
],
"text/plain": [
" log userid date month wday\n",
"0 L00000049012330 AS009373 2018-04-01 201804 6\n",
"1 L00000049012331 AS015315 2018-04-01 201804 6\n",
"2 L00000049012332 AS040841 2018-04-01 201804 6\n",
"3 L00000049012333 AS046594 2018-04-01 201804 6\n",
"4 L00000049012334 AS073285 2018-04-01 201804 6\n",
"... ... ... ... ... ...\n",
"197423 L00000049209753 TS977703 2019-03-31 201903 6\n",
"197424 L00000049209754 TS979550 2019-03-31 201903 6\n",
"197425 L00000049209755 TS995299 2019-03-31 201903 6\n",
"197426 L00000049209756 TS995853 2019-03-31 201903 6\n",
"197427 L00000049209757 TS999079 2019-03-31 201903 6\n",
"\n",
"[197428 rows x 5 columns]"
]
},
"execution_count": 40,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs 데이터 프레임을 이용하여 요일(weekday) 정보를 추출하세요\n",
"df_logs[\"wday\"] = df_logs[\"date\"].dt.weekday\n",
"df_logs"
]
},
{
"cell_type": "code",
"execution_count": 41,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" | \n",
" | \n",
" count | \n",
"
\n",
" \n",
" userid | \n",
" month | \n",
" wday | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" AS002855 | \n",
" 201804 | \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
" 201805 | \n",
" 2 | \n",
" 1 | \n",
"
\n",
" \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
" 201806 | \n",
" 5 | \n",
" 5 | \n",
"
\n",
" \n",
" 201807 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" TS999855 | \n",
" 201901 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
" 6 | \n",
" 1 | \n",
"
\n",
" \n",
" 201902 | \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
" 201903 | \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
93333 rows × 1 columns
\n",
"
"
],
"text/plain": [
" count\n",
"userid month wday \n",
"AS002855 201804 5 4\n",
" 201805 2 1\n",
" 5 4\n",
" 201806 5 5\n",
" 201807 1 1\n",
"... ...\n",
"TS999855 201901 1 1\n",
" 5 4\n",
" 6 1\n",
" 201902 5 4\n",
" 201903 5 4\n",
"\n",
"[93333 rows x 1 columns]"
]
},
"execution_count": 41,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs 데이터 프레임의 userid, month, wday 컬럼을 그룹으로 log 컬럼의 개수를 카운트하세요.\n",
"df_logs_weekly = df_logs.groupby(['userid','month','wday'])['log'].agg(['count'])\n",
"df_logs_weekly"
]
},
{
"cell_type": "code",
"execution_count": 42,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" month | \n",
" wday | \n",
" count | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" AS002855 | \n",
" 201804 | \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" AS002855 | \n",
" 201805 | \n",
" 2 | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" AS002855 | \n",
" 201805 | \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
" 3 | \n",
" AS002855 | \n",
" 201806 | \n",
" 5 | \n",
" 5 | \n",
"
\n",
" \n",
" 4 | \n",
" AS002855 | \n",
" 201807 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 93328 | \n",
" TS999855 | \n",
" 201901 | \n",
" 1 | \n",
" 1 | \n",
"
\n",
" \n",
" 93329 | \n",
" TS999855 | \n",
" 201901 | \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
" 93330 | \n",
" TS999855 | \n",
" 201901 | \n",
" 6 | \n",
" 1 | \n",
"
\n",
" \n",
" 93331 | \n",
" TS999855 | \n",
" 201902 | \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
" 93332 | \n",
" TS999855 | \n",
" 201903 | \n",
" 5 | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
93333 rows × 4 columns
\n",
"
"
],
"text/plain": [
" userid month wday count\n",
"0 AS002855 201804 5 4\n",
"1 AS002855 201805 2 1\n",
"2 AS002855 201805 5 4\n",
"3 AS002855 201806 5 5\n",
"4 AS002855 201807 1 1\n",
"... ... ... ... ...\n",
"93328 TS999855 201901 1 1\n",
"93329 TS999855 201901 5 4\n",
"93330 TS999855 201901 6 1\n",
"93331 TS999855 201902 5 4\n",
"93332 TS999855 201903 5 4\n",
"\n",
"[93333 rows x 4 columns]"
]
},
"execution_count": 42,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs_weekly의 인덱스를 초기화 하세요.\n",
"df_logs_weekly.reset_index(inplace=True)\n",
"df_logs_weekly"
]
},
{
"cell_type": "code",
"execution_count": 43,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" month | \n",
" wday | \n",
" count | \n",
"
\n",
" \n",
" userid | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" AS002855 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
"
\n",
" \n",
" AS008805 | \n",
" 201903 | \n",
" 6 | \n",
" 4 | \n",
"
\n",
" \n",
" AS009013 | \n",
" 201804 | \n",
" 0 | \n",
" 2 | \n",
"
\n",
" \n",
" AS009373 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
"
\n",
" \n",
" AS015233 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" TS995853 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
"
\n",
" \n",
" TS998593 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
"
\n",
" \n",
" TS999079 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
"
\n",
" \n",
" TS999231 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
"
\n",
" \n",
" TS999855 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 3 columns
\n",
"
"
],
"text/plain": [
" month wday count\n",
"userid \n",
"AS002855 201903 6 5\n",
"AS008805 201903 6 4\n",
"AS009013 201804 0 2\n",
"AS009373 201903 6 5\n",
"AS015233 201903 6 5\n",
"... ... ... ...\n",
"TS995853 201903 6 5\n",
"TS998593 201903 6 5\n",
"TS999079 201903 6 5\n",
"TS999231 201903 6 5\n",
"TS999855 201903 6 5\n",
"\n",
"[4192 rows x 3 columns]"
]
},
"execution_count": 43,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 매주 방문하는 사람을 찾기 위해 df_logs_weekly 데이터 프레임의 userid 컬럼을 그룹으로 최대값을 계산하세요\n",
"df_logs_weekly_routine = df_logs_weekly.groupby('userid').max()\n",
"df_logs_weekly_routine"
]
},
{
"cell_type": "code",
"execution_count": 44,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" month | \n",
" wday | \n",
" count | \n",
" routine | \n",
"
\n",
" \n",
" userid | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" AS002855 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" AS008805 | \n",
" 201903 | \n",
" 6 | \n",
" 4 | \n",
" 0 | \n",
"
\n",
" \n",
" AS009013 | \n",
" 201804 | \n",
" 0 | \n",
" 2 | \n",
" 0 | \n",
"
\n",
" \n",
" AS009373 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" AS015233 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" TS995853 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" TS998593 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" TS999079 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" TS999231 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
" TS999855 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 4 columns
\n",
"
"
],
"text/plain": [
" month wday count routine\n",
"userid \n",
"AS002855 201903 6 5 0\n",
"AS008805 201903 6 4 0\n",
"AS009013 201804 0 2 0\n",
"AS009373 201903 6 5 0\n",
"AS015233 201903 6 5 0\n",
"... ... ... ... ...\n",
"TS995853 201903 6 5 0\n",
"TS998593 201903 6 5 0\n",
"TS999079 201903 6 5 0\n",
"TS999231 201903 6 5 0\n",
"TS999855 201903 6 5 0\n",
"\n",
"[4192 rows x 4 columns]"
]
},
"execution_count": 44,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs_weekly_routine 데이터 프레임에 0의 값을 가지는 routine 컬럼을 추가하세요.\n",
"df_logs_weekly_routine['routine'] = 0\n",
"df_logs_weekly_routine"
]
},
{
"cell_type": "code",
"execution_count": 45,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" month | \n",
" wday | \n",
" count | \n",
" routine | \n",
"
\n",
" \n",
" userid | \n",
" | \n",
" | \n",
" | \n",
" | \n",
"
\n",
" \n",
" \n",
" \n",
" AS002855 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" AS008805 | \n",
" 201903 | \n",
" 6 | \n",
" 4 | \n",
" 1 | \n",
"
\n",
" \n",
" AS009013 | \n",
" 201804 | \n",
" 0 | \n",
" 2 | \n",
" 0 | \n",
"
\n",
" \n",
" AS009373 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" AS015233 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" TS995853 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" TS998593 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" TS999079 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" TS999231 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
" TS999855 | \n",
" 201903 | \n",
" 6 | \n",
" 5 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 4 columns
\n",
"
"
],
"text/plain": [
" month wday count routine\n",
"userid \n",
"AS002855 201903 6 5 1\n",
"AS008805 201903 6 4 1\n",
"AS009013 201804 0 2 0\n",
"AS009373 201903 6 5 1\n",
"AS015233 201903 6 5 1\n",
"... ... ... ... ...\n",
"TS995853 201903 6 5 1\n",
"TS998593 201903 6 5 1\n",
"TS999079 201903 6 5 1\n",
"TS999231 201903 6 5 1\n",
"TS999855 201903 6 5 1\n",
"\n",
"[4192 rows x 4 columns]"
]
},
"execution_count": 45,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# count 컬럼의 값이 4 이상인 경우 routine 컬럼의 값을 1로 변경하세요\n",
"df_logs_weekly_routine.loc[df_logs_weekly_routine['count'] >= 4, 'routine'] = 1\n",
"df_logs_weekly_routine"
]
},
{
"cell_type": "code",
"execution_count": 46,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" routine | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" AS002855 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" AS008805 | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" AS009013 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" AS009373 | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" AS015233 | \n",
" 1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" TS995853 | \n",
" 1 | \n",
"
\n",
" \n",
" 4188 | \n",
" TS998593 | \n",
" 1 | \n",
"
\n",
" \n",
" 4189 | \n",
" TS999079 | \n",
" 1 | \n",
"
\n",
" \n",
" 4190 | \n",
" TS999231 | \n",
" 1 | \n",
"
\n",
" \n",
" 4191 | \n",
" TS999855 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 2 columns
\n",
"
"
],
"text/plain": [
" userid routine\n",
"0 AS002855 1\n",
"1 AS008805 1\n",
"2 AS009013 0\n",
"3 AS009373 1\n",
"4 AS015233 1\n",
"... ... ...\n",
"4187 TS995853 1\n",
"4188 TS998593 1\n",
"4189 TS999079 1\n",
"4190 TS999231 1\n",
"4191 TS999855 1\n",
"\n",
"[4192 rows x 2 columns]"
]
},
"execution_count": 46,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# df_logs_weekly_routine 컬럼의 인덱스를 초기화하고 userid컬럼과 routine 컬럼만 추출하세요.\n",
"routine = df_logs_weekly_routine.reset_index()[['userid', 'routine']]\n",
"routine"
]
},
{
"cell_type": "code",
"execution_count": 47,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" ... | \n",
" start_month | \n",
" start_day | \n",
" end_year | \n",
" end_month | \n",
" end_day | \n",
" min | \n",
" median | \n",
" mean | \n",
" max | \n",
" sum | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 5.0 | \n",
" 4.833333 | \n",
" 8 | \n",
" 58 | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 5.083333 | \n",
" 7 | \n",
" 61 | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 4.583333 | \n",
" 6 | \n",
" 55 | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 4.5 | \n",
" 4.833333 | \n",
" 7 | \n",
" 58 | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 5 | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 3.5 | \n",
" 3.750000 | \n",
" 5 | \n",
" 45 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK562610 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 12 | \n",
" 13 | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 4.0 | \n",
" 5.666667 | \n",
" 10 | \n",
" 17 | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 12 | \n",
" 13 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 5 | \n",
" 7.5 | \n",
" 7.500000 | \n",
" 10 | \n",
" 30 | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 12 | \n",
" 14 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 6 | \n",
" 7.5 | \n",
" 7.250000 | \n",
" 8 | \n",
" 29 | \n",
"
\n",
" \n",
" 4190 | \n",
" GD082270 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 12 | \n",
" 14 | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 5.0 | \n",
" 6.000000 | \n",
" 10 | \n",
" 18 | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 12 | \n",
" 14 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 8 | \n",
" 9.0 | \n",
" 9.500000 | \n",
" 12 | \n",
" 38 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 21 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 NaT CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 NaT CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 NaT CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 NaT CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 NaT CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4187 IK562610 C02 F 2018-12-13 2019-02-28 CA3 1 \n",
"4188 HI599354 C02 M 2018-12-13 NaT CA3 0 \n",
"4189 GD796859 C02 F 2018-12-14 NaT CA3 0 \n",
"4190 GD082270 C02 F 2018-12-14 2019-02-28 CA3 1 \n",
"4191 OA426023 C02 F 2018-12-14 NaT CA3 0 \n",
"\n",
" class_name price event_name ... start_month start_day end_year \\\n",
"0 all 10000 None ... 5 1 NaN \n",
"1 all 10000 None ... 5 1 NaN \n",
"2 all 10000 None ... 5 1 NaN \n",
"3 all 10000 None ... 5 1 NaN \n",
"4 all 10000 None ... 5 1 NaN \n",
"... ... ... ... ... ... ... ... \n",
"4187 day 7000 Free ... 12 13 2019.0 \n",
"4188 day 7000 Free ... 12 13 NaN \n",
"4189 day 7000 Free ... 12 14 NaN \n",
"4190 day 7000 Free ... 12 14 2019.0 \n",
"4191 day 7000 Free ... 12 14 NaN \n",
"\n",
" end_month end_day min median mean max sum \n",
"0 NaN NaN 2 5.0 4.833333 8 58 \n",
"1 NaN NaN 3 5.0 5.083333 7 61 \n",
"2 NaN NaN 3 5.0 4.583333 6 55 \n",
"3 NaN NaN 2 4.5 4.833333 7 58 \n",
"4 NaN NaN 2 3.5 3.750000 5 45 \n",
"... ... ... ... ... ... ... ... \n",
"4187 2.0 28.0 3 4.0 5.666667 10 17 \n",
"4188 NaN NaN 5 7.5 7.500000 10 30 \n",
"4189 NaN NaN 6 7.5 7.250000 8 29 \n",
"4190 2.0 28.0 3 5.0 6.000000 10 18 \n",
"4191 NaN NaN 8 9.0 9.500000 12 38 \n",
"\n",
"[4192 rows x 21 columns]"
]
},
"execution_count": 47,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user 데이터 프레임과 user_log 데이터 프레임을 userid를 기준으로 병합하세요\n",
"user = pd.merge(user, user_log, on='userid')\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 48,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" ... | \n",
" start_day | \n",
" end_year | \n",
" end_month | \n",
" end_day | \n",
" min | \n",
" median | \n",
" mean | \n",
" max | \n",
" sum | \n",
" routine | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 5.0 | \n",
" 4.833333 | \n",
" 8 | \n",
" 58 | \n",
" 1 | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 5.083333 | \n",
" 7 | \n",
" 61 | \n",
" 1 | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 4.583333 | \n",
" 6 | \n",
" 55 | \n",
" 1 | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 4.5 | \n",
" 4.833333 | \n",
" 7 | \n",
" 58 | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" 1 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 3.5 | \n",
" 3.750000 | \n",
" 5 | \n",
" 45 | \n",
" 1 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK562610 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 13 | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 4.0 | \n",
" 5.666667 | \n",
" 10 | \n",
" 17 | \n",
" 0 | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 13 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 5 | \n",
" 7.5 | \n",
" 7.500000 | \n",
" 10 | \n",
" 30 | \n",
" 1 | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 14 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 6 | \n",
" 7.5 | \n",
" 7.250000 | \n",
" 8 | \n",
" 29 | \n",
" 1 | \n",
"
\n",
" \n",
" 4190 | \n",
" GD082270 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 14 | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 5.0 | \n",
" 6.000000 | \n",
" 10 | \n",
" 18 | \n",
" 0 | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 14 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 8 | \n",
" 9.0 | \n",
" 9.500000 | \n",
" 12 | \n",
" 38 | \n",
" 1 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 22 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 NaT CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 NaT CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 NaT CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 NaT CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 NaT CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4187 IK562610 C02 F 2018-12-13 2019-02-28 CA3 1 \n",
"4188 HI599354 C02 M 2018-12-13 NaT CA3 0 \n",
"4189 GD796859 C02 F 2018-12-14 NaT CA3 0 \n",
"4190 GD082270 C02 F 2018-12-14 2019-02-28 CA3 1 \n",
"4191 OA426023 C02 F 2018-12-14 NaT CA3 0 \n",
"\n",
" class_name price event_name ... start_day end_year end_month \\\n",
"0 all 10000 None ... 1 NaN NaN \n",
"1 all 10000 None ... 1 NaN NaN \n",
"2 all 10000 None ... 1 NaN NaN \n",
"3 all 10000 None ... 1 NaN NaN \n",
"4 all 10000 None ... 1 NaN NaN \n",
"... ... ... ... ... ... ... ... \n",
"4187 day 7000 Free ... 13 2019.0 2.0 \n",
"4188 day 7000 Free ... 13 NaN NaN \n",
"4189 day 7000 Free ... 14 NaN NaN \n",
"4190 day 7000 Free ... 14 2019.0 2.0 \n",
"4191 day 7000 Free ... 14 NaN NaN \n",
"\n",
" end_day min median mean max sum routine \n",
"0 NaN 2 5.0 4.833333 8 58 1 \n",
"1 NaN 3 5.0 5.083333 7 61 1 \n",
"2 NaN 3 5.0 4.583333 6 55 1 \n",
"3 NaN 2 4.5 4.833333 7 58 1 \n",
"4 NaN 2 3.5 3.750000 5 45 1 \n",
"... ... ... ... ... ... ... ... \n",
"4187 28.0 3 4.0 5.666667 10 17 0 \n",
"4188 NaN 5 7.5 7.500000 10 30 1 \n",
"4189 NaN 6 7.5 7.250000 8 29 1 \n",
"4190 28.0 3 5.0 6.000000 10 18 0 \n",
"4191 NaN 8 9.0 9.500000 12 38 1 \n",
"\n",
"[4192 rows x 22 columns]"
]
},
"execution_count": 48,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user 데이터 프레임과 routine 데이터 프레임을 userid를 기준으로 병합하세요\n",
"user = pd.merge(user, routine, on='userid')\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 49,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" ... | \n",
" end_year | \n",
" end_month | \n",
" end_day | \n",
" min | \n",
" median | \n",
" mean | \n",
" max | \n",
" sum | \n",
" routine | \n",
" period | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 5.0 | \n",
" 4.833333 | \n",
" 8 | \n",
" 58 | \n",
" 1 | \n",
" NaT | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 5.083333 | \n",
" 7 | \n",
" 61 | \n",
" 1 | \n",
" NaT | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 4.583333 | \n",
" 6 | \n",
" 55 | \n",
" 1 | \n",
" NaT | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 4.5 | \n",
" 4.833333 | \n",
" 7 | \n",
" 58 | \n",
" 1 | \n",
" NaT | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 3.5 | \n",
" 3.750000 | \n",
" 5 | \n",
" 45 | \n",
" 1 | \n",
" NaT | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK562610 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 4.0 | \n",
" 5.666667 | \n",
" 10 | \n",
" 17 | \n",
" 0 | \n",
" 77 days | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 5 | \n",
" 7.5 | \n",
" 7.500000 | \n",
" 10 | \n",
" 30 | \n",
" 1 | \n",
" NaT | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 6 | \n",
" 7.5 | \n",
" 7.250000 | \n",
" 8 | \n",
" 29 | \n",
" 1 | \n",
" NaT | \n",
"
\n",
" \n",
" 4190 | \n",
" GD082270 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 5.0 | \n",
" 6.000000 | \n",
" 10 | \n",
" 18 | \n",
" 0 | \n",
" 76 days | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 8 | \n",
" 9.0 | \n",
" 9.500000 | \n",
" 12 | \n",
" 38 | \n",
" 1 | \n",
" NaT | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 23 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 NaT CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 NaT CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 NaT CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 NaT CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 NaT CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4187 IK562610 C02 F 2018-12-13 2019-02-28 CA3 1 \n",
"4188 HI599354 C02 M 2018-12-13 NaT CA3 0 \n",
"4189 GD796859 C02 F 2018-12-14 NaT CA3 0 \n",
"4190 GD082270 C02 F 2018-12-14 2019-02-28 CA3 1 \n",
"4191 OA426023 C02 F 2018-12-14 NaT CA3 0 \n",
"\n",
" class_name price event_name ... end_year end_month end_day min \\\n",
"0 all 10000 None ... NaN NaN NaN 2 \n",
"1 all 10000 None ... NaN NaN NaN 3 \n",
"2 all 10000 None ... NaN NaN NaN 3 \n",
"3 all 10000 None ... NaN NaN NaN 2 \n",
"4 all 10000 None ... NaN NaN NaN 2 \n",
"... ... ... ... ... ... ... ... ... \n",
"4187 day 7000 Free ... 2019.0 2.0 28.0 3 \n",
"4188 day 7000 Free ... NaN NaN NaN 5 \n",
"4189 day 7000 Free ... NaN NaN NaN 6 \n",
"4190 day 7000 Free ... 2019.0 2.0 28.0 3 \n",
"4191 day 7000 Free ... NaN NaN NaN 8 \n",
"\n",
" median mean max sum routine period \n",
"0 5.0 4.833333 8 58 1 NaT \n",
"1 5.0 5.083333 7 61 1 NaT \n",
"2 5.0 4.583333 6 55 1 NaT \n",
"3 4.5 4.833333 7 58 1 NaT \n",
"4 3.5 3.750000 5 45 1 NaT \n",
"... ... ... ... ... ... ... \n",
"4187 4.0 5.666667 10 17 0 77 days \n",
"4188 7.5 7.500000 10 30 1 NaT \n",
"4189 7.5 7.250000 8 29 1 NaT \n",
"4190 5.0 6.000000 10 18 0 76 days \n",
"4191 9.0 9.500000 12 38 1 NaT \n",
"\n",
"[4192 rows x 23 columns]"
]
},
"execution_count": 49,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# end_date 컬럼와 start_date 컬럼의 차이를 이용하여 회원 기간을 계산하세요\n",
"user['period'] = user['end_date'] - user['start_date']\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 50,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" ... | \n",
" end_year | \n",
" end_month | \n",
" end_day | \n",
" min | \n",
" median | \n",
" mean | \n",
" max | \n",
" sum | \n",
" routine | \n",
" period | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 5.0 | \n",
" 4.833333 | \n",
" 8 | \n",
" 58 | \n",
" 1 | \n",
" 1460 days | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 5.083333 | \n",
" 7 | \n",
" 61 | \n",
" 1 | \n",
" 1460 days | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 4.583333 | \n",
" 6 | \n",
" 55 | \n",
" 1 | \n",
" 1460 days | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 4.5 | \n",
" 4.833333 | \n",
" 7 | \n",
" 58 | \n",
" 1 | \n",
" 1460 days | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 3.5 | \n",
" 3.750000 | \n",
" 5 | \n",
" 45 | \n",
" 1 | \n",
" 1460 days | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK562610 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 4.0 | \n",
" 5.666667 | \n",
" 10 | \n",
" 17 | \n",
" 0 | \n",
" 77 days | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 5 | \n",
" 7.5 | \n",
" 7.500000 | \n",
" 10 | \n",
" 30 | \n",
" 1 | \n",
" 138 days | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 6 | \n",
" 7.5 | \n",
" 7.250000 | \n",
" 8 | \n",
" 29 | \n",
" 1 | \n",
" 137 days | \n",
"
\n",
" \n",
" 4190 | \n",
" GD082270 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 2019.0 | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 5.0 | \n",
" 6.000000 | \n",
" 10 | \n",
" 18 | \n",
" 0 | \n",
" 76 days | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" 8 | \n",
" 9.0 | \n",
" 9.500000 | \n",
" 12 | \n",
" 38 | \n",
" 1 | \n",
" 137 days | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 23 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 NaT CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 NaT CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 NaT CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 NaT CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 NaT CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4187 IK562610 C02 F 2018-12-13 2019-02-28 CA3 1 \n",
"4188 HI599354 C02 M 2018-12-13 NaT CA3 0 \n",
"4189 GD796859 C02 F 2018-12-14 NaT CA3 0 \n",
"4190 GD082270 C02 F 2018-12-14 2019-02-28 CA3 1 \n",
"4191 OA426023 C02 F 2018-12-14 NaT CA3 0 \n",
"\n",
" class_name price event_name ... end_year end_month end_day min \\\n",
"0 all 10000 None ... NaN NaN NaN 2 \n",
"1 all 10000 None ... NaN NaN NaN 3 \n",
"2 all 10000 None ... NaN NaN NaN 3 \n",
"3 all 10000 None ... NaN NaN NaN 2 \n",
"4 all 10000 None ... NaN NaN NaN 2 \n",
"... ... ... ... ... ... ... ... ... \n",
"4187 day 7000 Free ... 2019.0 2.0 28.0 3 \n",
"4188 day 7000 Free ... NaN NaN NaN 5 \n",
"4189 day 7000 Free ... NaN NaN NaN 6 \n",
"4190 day 7000 Free ... 2019.0 2.0 28.0 3 \n",
"4191 day 7000 Free ... NaN NaN NaN 8 \n",
"\n",
" median mean max sum routine period \n",
"0 5.0 4.833333 8 58 1 1460 days \n",
"1 5.0 5.083333 7 61 1 1460 days \n",
"2 5.0 4.583333 6 55 1 1460 days \n",
"3 4.5 4.833333 7 58 1 1460 days \n",
"4 3.5 3.750000 5 45 1 1460 days \n",
"... ... ... ... ... ... ... \n",
"4187 4.0 5.666667 10 17 0 77 days \n",
"4188 7.5 7.500000 10 30 1 138 days \n",
"4189 7.5 7.250000 8 29 1 137 days \n",
"4190 5.0 6.000000 10 18 0 76 days \n",
"4191 9.0 9.500000 12 38 1 137 days \n",
"\n",
"[4192 rows x 23 columns]"
]
},
"execution_count": 50,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# period 컬럼이 NaT인 경우 아직 탈퇴하지않은 회원으로 2019년04월30일을 기준으로 차이를 계산합니다.\n",
"user.loc[user['period'].isna(), 'period'] = pd.to_datetime(\"20190430\") - user['start_date']\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 51,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" min | \n",
" median | \n",
" mean | \n",
" max | \n",
" sum | \n",
"
\n",
" \n",
" \n",
" \n",
" count | \n",
" 4192.000000 | \n",
" 4192.000000 | \n",
" 4192.000000 | \n",
" 4192.000000 | \n",
" 4192.000000 | \n",
"
\n",
" \n",
" mean | \n",
" 3.041269 | \n",
" 5.250596 | \n",
" 5.333127 | \n",
" 7.823950 | \n",
" 47.096374 | \n",
"
\n",
" \n",
" std | \n",
" 1.951565 | \n",
" 1.874874 | \n",
" 1.777533 | \n",
" 2.168959 | \n",
" 24.218124 | \n",
"
\n",
" \n",
" min | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
" 1.000000 | \n",
"
\n",
" \n",
" 25% | \n",
" 2.000000 | \n",
" 4.000000 | \n",
" 4.250000 | \n",
" 7.000000 | \n",
" 26.000000 | \n",
"
\n",
" \n",
" 50% | \n",
" 3.000000 | \n",
" 5.000000 | \n",
" 5.000000 | \n",
" 8.000000 | \n",
" 53.000000 | \n",
"
\n",
" \n",
" 75% | \n",
" 4.000000 | \n",
" 6.500000 | \n",
" 6.416667 | \n",
" 9.000000 | \n",
" 65.000000 | \n",
"
\n",
" \n",
" max | \n",
" 12.000000 | \n",
" 12.000000 | \n",
" 12.000000 | \n",
" 14.000000 | \n",
" 105.000000 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" min median mean max sum\n",
"count 4192.000000 4192.000000 4192.000000 4192.000000 4192.000000\n",
"mean 3.041269 5.250596 5.333127 7.823950 47.096374\n",
"std 1.951565 1.874874 1.777533 2.168959 24.218124\n",
"min 1.000000 1.000000 1.000000 1.000000 1.000000\n",
"25% 2.000000 4.000000 4.250000 7.000000 26.000000\n",
"50% 3.000000 5.000000 5.000000 8.000000 53.000000\n",
"75% 4.000000 6.500000 6.416667 9.000000 65.000000\n",
"max 12.000000 12.000000 12.000000 14.000000 105.000000"
]
},
"execution_count": 51,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user 데이터 프레임의 min, median, mean, max, sum 컬럼의 기술통계요약정보를 출력하세요.\n",
"user[['min', 'median', 'mean', 'max', 'sum']].describe()"
]
},
{
"cell_type": "code",
"execution_count": 52,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"1 3413\n",
"0 779\n",
"Name: routine, dtype: int64"
]
},
"execution_count": 52,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user 데이터 프레임의 routine 컬럼의 고유값별 개수를 계산하세요\n",
"user['routine'].value_counts()"
]
},
{
"cell_type": "code",
"execution_count": 53,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXcAAAD4CAYAAAAXUaZHAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAXWElEQVR4nO3df4ycd4Hf8ffnHBKcLMTrC9n6bKv2tS6tg0XAqxSO6rR7phdDEI6qRjIKV6fNyf0jdw1Xn4pdpKL7w6ppG9qrQtquMK3vDFm5hjRWcrni+rJCSCQ+HAKOY1wv2OfYDjbHxYENkWHTT/+YJzDsznrGu/PsTr73eUmreeb7fJ95PjNef2b2mV+yTURElOWXFjpARER0X8o9IqJAKfeIiAKl3CMiCpRyj4go0DULHQDgpptu8qpVq6aNv/LKK9xwww3zH2gWkrUeyVqPZK3HfGc9cuTIX9p+W8uVthf8Z/369W7lySefbDnei5K1Hslaj2Stx3xnBb7uGXo1h2UiIgqUco+IKFDKPSKiQCn3iIgCpdwjIgqUco+IKFDKPSKiQCn3iIgCpdwjIgrUEx8/MFertj++IPs9veuOBdlvREQ7eeQeEVGglHtERIFS7hERBUq5R0QUKOUeEVGglHtERIFS7hERBUq5R0QUKOUeEVGgjspd0u9JOibpOUkPS3qzpKWSDko6WZ32N83fIWlc0glJt9cXPyIiWmlb7pKWA/8CGLT9DmARsBnYDhyyvQY4VJ1H0tpq/S3ARuAhSYvqiR8REa10eljmGmCxpGuA64HzwCZgT7V+D3BntbwJGLV92fYpYBy4rWuJIyKiLdluP0m6H9gJvAp82fbdki7ZXtI05yXb/ZIeBJ6yvbca3w08YXv/lMvcCmwFGBgYWD86OjptvxMTE/T19bXNd/Tcy23n1GHd8ht/ttxp1l6QrPVI1nok68yGh4eP2B5sta7tp0JWx9I3AauBS8D/lPTRK23SYmzaPYjtEWAEYHBw0ENDQ9M2Ghsbo9X4VPcs1KdC3j30s+VOs/aCZK1HstYjWWenk8My7wdO2f6+7Z8CXwJ+DbggaRlAdXqxmn8WWNm0/Qoah3EiImKedFLuZ4D3SLpekoANwHHgALClmrMFeLRaPgBslnSdpNXAGuBwd2NHRMSVtD0sY/tpSfuBZ4BJ4Bs0Dqf0Afsk3UvjDuCuav4xSfuA56v599l+rab8ERHRQkffxGT7k8AnpwxfpvEovtX8nTSegI2IiAWQd6hGRBQo5R4RUaCUe0REgVLuEREFSrlHRBQo5R4RUaCUe0REgVLuEREFSrlHRBQo5R4RUaCUe0REgVLuEREFSrlHRBQo5R4RUaCUe0REgdqWu6S3S3q26eeHkj4maamkg5JOVqf9TdvskDQu6YSk2+u9ChERMVXbcrd9wvattm8F1gM/Bh4BtgOHbK8BDlXnkbQW2AzcAmwEHpK0qJ74ERHRytUeltkAfMf2XwCbgD3V+B7gzmp5EzBq+7LtU8A4cFsXskZERIeuttw3Aw9XywO2XwSoTm+uxpcDLzRtc7Yai4iIeSLbnU2UrgXOA7fYviDpku0lTetfst0v6TPA12zvrcZ3A39i+4tTLm8rsBVgYGBg/ejo6LR9TkxM0NfX1zbb0XMvd3Qdum3d8ht/ttxp1l6QrPVI1nok68yGh4eP2B5sta6jL8iufAB4xvaF6vwFSctsvyhpGXCxGj8LrGzabgWNO4VfYHsEGAEYHBz00NDQtB2OjY3Ranyqe7Y/3vm16Kajr/xscdu613jgq69cYXL3nN51x5y27/R27QXJWo9krUcvZb2awzIf4eeHZAAOAFuq5S3Ao03jmyVdJ2k1sAY4PNegERHRuY4euUu6HviHwD9vGt4F7JN0L3AGuAvA9jFJ+4DngUngPtuvdTV1RERcUUflbvvHwC9PGfsBjVfPtJq/E9g553QRETEreYdqRESBUu4REQVKuUdEFCjlHhFRoJR7RESBUu4REQVKuUdEFCjlHhFRoJR7RESBUu4REQVKuUdEFCjlHhFRoJR7RESBUu4REQVKuUdEFCjlHhFRoI7KXdISSfslfVvScUnvlbRU0kFJJ6vT/qb5OySNSzoh6fb64kdERCudPnL/Q+BPbf9d4J3AcWA7cMj2GuBQdR5Ja4HNwC3ARuAhSYu6HTwiImbWttwlvRX4dWA3gO2f2L4EbAL2VNP2AHdWy5uAUduXbZ8CxoHbuhs7IiKuRLavPEG6FRih8YXX7wSOAPcD52wvaZr3ku1+SQ8CT9neW43vBp6wvX/K5W4FtgIMDAysHx0dnbbviYkJ+vr62l6Jo+debjunbgOL4cKr87OvdctvnNP2nd6uvSBZ65Gs9ZjvrMPDw0dsD7Za18kXZF8DvBv4XdtPS/pDqkMwM1CLsWn3ILZHaNxpMDg46KGhoWkbjY2N0Wp8qnu2P952Tt22rZvkgaMdfd/4nJ2+e2hO23d6u/aCZK1Hstajl7J2csz9LHDW9tPV+f00yv6CpGUA1enFpvkrm7ZfAZzvTtyIiOhE23K3/T3gBUlvr4Y20DhEcwDYUo1tAR6tlg8AmyVdJ2k1sAY43NXUERFxRZ0eR/hd4POSrgW+C/xTGncM+yTdC5wB7gKwfUzSPhp3AJPAfbZf63ryiIiYUUflbvtZoNVB+w0zzN8J7Jx9rIiImIu8QzUiokAp94iIAqXcIyIKlHKPiChQyj0iokAp94iIAqXcIyIKlHKPiChQyj0iokAp94iIAqXcIyIKlHKPiChQyj0iokAp94iIAqXcIyIK1FG5Szot6aikZyV9vRpbKumgpJPVaX/T/B2SxiWdkHR7XeEjIqK1q3nkPmz71qZv2t4OHLK9BjhUnUfSWmAzcAuwEXhI0qIuZo6IiDbmclhmE7CnWt4D3Nk0Pmr7su1TwDhw2xz2ExERV0m220+STgEvAQb+m+0RSZdsL2ma85LtfkkPAk/Z3luN7waesL1/ymVuBbYCDAwMrB8dHZ2234mJCfr6+trmO3ru5bZz6jawGC68Oj/7Wrf8xjlt3+nt2guStR7JWo/5zjo8PHyk6WjKL+j0C7LfZ/u8pJuBg5K+fYW5ajE27R7E9ggwAjA4OOihoaFpG42NjdFqfKp7tj/edk7dtq2b5IGjnd6cc3P67qE5bd/p7doLkrUeyVqPXsra0WEZ2+er04vAIzQOs1yQtAygOr1YTT8LrGzafAVwvluBIyKivbblLukGSW95fRn4TeA54ACwpZq2BXi0Wj4AbJZ0naTVwBrgcLeDR0TEzDo5jjAAPCLp9flfsP2nkv4c2CfpXuAMcBeA7WOS9gHPA5PAfbZfqyV9RES01LbcbX8XeGeL8R8AG2bYZiewc87pIiJiVubnGcDoqlVzfAJ527rJWT8JfXrXHXPad0TMj3z8QEREgVLuEREFSrlHRBQo5R4RUaCUe0REgVLuEREFSrlHRBQo5R4RUaCUe0REgVLuEREFSrlHRBQo5R4RUaCUe0REgVLuEREF6rjcJS2S9A1Jj1Xnl0o6KOlkddrfNHeHpHFJJyTdXkfwiIiY2dU8cr8fON50fjtwyPYa4FB1Hklrgc3ALcBG4CFJi7oTNyIiOtFRuUtaAdwBfLZpeBOwp1reA9zZND5q+7LtU8A4jS/UjoiIeSLb7SdJ+4F/C7wF+H3bH5J0yfaSpjkv2e6X9CDwlO291fhu4Anb+6dc5lZgK8DAwMD60dHRafudmJigr6+vbb6j515uO6duA4vhwqsLnaIzc8m6bvmN3Q3TRqe/A70gWeuRrDMbHh4+Ynuw1bq2X7Mn6UPARdtHJA11sD+1GJt2D2J7BBgBGBwc9NDQ9IseGxuj1fhUs/3KuG7atm6SB46+Mb61cC5ZT9891N0wbXT6O9ALkrUeyTo7nfwPfx/wYUkfBN4MvFXSXuCCpGW2X5S0DLhYzT8LrGzafgVwvpuhIyLiytoec7e9w/YK26toPFH6Z7Y/ChwAtlTTtgCPVssHgM2SrpO0GlgDHO568oiImNFcjiPsAvZJuhc4A9wFYPuYpH3A88AkcJ/t1+acNCIiOnZV5W57DBirln8AbJhh3k5g5xyzRUTELOUdqhERBUq5R0QU6I3x2r3oGavm+WWn29ZNcs/2xzm964553W/EG10euUdEFCjlHhFRoJR7RESBUu4REQVKuUdEFCjlHhFRoJR7RESBUu4REQXKm5gi2uj0jVuvv+GqW/LGrZiLPHKPiChQHrlH9Kg6P+qh3V8Z+avhjS+P3CMiCtS23CW9WdJhSd+UdEzSH1TjSyUdlHSyOu1v2maHpHFJJyTdXucViIiI6To5LHMZ+A3bE5LeBHxV0hPAPwIO2d4laTuwHfi4pLU0vo7vFuBXgP8j6e/k25hiLub70yjjr5du/X7N5kn1ug6BdfIdqrY9UZ19U/VjYBOwpxrfA9xZLW8CRm1ftn0KGAdu62boiIi4MtluP0laBBwB/jbwGdsfl3TJ9pKmOS/Z7pf0IPCU7b3V+G7gCdv7p1zmVmArwMDAwPrR0dFp+52YmKCvr69tvqPnXm47p24Di+HCqwudojPJWo+Ssq5bfuP8hWmj0x6Yi251yGx+B+ZyWw8PDx+xPdhqXUevlqkOqdwqaQnwiKR3XGG6Wl1Ei8scAUYABgcHPTQ0NG2jsbExWo1P1c3XFs/WtnWTPHD0jfHio2StR0lZT989NH9h2ui0B+aiWx0ym9+Bum7rq3q1jO1LNL4geyNwQdIygOr0YjXtLLCyabMVwPm5Bo2IiM61vYuR9Dbgp7YvSVoMvB/4FHAA2ALsqk4frTY5AHxB0qdpPKG6BjhcQ/aIKEyrJza7/c7fvy46+fthGbCnOu7+S8A+249J+hqwT9K9wBngLgDbxyTtA54HJoH78kqZiIj51bbcbX8LeFeL8R8AG2bYZiewc87pIiJiVvIO1YiIAqXcIyIKlHKPiChQyj0iokAp94iIAqXcIyIKlHKPiChQyj0iokAp94iIAqXcIyIK9Mb4fNKImFf55qs3vjxyj4goUMo9IqJAKfeIiAKl3CMiCtS23CWtlPSkpOOSjkm6vxpfKumgpJPVaX/TNjskjUs6Ien2Oq9ARERM18kj90lgm+2/B7wHuE/SWmA7cMj2GuBQdZ5q3WbgFhrftfpQ9S1OERExT9qWu+0XbT9TLf8IOA4sBzYBe6ppe4A7q+VNwKjty7ZPAePAbV3OHRERVyDbnU+WVgFfAd4BnLG9pGndS7b7JT0IPGV7bzW+G3jC9v4pl7UV2AowMDCwfnR0dNr+JiYm6Ovra5vr6LmXO74OdRlYDBdeXegUnUnWeiRrPUrPum75jbPe3/Dw8BHbg63WdfwmJkl9wBeBj9n+oaQZp7YYm3YPYnsEGAEYHBz00NDQtI3GxsZoNT5VL3wz+rZ1kzxw9I3xnrBkrUey1qP0rKfvHqolS0evlpH0JhrF/nnbX6qGL0haVq1fBlysxs8CK5s2XwGc707ciIjoRCevlhGwGzhu+9NNqw4AW6rlLcCjTeObJV0naTWwBjjcvcgREdFOJ38/vA/4LeCopGersX8N7AL2SboXOAPcBWD7mKR9wPM0Xmlzn+3Xuh08IiJm1rbcbX+V1sfRATbMsM1OYOccckVExBzkHaoREQVKuUdEFCjlHhFRoJR7RESBUu4REQVKuUdEFCjlHhFRoJR7RESBUu4REQVKuUdEFCjlHhFRoJR7RESBUu4REQVKuUdEFCjlHhFRoE6+ielzki5Keq5pbKmkg5JOVqf9Tet2SBqXdELS7XUFj4iImXXyyP1/ABunjG0HDtleAxyqziNpLbAZuKXa5iFJi7qWNiIiOtK23G1/BfirKcObgD3V8h7gzqbxUduXbZ8CxoHbuhM1IiI6Ndtj7gO2XwSoTm+uxpcDLzTNO1uNRUTEPJLt9pOkVcBjtt9Rnb9ke0nT+pds90v6DPA123ur8d3An9j+YovL3ApsBRgYGFg/Ojo6bb8TExP09fW1zXf03Mtt59RtYDFceHWhU3QmWeuRrPUoPeu65TfOen/Dw8NHbA+2Wtf2C7JncEHSMtsvSloGXKzGzwIrm+atAM63ugDbI8AIwODgoIeGhqbNGRsbo9X4VPdsf/xqstdi27pJHjg625tzfiVrPZK1HqVnPX33UC1ZZntY5gCwpVreAjzaNL5Z0nWSVgNrgMNzixgREVer7V2MpIeBIeAmSWeBTwK7gH2S7gXOAHcB2D4maR/wPDAJ3Gf7tZqyR0TEDNqWu+2PzLBqwwzzdwI75xIqIiLmJu9QjYgoUMo9IqJAKfeIiAKl3CMiCpRyj4goUMo9IqJAKfeIiAKl3CMiCpRyj4goUMo9IqJAKfeIiAKl3CMiCpRyj4goUMo9IqJAKfeIiAKl3CMiClRbuUvaKOmEpHFJ2+vaT0RETFdLuUtaBHwG+ACwFviIpLV17CsiIqar65H7bcC47e/a/gkwCmyqaV8RETGFbHf/QqV/DGy0/dvV+d8C/r7t32masxXYWp19O3CixUXdBPxl1wPWI1nrkaz1SNZ6zHfWv2n7ba1WtP2C7FlSi7FfuBexPQKMXPFCpK/bHuxmsLokaz2StR7JWo9eylrXYZmzwMqm8yuA8zXtKyIipqir3P8cWCNptaRrgc3AgZr2FRERU9RyWMb2pKTfAf43sAj4nO1js7ioKx626THJWo9krUey1qNnstbyhGpERCysvEM1IqJAKfeIiAL1bLn30scXSFop6UlJxyUdk3R/Nb5U0kFJJ6vT/qZtdlTZT0i6fQEyL5L0DUmP9XJWSUsk7Zf07er2fW8PZ/296t//OUkPS3pzr2SV9DlJFyU91zR21dkkrZd0tFr3nyW1ellzHVn/ffU78C1Jj0ha0qtZm9b9viRLuqkXsk5ju+d+aDwJ+x3gV4FrgW8CaxcwzzLg3dXyW4D/S+NjFf4dsL0a3w58qlpeW2W+DlhdXZdF85z5XwJfAB6rzvdkVmAP8NvV8rXAkl7MCiwHTgGLq/P7gHt6JSvw68C7geeaxq46G3AYeC+N96o8AXxgnrL+JnBNtfypXs5aja+k8YKRvwBu6oWsU3969ZF7T318ge0XbT9TLf8IOE7jP/smGuVEdXpntbwJGLV92fYpYJzGdZoXklYAdwCfbRruuayS3krjP89uANs/sX2pF7NWrgEWS7oGuJ7Gezd6IqvtrwB/NWX4qrJJWga81fbX3GikP2raptastr9se7I6+xSN98b0ZNbKfwT+Fb/45swFzTpVr5b7cuCFpvNnq7EFJ2kV8C7gaWDA9ovQuAMAbq6mLXT+/0TjF+//NY31YtZfBb4P/PfqENJnJd3Qi1ltnwP+A3AGeBF42faXezFrk6vNtrxanjo+3/4ZjUe30INZJX0YOGf7m1NW9VTWXi33th9fsBAk9QFfBD5m+4dXmtpibF7yS/oQcNH2kU43aTE2X7f1NTT+5P0vtt8FvELj8MFMFvJ27afxyGw18CvADZI+eqVNWowt+O9wZaZsC55Z0ieASeDzrw+1mLZgWSVdD3wC+DetVrcYW7CsvVruPffxBZLeRKPYP2/7S9XwhepPLqrTi9X4QuZ/H/BhSadpHM76DUl7ezTrWeCs7aer8/tplH0vZn0/cMr2923/FPgS8Gs9mvV1V5vtLD8/HNI8Pi8kbQE+BNxdHb6A3sv6t2jcwX+z+j+2AnhG0t/otay9Wu499fEF1TPbu4Hjtj/dtOoAsKVa3gI82jS+WdJ1klYDa2g8oVI72ztsr7C9isbt9me2P9qjWb8HvCDp7dXQBuD5XsxK43DMeyRdX/0+bKDx3EsvZn3dVWWrDt38SNJ7quv4T5q2qZWkjcDHgQ/b/vGU69AzWW0ftX2z7VXV/7GzNF5s8b1ey1r7qwxm+wN8kMarUr4DfGKBs/wDGn9GfQt4tvr5IPDLwCHgZHW6tGmbT1TZTzAPz4zPkHuIn79apiezArcCX69u2/8F9Pdw1j8Avg08B/wxjVdF9ERW4GEazwX8lEbh3DubbMBgdf2+AzxI9S72ecg6TuN49ev/v/5rr2adsv401atlFjrr1J98/EBERIF69bBMRETMQco9IqJAKfeIiAKl3CMiCpRyj4goUMo9IqJAKfeIiAL9fx+OjyVQSZm4AAAAAElFTkSuQmCC\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user 데이터 프레임의 period_day 컬럼의 histogram을 그려보세요.\n",
"user['period_day'] = user['period'].dt.days\n",
"user['period_day'].hist()\n",
"plt.show()"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# ML (Classification)"
]
},
{
"cell_type": "code",
"execution_count": 54,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" userid | \n",
" class | \n",
" gender | \n",
" start_date | \n",
" end_date | \n",
" event_type | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" ... | \n",
" end_month | \n",
" end_day | \n",
" min | \n",
" median | \n",
" mean | \n",
" max | \n",
" sum | \n",
" routine | \n",
" period | \n",
" period_day | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" OA832399 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 5.0 | \n",
" 4.833333 | \n",
" 8 | \n",
" 58 | \n",
" 1 | \n",
" 1460 days | \n",
" 1460 | \n",
"
\n",
" \n",
" 1 | \n",
" PL270116 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 5.083333 | \n",
" 7 | \n",
" 61 | \n",
" 1 | \n",
" 1460 days | \n",
" 1460 | \n",
"
\n",
" \n",
" 2 | \n",
" OA974876 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 3 | \n",
" 5.0 | \n",
" 4.583333 | \n",
" 6 | \n",
" 55 | \n",
" 1 | \n",
" 1460 days | \n",
" 1460 | \n",
"
\n",
" \n",
" 3 | \n",
" HD024127 | \n",
" C01 | \n",
" F | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 4.5 | \n",
" 4.833333 | \n",
" 7 | \n",
" 58 | \n",
" 1 | \n",
" 1460 days | \n",
" 1460 | \n",
"
\n",
" \n",
" 4 | \n",
" IK271057 | \n",
" C01 | \n",
" M | \n",
" 2015-05-01 | \n",
" NaT | \n",
" CA1 | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 2 | \n",
" 3.5 | \n",
" 3.750000 | \n",
" 5 | \n",
" 45 | \n",
" 1 | \n",
" 1460 days | \n",
" 1460 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" IK562610 | \n",
" C02 | \n",
" F | \n",
" 2018-12-13 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 4.0 | \n",
" 5.666667 | \n",
" 10 | \n",
" 17 | \n",
" 0 | \n",
" 77 days | \n",
" 77 | \n",
"
\n",
" \n",
" 4188 | \n",
" HI599354 | \n",
" C02 | \n",
" M | \n",
" 2018-12-13 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 5 | \n",
" 7.5 | \n",
" 7.500000 | \n",
" 10 | \n",
" 30 | \n",
" 1 | \n",
" 138 days | \n",
" 138 | \n",
"
\n",
" \n",
" 4189 | \n",
" GD796859 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 6 | \n",
" 7.5 | \n",
" 7.250000 | \n",
" 8 | \n",
" 29 | \n",
" 1 | \n",
" 137 days | \n",
" 137 | \n",
"
\n",
" \n",
" 4190 | \n",
" GD082270 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" 2019-02-28 | \n",
" CA3 | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" 2.0 | \n",
" 28.0 | \n",
" 3 | \n",
" 5.0 | \n",
" 6.000000 | \n",
" 10 | \n",
" 18 | \n",
" 0 | \n",
" 76 days | \n",
" 76 | \n",
"
\n",
" \n",
" 4191 | \n",
" OA426023 | \n",
" C02 | \n",
" F | \n",
" 2018-12-14 | \n",
" NaT | \n",
" CA3 | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" ... | \n",
" NaN | \n",
" NaN | \n",
" 8 | \n",
" 9.0 | \n",
" 9.500000 | \n",
" 12 | \n",
" 38 | \n",
" 1 | \n",
" 137 days | \n",
" 137 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 24 columns
\n",
"
"
],
"text/plain": [
" userid class gender start_date end_date event_type is_deleted \\\n",
"0 OA832399 C01 F 2015-05-01 NaT CA1 0 \n",
"1 PL270116 C01 M 2015-05-01 NaT CA1 0 \n",
"2 OA974876 C01 M 2015-05-01 NaT CA1 0 \n",
"3 HD024127 C01 F 2015-05-01 NaT CA1 -1 \n",
"4 IK271057 C01 M 2015-05-01 NaT CA1 0 \n",
"... ... ... ... ... ... ... ... \n",
"4187 IK562610 C02 F 2018-12-13 2019-02-28 CA3 1 \n",
"4188 HI599354 C02 M 2018-12-13 NaT CA3 0 \n",
"4189 GD796859 C02 F 2018-12-14 NaT CA3 0 \n",
"4190 GD082270 C02 F 2018-12-14 2019-02-28 CA3 1 \n",
"4191 OA426023 C02 F 2018-12-14 NaT CA3 0 \n",
"\n",
" class_name price event_name ... end_month end_day min median \\\n",
"0 all 10000 None ... NaN NaN 2 5.0 \n",
"1 all 10000 None ... NaN NaN 3 5.0 \n",
"2 all 10000 None ... NaN NaN 3 5.0 \n",
"3 all 10000 None ... NaN NaN 2 4.5 \n",
"4 all 10000 None ... NaN NaN 2 3.5 \n",
"... ... ... ... ... ... ... ... ... \n",
"4187 day 7000 Free ... 2.0 28.0 3 4.0 \n",
"4188 day 7000 Free ... NaN NaN 5 7.5 \n",
"4189 day 7000 Free ... NaN NaN 6 7.5 \n",
"4190 day 7000 Free ... 2.0 28.0 3 5.0 \n",
"4191 day 7000 Free ... NaN NaN 8 9.0 \n",
"\n",
" mean max sum routine period period_day \n",
"0 4.833333 8 58 1 1460 days 1460 \n",
"1 5.083333 7 61 1 1460 days 1460 \n",
"2 4.583333 6 55 1 1460 days 1460 \n",
"3 4.833333 7 58 1 1460 days 1460 \n",
"4 3.750000 5 45 1 1460 days 1460 \n",
"... ... ... ... ... ... ... \n",
"4187 5.666667 10 17 0 77 days 77 \n",
"4188 7.500000 10 30 1 138 days 138 \n",
"4189 7.250000 8 29 1 137 days 137 \n",
"4190 6.000000 10 18 0 76 days 76 \n",
"4191 9.500000 12 38 1 137 days 137 \n",
"\n",
"[4192 rows x 24 columns]"
]
},
"execution_count": 54,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user 데이터 프레임을 조회하세요.\n",
"user"
]
},
{
"cell_type": "code",
"execution_count": 55,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" gender | \n",
" is_deleted | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" min | \n",
" max | \n",
" median | \n",
" max | \n",
" sum | \n",
" routine | \n",
" period_day | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" F | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2 | \n",
" 8 | \n",
" 5.0 | \n",
" 8 | \n",
" 58 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" 1 | \n",
" M | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 3 | \n",
" 7 | \n",
" 5.0 | \n",
" 7 | \n",
" 61 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" 2 | \n",
" M | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 3 | \n",
" 6 | \n",
" 5.0 | \n",
" 6 | \n",
" 55 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" 3 | \n",
" F | \n",
" -1 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2 | \n",
" 7 | \n",
" 4.5 | \n",
" 7 | \n",
" 58 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" 4 | \n",
" M | \n",
" 0 | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2 | \n",
" 5 | \n",
" 3.5 | \n",
" 5 | \n",
" 45 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" F | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 3 | \n",
" 10 | \n",
" 4.0 | \n",
" 10 | \n",
" 17 | \n",
" 0 | \n",
" 77 | \n",
"
\n",
" \n",
" 4188 | \n",
" M | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 5 | \n",
" 10 | \n",
" 7.5 | \n",
" 10 | \n",
" 30 | \n",
" 1 | \n",
" 138 | \n",
"
\n",
" \n",
" 4189 | \n",
" F | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 6 | \n",
" 8 | \n",
" 7.5 | \n",
" 8 | \n",
" 29 | \n",
" 1 | \n",
" 137 | \n",
"
\n",
" \n",
" 4190 | \n",
" F | \n",
" 1 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 3 | \n",
" 10 | \n",
" 5.0 | \n",
" 10 | \n",
" 18 | \n",
" 0 | \n",
" 76 | \n",
"
\n",
" \n",
" 4191 | \n",
" F | \n",
" 0 | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 8 | \n",
" 12 | \n",
" 9.0 | \n",
" 12 | \n",
" 38 | \n",
" 1 | \n",
" 137 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 12 columns
\n",
"
"
],
"text/plain": [
" gender is_deleted class_name price event_name min max median max \\\n",
"0 F 0 all 10000 None 2 8 5.0 8 \n",
"1 M 0 all 10000 None 3 7 5.0 7 \n",
"2 M 0 all 10000 None 3 6 5.0 6 \n",
"3 F -1 all 10000 None 2 7 4.5 7 \n",
"4 M 0 all 10000 None 2 5 3.5 5 \n",
"... ... ... ... ... ... ... ... ... ... \n",
"4187 F 1 day 7000 Free 3 10 4.0 10 \n",
"4188 M 0 day 7000 Free 5 10 7.5 10 \n",
"4189 F 0 day 7000 Free 6 8 7.5 8 \n",
"4190 F 1 day 7000 Free 3 10 5.0 10 \n",
"4191 F 0 day 7000 Free 8 12 9.0 12 \n",
"\n",
" sum routine period_day \n",
"0 58 1 1460 \n",
"1 61 1 1460 \n",
"2 55 1 1460 \n",
"3 58 1 1460 \n",
"4 45 1 1460 \n",
"... ... ... ... \n",
"4187 17 0 77 \n",
"4188 30 1 138 \n",
"4189 29 1 137 \n",
"4190 18 0 76 \n",
"4191 38 1 137 \n",
"\n",
"[4192 rows x 12 columns]"
]
},
"execution_count": 55,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# user 데이터 프레임에서 다음의 결과와 같이 컬럼을 선택 후 df 변수에 저장하세요.\n",
"df = user[['gender', 'is_deleted', 'class_name', 'price', 'event_name', 'min', 'max', 'median', 'max', 'sum', 'routine', 'period_day']]\n",
"df"
]
},
{
"cell_type": "code",
"execution_count": 56,
"metadata": {},
"outputs": [],
"source": [
"# 코드를 입력해 주세요\n",
"# df에서 is_deleted 컬럼을 Y로 나머지를 X로 설정하세요\n",
"X = df.loc[:, df.columns != 'is_deleted']\n",
"Y = df['is_deleted']"
]
},
{
"cell_type": "code",
"execution_count": 57,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" gender | \n",
" class_name | \n",
" price | \n",
" event_name | \n",
" min | \n",
" max | \n",
" median | \n",
" max | \n",
" sum | \n",
" routine | \n",
" period_day | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" F | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2 | \n",
" 8 | \n",
" 5.0 | \n",
" 8 | \n",
" 58 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" 1 | \n",
" M | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 3 | \n",
" 7 | \n",
" 5.0 | \n",
" 7 | \n",
" 61 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" 2 | \n",
" M | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 3 | \n",
" 6 | \n",
" 5.0 | \n",
" 6 | \n",
" 55 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" 3 | \n",
" F | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2 | \n",
" 7 | \n",
" 4.5 | \n",
" 7 | \n",
" 58 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" 4 | \n",
" M | \n",
" all | \n",
" 10000 | \n",
" None | \n",
" 2 | \n",
" 5 | \n",
" 3.5 | \n",
" 5 | \n",
" 45 | \n",
" 1 | \n",
" 1460 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" F | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 3 | \n",
" 10 | \n",
" 4.0 | \n",
" 10 | \n",
" 17 | \n",
" 0 | \n",
" 77 | \n",
"
\n",
" \n",
" 4188 | \n",
" M | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 5 | \n",
" 10 | \n",
" 7.5 | \n",
" 10 | \n",
" 30 | \n",
" 1 | \n",
" 138 | \n",
"
\n",
" \n",
" 4189 | \n",
" F | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 6 | \n",
" 8 | \n",
" 7.5 | \n",
" 8 | \n",
" 29 | \n",
" 1 | \n",
" 137 | \n",
"
\n",
" \n",
" 4190 | \n",
" F | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 3 | \n",
" 10 | \n",
" 5.0 | \n",
" 10 | \n",
" 18 | \n",
" 0 | \n",
" 76 | \n",
"
\n",
" \n",
" 4191 | \n",
" F | \n",
" day | \n",
" 7000 | \n",
" Free | \n",
" 8 | \n",
" 12 | \n",
" 9.0 | \n",
" 12 | \n",
" 38 | \n",
" 1 | \n",
" 137 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 11 columns
\n",
"
"
],
"text/plain": [
" gender class_name price event_name min max median max sum routine \\\n",
"0 F all 10000 None 2 8 5.0 8 58 1 \n",
"1 M all 10000 None 3 7 5.0 7 61 1 \n",
"2 M all 10000 None 3 6 5.0 6 55 1 \n",
"3 F all 10000 None 2 7 4.5 7 58 1 \n",
"4 M all 10000 None 2 5 3.5 5 45 1 \n",
"... ... ... ... ... ... ... ... ... ... ... \n",
"4187 F day 7000 Free 3 10 4.0 10 17 0 \n",
"4188 M day 7000 Free 5 10 7.5 10 30 1 \n",
"4189 F day 7000 Free 6 8 7.5 8 29 1 \n",
"4190 F day 7000 Free 3 10 5.0 10 18 0 \n",
"4191 F day 7000 Free 8 12 9.0 12 38 1 \n",
"\n",
" period_day \n",
"0 1460 \n",
"1 1460 \n",
"2 1460 \n",
"3 1460 \n",
"4 1460 \n",
"... ... \n",
"4187 77 \n",
"4188 138 \n",
"4189 137 \n",
"4190 76 \n",
"4191 137 \n",
"\n",
"[4192 rows x 11 columns]"
]
},
"execution_count": 57,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# X를 출력하세요.\n",
"X"
]
},
{
"cell_type": "code",
"execution_count": 58,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"0 0\n",
"1 0\n",
"2 0\n",
"3 -1\n",
"4 0\n",
" ..\n",
"4187 1\n",
"4188 0\n",
"4189 0\n",
"4190 1\n",
"4191 0\n",
"Name: is_deleted, Length: 4192, dtype: int64"
]
},
"execution_count": 58,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# Y를 출력하세요.\n",
"Y"
]
},
{
"cell_type": "code",
"execution_count": 59,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" price | \n",
" min | \n",
" max | \n",
" median | \n",
" max | \n",
" sum | \n",
" routine | \n",
" period_day | \n",
" gender_F | \n",
" gender_M | \n",
" class_name_all | \n",
" class_name_day | \n",
" class_name_night | \n",
" event_name_Free | \n",
" event_name_None | \n",
" event_name_Sale | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 10000 | \n",
" 2 | \n",
" 8 | \n",
" 5.0 | \n",
" 8 | \n",
" 58 | \n",
" 1 | \n",
" 1460 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 10000 | \n",
" 3 | \n",
" 7 | \n",
" 5.0 | \n",
" 7 | \n",
" 61 | \n",
" 1 | \n",
" 1460 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 2 | \n",
" 10000 | \n",
" 3 | \n",
" 6 | \n",
" 5.0 | \n",
" 6 | \n",
" 55 | \n",
" 1 | \n",
" 1460 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 3 | \n",
" 10000 | \n",
" 2 | \n",
" 7 | \n",
" 4.5 | \n",
" 7 | \n",
" 58 | \n",
" 1 | \n",
" 1460 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" 4 | \n",
" 10000 | \n",
" 2 | \n",
" 5 | \n",
" 3.5 | \n",
" 5 | \n",
" 45 | \n",
" 1 | \n",
" 1460 | \n",
" 0 | \n",
" 1 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 4187 | \n",
" 7000 | \n",
" 3 | \n",
" 10 | \n",
" 4.0 | \n",
" 10 | \n",
" 17 | \n",
" 0 | \n",
" 77 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 4188 | \n",
" 7000 | \n",
" 5 | \n",
" 10 | \n",
" 7.5 | \n",
" 10 | \n",
" 30 | \n",
" 1 | \n",
" 138 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 4189 | \n",
" 7000 | \n",
" 6 | \n",
" 8 | \n",
" 7.5 | \n",
" 8 | \n",
" 29 | \n",
" 1 | \n",
" 137 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 4190 | \n",
" 7000 | \n",
" 3 | \n",
" 10 | \n",
" 5.0 | \n",
" 10 | \n",
" 18 | \n",
" 0 | \n",
" 76 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
" 4191 | \n",
" 7000 | \n",
" 8 | \n",
" 12 | \n",
" 9.0 | \n",
" 12 | \n",
" 38 | \n",
" 1 | \n",
" 137 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 1 | \n",
" 0 | \n",
" 0 | \n",
"
\n",
" \n",
"
\n",
"
4192 rows × 16 columns
\n",
"
"
],
"text/plain": [
" price min max median max sum routine period_day gender_F \\\n",
"0 10000 2 8 5.0 8 58 1 1460 1 \n",
"1 10000 3 7 5.0 7 61 1 1460 0 \n",
"2 10000 3 6 5.0 6 55 1 1460 0 \n",
"3 10000 2 7 4.5 7 58 1 1460 1 \n",
"4 10000 2 5 3.5 5 45 1 1460 0 \n",
"... ... ... ... ... ... ... ... ... ... \n",
"4187 7000 3 10 4.0 10 17 0 77 1 \n",
"4188 7000 5 10 7.5 10 30 1 138 0 \n",
"4189 7000 6 8 7.5 8 29 1 137 1 \n",
"4190 7000 3 10 5.0 10 18 0 76 1 \n",
"4191 7000 8 12 9.0 12 38 1 137 1 \n",
"\n",
" gender_M class_name_all class_name_day class_name_night \\\n",
"0 0 1 0 0 \n",
"1 1 1 0 0 \n",
"2 1 1 0 0 \n",
"3 0 1 0 0 \n",
"4 1 1 0 0 \n",
"... ... ... ... ... \n",
"4187 0 0 1 0 \n",
"4188 1 0 1 0 \n",
"4189 0 0 1 0 \n",
"4190 0 0 1 0 \n",
"4191 0 0 1 0 \n",
"\n",
" event_name_Free event_name_None event_name_Sale \n",
"0 0 1 0 \n",
"1 0 1 0 \n",
"2 0 1 0 \n",
"3 0 1 0 \n",
"4 0 1 0 \n",
"... ... ... ... \n",
"4187 1 0 0 \n",
"4188 1 0 0 \n",
"4189 1 0 0 \n",
"4190 1 0 0 \n",
"4191 1 0 0 \n",
"\n",
"[4192 rows x 16 columns]"
]
},
"execution_count": 59,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# X를 One Hot 변환하세요\n",
"X = pd.get_dummies(X)\n",
"X"
]
},
{
"cell_type": "code",
"execution_count": 60,
"metadata": {},
"outputs": [],
"source": [
"# 코드를 입력해 주세요\n",
"# X와 Y를 Train 과 Test로 분할하세요.\n",
"from sklearn.model_selection import train_test_split\n",
"x_train, x_test, y_train, y_test = train_test_split(X, Y, stratify=Y, random_state=0)"
]
},
{
"cell_type": "code",
"execution_count": 61,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.8110687022900763, 0.6688931297709924)"
]
},
"execution_count": 61,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# KNN 알고리즘을 이용하여 분류하세요.\n",
"from sklearn.neighbors import KNeighborsClassifier\n",
"model = KNeighborsClassifier(n_neighbors=3).fit(x_train, y_train)\n",
"model.score(x_train, y_train), model.score(x_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 62,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.7232824427480916, 0.7146946564885496)"
]
},
"execution_count": 62,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# LogisticRegression 알고리즘을 이용하여 분류하세요.\n",
"from sklearn.linear_model import LogisticRegression\n",
"model = LogisticRegression(max_iter=10000).fit(x_train, y_train)\n",
"model.score(x_train, y_train), model.score(x_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 63,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"(0.7487277353689568, 0.7309160305343512)"
]
},
"execution_count": 63,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# DecisionTree 알고리즘을 이용하여 분류하세요.\n",
"from sklearn.tree import DecisionTreeClassifier\n",
"model = DecisionTreeClassifier(max_depth=5).fit(x_train, y_train)\n",
"model.score(x_train, y_train), model.score(x_test, y_test)"
]
},
{
"cell_type": "code",
"execution_count": 64,
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"price 0.004176\n",
"min 0.021206\n",
"max 0.005352\n",
"median 0.341665\n",
"max 0.009488\n",
"sum 0.548655\n",
"routine 0.000000\n",
"period_day 0.067465\n",
"gender_F 0.000000\n",
"gender_M 0.000000\n",
"class_name_all 0.000000\n",
"class_name_day 0.000000\n",
"class_name_night 0.000000\n",
"event_name_Free 0.000000\n",
"event_name_None 0.000000\n",
"event_name_Sale 0.001994\n",
"dtype: float64"
]
},
"execution_count": 64,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# feature_importances_를 Series로 변환하세요.\n",
"fi = pd.Series(model.feature_importances_, index=X.columns)\n",
"fi"
]
},
{
"cell_type": "code",
"execution_count": 66,
"metadata": {},
"outputs": [
{
"data": {
"image/png": "iVBORw0KGgoAAAANSUhEUgAAAXQAAAFLCAYAAADGT3crAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAAprUlEQVR4nO3deZykZXnu8d/lIAEX3BjjwiqyiAoGR0DDiXsOuKGCCqIILhxiEBKziKgh4gbmGDUsIiqIW0BEARGCSgQXXGbYF0HngITRqGgUcEEYuc4fz1szNU3NdNW70DVvX9/Ppz90VVff9Qzdfddb93M/zyPbRETE2u9ecz2AiIhoRxJ6RERPJKFHRPREEnpERE8koUdE9EQSekRET6wzV0+84YYberPNNpurp4+IWCtdfPHFv7C9cNTX5iyhb7bZZixZsmSunj4iYq0k6cbVfS0ll4iInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiTlbWDTKZod+aezH/ujI53Y4koiItU+u0CMieiIJPSKiJ5LQIyJ6Igk9IqInktAjInoiCT0ioieS0CMieiIJPSKiJ5LQIyJ6Igk9IqInktAjInoiCT0ioieS0CMieiIJPSKiJ8ZK6JJ2lXSdpKWSDh3x9adJukXSZdXHP7U/1IiIWJNZ90OXtAA4Fng2sAxYLOks29fMeOg3bD+vgzFGRMQYxrlC3xFYavt623cApwC7dzusiIiY1DgJ/ZHATUO3l1X3zfRkSZdLOlfSY0cFknSApCWSltx88801hhsREaszTkLXiPs84/YlwKa2tweOBs4YFcj2CbYX2V60cOHCiQYaERFrNk5CXwZsPHR7I+Anww+wfavt31SfnwPcW9KGrY0yIiJmNU5CXwxsKWlzSesCewFnDT9A0sMkqfp8xyruL9sebERErN6sXS62l0s6CDgPWACcaPtqSQdWXz8e2BP4K0nLgd8De9meWZaJiIgOzZrQYUUZ5ZwZ9x0/9PkxwDHtDi0iIiaRlaIRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9MVZCl7SrpOskLZV06Boe9yRJf5S0Z3tDjIiIccya0CUtAI4FdgO2BfaWtO1qHncUcF7bg4yIiNmNc4W+I7DU9vW27wBOAXYf8bg3AKcDP29xfBERMaZxEvojgZuGbi+r7ltB0iOBFwHHrymQpAMkLZG05Oabb550rBERsQbjJHSNuM8zbn8AeJPtP64pkO0TbC+yvWjhwoVjDjEiIsaxzhiPWQZsPHR7I+AnMx6zCDhFEsCGwHMkLbd9RhuDjIiI2Y2T0BcDW0raHPgxsBfw8uEH2N588LmkjwNnJ5lHRNyzZk3otpdLOojSvbIAONH21ZIOrL6+xrp5RETcM8a5Qsf2OcA5M+4bmcht79d8WBERMamsFI2I6Ikk9IiInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiST0iIieGOuAi7XZZod+aezH/ujI53Y4koiIbuUKPSKiJ5LQIyJ6Igk9IqInktAjInoiCT0ioieS0CMieiIJPSKiJ5LQIyJ6Igk9IqInktAjInoiCT0ioifGSuiSdpV0naSlkg4d8fXdJV0h6TJJSyTt0v5QIyJiTWbdnEvSAuBY4NnAMmCxpLNsXzP0sPOBs2xb0nbAZ4FtuhhwRESMNs4V+o7AUtvX274DOAXYffgBtn9j29XN+wImIiLuUeMk9EcCNw3dXlbdtwpJL5J0LfAl4NXtDC8iIsY1TkLXiPvudgVu+wu2twFeCLxjZCDpgKrGvuTmm2+eaKAREbFm4yT0ZcDGQ7c3An6yugfb/jqwhaQNR3ztBNuLbC9auHDhxIONiIjVGyehLwa2lLS5pHWBvYCzhh8g6dGSVH2+A7Au8Mu2BxsREas3a5eL7eWSDgLOAxYAJ9q+WtKB1dePB/YA9pV0J/B74GVDk6QREXEPGOtMUdvnAOfMuO/4oc+PAo5qd2gRETGJrBSNiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joibESuqRdJV0naamkQ0d8fR9JV1QfF0navv2hRkTEmsya0CUtAI4FdgO2BfaWtO2Mh90APNX2dsA7gBPaHmhERKzZOFfoOwJLbV9v+w7gFGD34QfYvsj2r6qb3wE2aneYERExm3ES+iOBm4ZuL6vuW53XAOc2GVRERExunTEeoxH3eeQDpadTEvouq/n6AcABAJtsssmYQ4yIiHGMc4W+DNh46PZGwE9mPkjSdsBHgd1t/3JUINsn2F5ke9HChQvrjDciIlZjnIS+GNhS0uaS1gX2As4afoCkTYDPA6+0/YP2hxkREbOZteRie7mkg4DzgAXAibavlnRg9fXjgX8CHgIcJwlgue1F3Q07IiJmGqeGju1zgHNm3Hf80OevBV7b7tAiImISWSkaEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE2MldEm7SrpO0lJJh474+jaSvi3pD5L+vv1hRkTEbNaZ7QGSFgDHAs8GlgGLJZ1l+5qhh/0PcDDwwi4GGRERsxvnCn1HYKnt623fAZwC7D78ANs/t70YuLODMUZExBjGSeiPBG4aur2sum9ikg6QtETSkptvvrlOiIiIWI1xErpG3Oc6T2b7BNuLbC9auHBhnRAREbEa4yT0ZcDGQ7c3An7SzXAiIqKucRL6YmBLSZtLWhfYCzir22FFRMSkZu1ysb1c0kHAecAC4ETbV0s6sPr68ZIeBiwBNgDukvQ3wLa2b+1u6BERMWzWhA5g+xzgnBn3HT/0+U8ppZiIiJgjWSkaEdETSegRET2RhB4R0RNJ6BERPZGEHhHRE0noERE9kYQeEdETY/Whx6o2O/RLYz/2R0c+t8ORRESslCv0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6Ikk9IiInkhCj4joiST0iIieSEKPiOiJJPSIiJ5IQo+I6IkccDElcmhGRDSVK/SIiJ5IQo+I6Ikk9IiInkhCj4joibEmRSXtCnwQWAB81PaRM76u6uvPAX4H7Gf7kpbHGhPKRGvE/DJrQpe0ADgWeDawDFgs6Szb1ww9bDdgy+pjJ+BD1X+jZ/IiETG9xrlC3xFYavt6AEmnALsDwwl9d+ATtg18R9IDJT3c9n+3PuLonXFfJCZ5gegiZsS0U8nBa3iAtCewq+3XVrdfCexk+6Chx5wNHGn7m9Xt84E32V4yI9YBwAHVza2B68Yc54bAL8Z87LjWhphrwxgTMzET856NuanthaO+MM4VukbcN/NVYJzHYPsE4IQxnnPV4NIS24sm/b61PebaMMbETMzEnJ6Y43S5LAM2Hrq9EfCTGo+JiIgOjZPQFwNbStpc0rrAXsBZMx5zFrCvip2BW1I/j4i4Z81acrG9XNJBwHmUtsUTbV8t6cDq68cD51BaFpdS2hb3b3mcE5dpehJzbRhjYiZmYk5JzFknRSMiYu2QlaIRET2RhB4R0RNJ6BERPZGEPg9IWm/EfRtOW8y1jaT7thxvfUlbtxmzbZIeN9djiNWbyoQuaYGkF0g6WNIbBx8NYy6UdJikEySdOPhoYaynS3qupKn8f1lZXLWTAiBpD+CiKYyJpE0lPav6fH1J928h5i6S9q8+Xyhp84bxniLpGuD71e3tJR3XMObzgcuA/6huP0HSzPbgSWOeP859Ezpe0vckvV7SA5sEkrTDmj6mKOa7hz5/dp0Yq4m7laTzJV1V3d5O0lsbxZzGLhdJ5wC3A1cCdw3ut/32BjEvAr4BXAz8cSjm6fVHClXy2R/YGTgN+LjtaxvEezFwFPBQygpclWF6gwYxHw+cCFwAPAJ4CPBa28umLObrKFtDPNj2FpK2BI63/cwGMQ8HFgFb295K0iOA02z/eYOY3wX2BM6y/WfVfVfZrn31Kuli4BnABUMxr7C9XY1Y6wH3Ab4GPI2VK7k3AM61/Zi646zibwm8GngJ8D3gJNtfqRHna2v4sm0/o0bMu4CrgZsHd7UQ8xLbO8z8vClJFwL/AHy4rd8jbE/dB3BFBzEv63jMDwAOBG6iXKnuD9y7RpylwGM6GN8LgdsoK3gfPY0xKVeo6wKXDt13ZQsxNSNmo98v4LvVf4djXt5BzFrjBA4BbgD+AFxffX4DcDlwUEs/+wXAHsCPKe9UrgVe3EbshuP6W+CbwJeAVwL3ayHmJaM+byHu4hE/88uaxJzWQ6LPlfSXtr/cYsyzJT3H9jktxgRA0kOAV1B+gS4FPg3sAryKcoU0iZ/Z/n7L4/sYsAWwHbAV8EVJx9g+dppiAn+wfYekwXOsw4g9gSZ0h21LchWzjbr3TZKeArhaPX0wVfmlgaskvRxYUF0BH0zNEpbtDwIflPQG20c3HNcqJG1HuVh5LvAV4Pm2L6ne+Xwb+PwEsV68pq/bHjvW0Pe8H3h/VVbbGzhf0o3Au21fNmm8ykOrkq+GPh9+zn+tGfcXkrag+h1X2Qix0Qr7aU3o3wG+UNWl76SFsgPlquUwSX9oMSaSPg9sA3yS8ss9+IGcKmnJ6r9ztZZIOhU4g3KFBdT75R5yFaUcYuCGqvZd95ewy5gXSjoMWL+qVb4e+GLDmJ+V9GHggVVJ59XARxrGPJByoMsjKfsYfRn464Yx3wC8hfIz/wxlZfY7mwS0fXT1wrMZQ3/rtj/RIOwxlP9/h9n+/VDMn9So/z5/DV8zE7w43O2b7RsknQmsT7nQ2orybq2OjwD3H/F5U39NWR26jaQfU95FvaJJwGmtoV9PeTt/padxgEMkPcP2f7YY76QRd9v2q9t6jmlVvYC/BvhLygvueZQTshr9DlQvDitiuka9954i6b62f9tSrE9S3kVdxsp5I9s+uI3400jSoyj7Te1OKX+eApxt+/Z74LnfbPs9Nb7vvsC9bN/WeAzTmC8lnQfsZvuuWR88WdwHUU5VWtFyZ/vrLcR9HLDtjLhNroJaVb2Ffw93H+OjpizmfYHbbf+xur0A+BPbv6sbswuSFgKv4+5XvrVfdKsr6Y9Sar6bSNoe+D+2X98g5veBbdu8KOri517FfS7w2Bkxj6gR5y7gCuBM4FZmlOwalEfGee6JJkwl/QllHmIzVv09mvjfPTCtJZf/Bi6QdC6rlh1q/zAkvZZSdtmIcsWyM6XmN/Gs94y4h1Pq5NtSNinbjTIpM1FCl/SPtt8r6WhG7yXf5KrqJOBw4P3A0yk10FF72M91zPOBZwG/qW6vTylnPGXSQJJuY3T9vY1S25mUjqmvMtQx1dD7gf9NtZOp7csl/UXDmFcBD6NhXXaG1n/uko6ndOU8nfKitiele6aOI1j5c79fk3HVMOn/hzOBWyidd3+Y5bFjmdaEPpiVX7f6aMMhwJOA79h+uqRtgNptkEP2BLanzFTvL+lPKb+UkxpMqi2h+UTgTOvbPl+SbN8I/LOkb1D+MKcp5nq2B8kc27+RdJ86gWy3Vecc5T6239R2UNs3DSaEK7VeLCR9kfI7dH/gGknfY9ULoxc0GGYXP/en2N6uatN8u6T3UbN+bvufx3lc3fLIbE8/4eM3sr1rmwOYyoTuBv3ma3C77dslIelPbF+rdlbl/d72XZKWS9oA+Dkw8dtP24PJv2uAw1j1bZiZ8Ip/htur+vQPVbZC/jGlz72JLmL+VtIOti8BkPRE4PezfM9YJD2UVd/O/1eDcF10TLXZOfN/2xvW3XTxcx/8jH9Xdcv8Emi0+GsML6GUjto06RX6RZIeb/vKtgYwlQm9WnAwquzQpDyyTGVl2xnAVyT9inZOVVpSxf0I5a3Tb6j/dhHgU5TFBqssqmrobyhvaQ8G3kF5a7vvlMY8TdLg5/Jw4GVNAkp6AfA+yuKnnwObUhLlYxuEHXRM3UHpmILmZZzWOmdsX9hgHLP5G1b9uT+D0p7bxNnV39C/AJdQ/vabdiLNZqLkW83nHFy1Ra7OaROOYRdgP0mDNQODcuDEi8kGpnVS9IlDN9ejTBwst/2PLcV/KmUh0H/YvqONmFXczYANbF/RIMY3be/S1piqmIsoLXGbAveu7m72i9NBzCruvSkHiAu41vads3zLbPEupySdr9r+M0lPB/a2fcAs33qPqZLFybYbtayNiDtqHuEWSlnv72xf3+bztaGaKFzP9i1D9z277c6kSScwq++5wPbTWhzDpqPur0pZ9WJOY0IfRdKFtp9a4/s2sH2rpAeP+rrt/6k5njX+MgzKBjXiPpNqQQQt9aFLuo4RV/2NfnFajDlo/dRqFpo0/Lcvsb2oSux/VpXHvmd7x7oxq7gvAAaTlhfYPrthvPMo6xjavMB4O+Vd6GcoL5B7USZJrwP+apLkNFSXH6lhXX62525tuf1QzEtdLbef4HveRbkQPBVY0Vo66d96VzkJprfkMvwPvRdlL46H1Qz3GeB5lHKImbG3AzXq3ZX3Vf9drxrf5VXs7YDvUt5O1bE/ZaHSvVmZKBstsgButt1oo6eOYz4V+E9GLzRp+m//taT7AV8HPi3p58DyBvGQdCRlgv3T1V2HSNrF9qENwv4I+JbKhlzDyaJJm92utncaun2CpO/YPkJlAdckBnX5F1P+Fj9V3d6bMvYuTUN5BFZ2Ww23FZrJO+W6yknTeYVe1ZQG/9A7Kb8wR9j+5lyOaxRJpwDvGkxsVD3pf297v5rxrrT9+BaH2NVVf6sxq4m2PW1/tu6YVhP3vpRJt3sB+1CusD5t+5cNYl4BPGGwTqJKIJc2LGGN7BJp0iAg6duU9sLPVXftCbzR9s6SLrP9hBoxv277L2a7r03TUB5ZW0zlFTrwJkp9+1ZJbwN2oBw+PbGuSiNDthmepbZ9laQnNIj3HUnb2r6m4biGdXHV32rMqhRyENBqQne16lJlUdmtwFVNkvmQBwKDt8YPqBtE0sdt71e1673K9sktjG1gH8pE63GUn813gFdIWh84qGbMhZIeNai/q+yZsrCNwbbsW5KOoWF5ZFjVkvxu4BG2d5O0LfBk2x+rGe98z9hJdNR9E8Wc0iv0K6q+1F0o/wPfR9k7YqdZvnVUrMEWnSNLI00nICX9O+UX5lOUP5pXUFb77V0z3vcpy7Xbm/nu5qq/i5hvo1xNz/wjnLimKOls4NDqBfbhlO6JJZS3sx+x/YEG49wbOJKyPa0otfQ32z6lRqwVtdwuasVtk7QrZf+RwYTqZsABbncjvZnP+Xnba9zIa8T3jNqa10065VQWOp4EvMX29iqbx1066d+BOtzeeFoT+qVVR8J7KPu5fKbOJMaMmK2WRobirgf8FSsnyL4OfMg1947oZOZb+gjw/jav+juKOSi1rcI1lpVLutr2Y6vPD6O8k9pX5cCMb7XQjfNwSh1dlAuDn9aM0/pe2+p21fGgE2Wb6ua1tv8w9LWJO1JUFo/9HbCJ7depbC+wddOJ5rZJWmz7STNehCcuXUk6hNL++QhWbZ2+lXKxcUzdMU5ryeXHKjvkPQs4qvoFanoiUNulkUGc2yl1ypETMJJOt73HBPFqJ+412AV4lVrsd+0o5raUHRZ3oSSibwDH14w13O74TKq+Ztu3qez3MTFJm8y467Lqv+tK2sT1FittJOnfKP//Bp+vUDP5Dq86bl2VwC9fzZePomyrO4mTKBOET65uL6NMWtZO6G2XRyq/Vdkqe7Dd7c6UNtCJuMvtjaf0Cv0+wK6Uq/MfVldDj2/ytq7t0sgEz9vonUVLY+jiqr+LmJ+lXKUMukf2Bh5o+6U1Yn2RsjhnGeVkpc1t/7qqHy8ZXL1PGPNKRnclLAQeantBjZhrXJTTck29czXbAQetpcNXvpfb3r7BOFopj8yIuQNwNPA4yj45CykT+bXWnUgauRDPDTb2m8ordJfd9T4/dPu/ab7B0P6U0sgh1e2vAx9qGHMcc/6K2cVVf0fvJLae8Uf8NZX+8TpeQ2kvexbwMtu/ru7fmfKHPrGZyUBlIdmbqud496jvGSPmWAlb0tG23zBJbElbAX/P3Xfza7Qh3Szq/L7fUb3QDq58t6D5ZlUb2v6spDcD2F4uqdFGai4HeTyVlQvfrnOzhW9PGvp8Pco7yUtosM3HVCb0Lrjs43I8cI7t6+Z6PDHSpZJ2tv0dAEk7Ad+qE8j2zynL6Wfe/zXKZBTVc9RJlFtSVsnuRJmwP7jhH/Y46pyBehqlZPVR2tsVsguHUw7H3ljSpyn/1v0axmylPFJ97+omZLeSVLtVd+bvnaQHUA7KqW3eJHSVlX3/Qtm9cfOqfn6EO1zhNnjqjuP3yU7AvpIGtehNgO8PSh1NJzJXY+xEWU2kv4WyD8x7gde42rt9Si23fU+8Cx32o0m/wfZXJF1Cefck4BDbv2g4jjdStiLeQtK3qMojNWMNFrw9lLK4aHCgzdMph6Q3af8d9jvKeQ21zZuETrkK2JHyA8D2ZdVb5q61vs1qj7W6lWgHLqecgvMlyu/Sjhra7rZp90gHvijp9cAXWHXxV+2l5bN1pEzaXjjkkZSDp9cB/qLJlW81jtbKI7b3hxWtsNtWJeBBp1OTc3mHt1NYADyGhusw5lNCX277FqmdC+ahCbKRBleTXfbn9k1Hdfk2zeUxgHV+cQcTrv8wdF+jpeV005FyImVdyNU0XKTWVXmksplXnhkM8DPKWaV1DW9zvBy40fayBvHmVUJv7VT1yvOq/w62OB3Uvvah5qrWmBNjJ8ouJzCHvnd1Z4p+cNJYtte4p3idnnFgC9svqxZXYfv3an6VtLPtbRvGGOiyPHKByiZq/055wdmLofmYSdm+sGqvHEyO/rDB2IDmvd1rkzdQap+DU9VvYWXHy8Rs31hdUf657X+0fWX1cSjlKLGYIip7uowycaIcw8QTmJKeIukaqh5ySdtLOm7wddsfb294KxxV43u66Ej5dtUn3pjt/asSiSnlkT2qdSBN9r8fxD4I+DDlhLInACfUfeEGkPRSytkJLwFeCnxXUt06PzC/rtC3rT7WqT52B15AeavXxH1Vdtr7JpQ/TGB1ySPuYRo6fBm42+HLHSXKOro4U3Q2da6su+hIOZmS1H9Ke4vU2i6PACs2n2trEvQtwJOqjixUDh//Kis3U5vYfEron6b05F5FeycBQel3PrFqOQL4NXNba41VzUWirMUtnSk6yVNO/A3ddKScCLySdk/parU8Aivq80dRyjli5QtP3ZOq7jVI5pVf0rBqMp8S+s1eeW5na2xfDGyvcp6oPHTSSkyHOUiUda582zxTtGutdqQA/+WW9+u3fVCVgP9XddcJtr/QMOx7KYeQNP65VPMOi4dedKAct9jonNr5lNAPl/RRWtwTHFYsBjicanMuSRdS+tuT2KdDZ4myzQlMWjxTdAI/mvQb2uxIGXKtpM8AX6TFv82WyyMAP2sjmUO5rK/WwryTsneRaOFFZyr3cumCpE9Rdohb5RfRdqPyiKTTKWWcQQfEK4HtG/TjRoskbUhJlM+i/NF8mVImaHLAxYq6vO271eWnxWw94zVjXtNiR8og5qitGBr9bXZQHkHSBymnNZ1BO4e6HAt83PbiumO6W8x5lNBb37+7inu37TNH3Rf9Iem7lFWHZ3nlZlJX2X5cg5ibUzqxNmPVfVdqr2SWdCqlZ3xf24+rulO+3eR3U9LHgPe53QNYWidpKS2VR4ZitvrCU3U1bQXcyKr7/9eeDJ5PJZcuTgIC+P2MLpc/pxzSEFOgi0RZfX/bdfkzgI9Ryg5tTQx20TPeekeKypkCr6G0Fq43uL/hu+fWyiMDgxWjLdqt5XjzKqF3sX83lB0cT65q6aIcS7Zfw5jRnjNoP1F2UZe/3fa/zf6wiXTRM95FR8ongWsp3UhHUBbnNf3/uaR6h3IG7Z2juxVlh9Y/rd7xbAe8wPY768TrYmX0fCq5tL5/94z4G1Txbm0jXrRD0ndd4+jCWWJ2UZd/OWVjpi+zagJqcgbms4G3UtZffJmqZ9z2BQ1i/qdb3n5XK08oGxw9eW/gvCbP01Fd/kLKNgofbqvU1rZ5c4Xe9quhpFfY/pSkN864f/B8/9rm80VtH5R0OC0myqrvep8Wxjbs8ZQr32ewavdI7aTWUc94Fx0pg02zfq2yo+VPKSWy2joojwDcx/b3ZlStlnfwPLXNm4TegcFq0PvP6ShiNq0nyo7q8i8CHmX7jgYxRmm7Z3x9SiL/y6H7mrYtniDpQcDbKAvA7gf8U4N4rZdHKr+oylaDEtaeND94p1XzpuTSBUkLKIcbjDxPNOaepGuB7dpMlCqnKH2MGXVk2xc2iHkq8IYZKwcbWV3PeNNW3bVBF+URSY8CTqBs+vUr4AZgny5q4XXlCr0B239UOTgjCX16XQ48EGgtUdLNBOafUsoZi1m1lNHkqr/NXQyBbjpSVA6B34O7v+M5ovZAuymPvJCykvNrlCX6vwWeJeli25c1jN2KJPTmLpJ0DHAqq/aS1q7RRqu6SJSt1+Upq43b9u0OWnW76Eg5k7L76cU078IZ6KI8sqj6OIsyJ7EPsBg4UNJptt/bMH5jKbk0JGnUhj9uuxMg6lE5teZuGpZH3kOpy/8/Vi1lTNXPvNqE7IuUSca2esa76EhpvVOki/JIte/KHrZ/U92+H2VnxBcBF7f9bqiOXKE3ZPvpcz2GWL0miXsNWp/AVDnE+GjKMWTrUiYyf9tkqTrd9Iy33pFCeZf7eNtXNowz7IW0Xx7ZBBj+md8JbFot2GrrnUUjSegNqZw48m7gEbZ3U9mo/8m2PzbHQws6S5Rd1OWPoWzxehrlbf2+NDwwmA52MaSDjhTKor/9Wl7010V55DOUFednVrefD/y7yuEpU7EVQkouDUk6l3LO4ltsby9pHeDSLvaNiclJWsKIRGn7sAYxL6B0j7RWl5e0xPaiQSmjuu8i209pEPM4ygtPq7sYtm22RX+SHmT7VxPG7KQ8IumJrNwd8Zu2l9SJ05VcoTe3oe3PSnozgO3lkrrebzsmYHuppAW2/wicJKnJWbLQzQTm76ptBC6T9F7KBF7Tk69a7xnvoiNljLr2+cAOE4btpDzicv7BxXW/v2tJ6M39VtJDWDmbvjNlxj6mQ+uJsqO6/Csptd6DgL8FNqYkzto6Wi3ZRUfKbOpsKDb15ZEupOTSkKQdKDXax1IWcCwE9rR9xZwOLIAVb+d/Rqmf/y3wAOA420sbxOyiLt+6jnrG7/G9SyRdYnvSK/SpL490IVfozV0DfAH4HXAbZXe3H8zlgGKlobfztwNvbyls6xOYKtsu/zOwKauWMh7VIGwXPeNddKR0YtrLI13IFXpDkj4L3Eo5hBpgb+BBtl8yd6OKgS4SZUcTmNdS3kFczNDe6g13cOyiZ/wa4NGUvu42t6Fe03NeOli+H2uWK/Tmtra9/dDtr1V7fcR0+BgjEmVDXUxg3mL73OZDW0UXPeNrPJShZkfKFsAy23+Q9DRKB9EnbP+6esgza4xzXrrXXA+gBy6taqoASNoJ+NYcjidWdYvtc23/3PYvBx8NYw5PYP6WFiYwKRcC/yLpyZJ2GHw0jDmzZ/waysn1tdm+cdTH0EPOrxH2dOCPkh5NeQHenDKpOXjO/2ky5vkkJZeGJH0f2Br4r+quTSh1yrvo+K1ozE7SkZRJy8/T3r4rrevLFhJ1yiODSU9J/0DZ+OzolFnqScmluV3negCxRoPTihYN3dd0P/TW6/KzbSEh6VW2T54kZke7GM6mzhXinSrnnr6K0l4IcO/2hjR/JKE31GSzn+heF4mSburyszmEckDzJOaiZ7yO/YEDgXfZvkHlAJFPzfGY1kopucS8VqfHWR2cUzrGc9YpZcxFz3ijUklV89846zjqyaRozHd1ViF2MYE5mzpXXhdJanVPIUlbVKUcJD1N0sGSHjj0kIk7UiRdIGkDSQ+mbHx2kqScyVtDSi4x39VJlK3X5cdQ54Wni10MTwcWDXWknEXpSHkO1O5IeYDtWyW9FjjJ9uGScoVeQxJ6zHcTJ8qOJjA3t33DGu6r0wrbes84cFe1Ad2LgA8MOlJqjG3YOpIeDrwUeEvDWPNaSi7Ra9UE25ru62LNwCE1vuf0Efd9bvCJ7YMmDdhRz/hwR8rZ1X1NO1KOAM4DltpeXJ029MOGMeelXKFH353O3bde/RzwRKiXKMcw9lW/pG0om2c9QNKLh760AUMbanWkThmn9Y4U26dR9sUZ3L6e5gu15qUk9OilOU6Uk9TltwaeRzmI4vlD998GvK7FMY0y8fyBy4HTB8OKjpT72z6yySC62BVyvkpCj76ay0Q59pWv7TOBMyU92fa3OxxTK6rTml5AyR2XATdLutD2GxuE7WJXyHkpCT16qctE2dEE5lJJh3H3VZ1dXqXWKbl00ZHyaNsvkbS77ZMlfYZSU48JJaFH33WRKLuoy58JfAP4Ki2tPu1oF8MuOlK62BVyXkpCj75rLVF2XJe/j+03NYwxUxc944OOlG+22JEyc1fI+wH/1DDmvJSl/9Frki6z/YSWYu0OvJBSQz5r6Eu3AafYrn34tKR3AhfZPqfRIFeNmV0M55kk9Oi1jhJlF3X52yiHZNxRfQxWddY+p1TSd4EPUEojz6/aDBvt79JmR4qkNU6k2s7y/wml5BJ9dwhwmKTWEiUd1OVt37/BeFani10M2+xIGfybzd0naHOlWUOu0CMmJOkiSl1+5vmfo1Z7jhtTlOS4ue13SNoYeLjt7zUdbxW/lV0MOzqn9GTgkMFkbTXW96UPfXK5Qo9e6yhRdjGBeRzllKtnAO8AfgMcCzypbsCOesa76EjZbqjzBtu/kpQ6fw3ZyyX67jjgycDLq9uDRNnE2ZKe0zDGTDvZ/mvgdihJDVi3YcwH2L4VeDGlZ/yJwLMaxmz9nFLgXlVMAKptdHOxWUP+p0Xf7VR1elwKK67+mibKLuryd0paQFU7lrSQcsXeROs947Y/Wn16IVD7yL0Z3kfZu/1zlH//S4F3tRR7XklCj75rPVF2NIH5b8AXgIdKehewJ/DWhjFb6xnvsiPF9ickLaGUmwS8uNozJiaUSdHoNUn7AC+jrOw8mSpRVjv81Y3ZyQRmtXDpmZSkdr7tqdnPRNLh1acjO1Lc7cHTMaYk9Oi9thOlpA9RTWDafkxV//2y7SYTmB8ETm2yOGlEzNZ3MUxHynTLpGj0WpUoH2z7WNvHtHTV28UE5iXAWyUtrc4rXTTrd8zuk8DDKD3jFwIbUVa1NnG3jhQgHSlTIgk9+q6LRNlFXf5k288BdgR+ABwlqekeKY+2/Tbgt9WReM8Fmh4anY6UKZYfRPRalchOrhLPHpREuYntLRuE7WICc+DRwDaU3u6mE4Nd9IynI2WKJaHHfNFaorT9aUkXs7Iu/8IW6vJHAS8CrgdOBd4xXNqoqfVdDNORMt0yKRq9NiJRfqFpouxoAvP1lEVPm9k+QtImwMPaWvof80MSevRaF4lS0qsorZBbUUovp9pe0nCcrXXOZBfD+SuTotF3jwd2Avaubt9Gw6X/HU1gttk5c//q435Dnw/fFz2VGnr0XRdL/wdancBsq3PG9turGCN7xhuOM6ZYrtCj71pvMZR0lKQfUJbWXwU80fbzG45zZufMN4F3N4yZnvF5Jlfo0XddtBjeCLyTUpc/SdImkrZqUpfvonOGqme8SuTpGZ8HMikavbc2LP3vgqR9gTcDq/SM2/7knA4sOpOEHjGhocOXVxy4LOly29vP9dhmkrQtK3vGz0/PeL/l7VfE5LrYu7wTVQJPEp8nMikaMbkuJjAjGkvJJaKGad67POavJPSIiJ5IySUioieS0CMieiIJPSKiJ5LQIyJ6Igk9IqIn/j82AnxFpaBN0gAAAABJRU5ErkJggg==\n",
"text/plain": [
""
]
},
"metadata": {
"needs_background": "light"
},
"output_type": "display_data"
}
],
"source": [
"# 코드를 입력해 주세요\n",
"# 변환된 결과를 시각화 하세요.\n",
"fi.sort_values(ascending=False).plot(kind='bar')\n",
"plt.show()"
]
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3 (ipykernel)",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.12"
}
},
"nbformat": 4,
"nbformat_minor": 4
}