{
|
|
"cells": [
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"import pandas as pd\n",
|
|
"import numpy as np\n",
|
|
"import os\n",
|
|
"import sumolib\n",
|
|
"import random\n",
|
|
"from tqdm import tqdm\n",
|
|
"from datetime import datetime"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# A. 이동류 매칭"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|██████████| 17280/17280 [00:55<00:00, 313.57it/s]\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>phas_A</th>\n",
|
|
" <th>phas_B</th>\n",
|
|
" <th>move_A</th>\n",
|
|
" <th>move_B</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no phas_A phas_B move_A move_B\n",
|
|
"0 175 1 1 8 4\n",
|
|
"1 175 2 2 7 3\n",
|
|
"2 175 3 3 6 1\n",
|
|
"3 175 3 4 6 2\n",
|
|
"4 175 4 4 5 2\n",
|
|
"5 176 1 1 8 4\n",
|
|
"6 176 2 2 8 3\n",
|
|
"7 176 3 3 5 18\n",
|
|
"8 177 1 1 8 4\n",
|
|
"9 177 2 2 7 3"
|
|
]
|
|
},
|
|
"execution_count": 2,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# [이동류번호] 불러오기 (약 1분의 소요시간)\n",
|
|
"path_moves = '../../Data/tables/moves/'\n",
|
|
"csv_moves = os.listdir('../../Data/tables/moves/')\n",
|
|
"moves = [pd.read_csv(path_moves + csv_move, index_col=0) for csv_move in tqdm(csv_moves)]\n",
|
|
"match1 = pd.concat(moves).drop_duplicates().sort_values(by=['inter_no','phas_A','phas_B']).reset_index(drop=True)\n",
|
|
"match1.head(10)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>phase_no</th>\n",
|
|
" <th>ring_type</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>5</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no phase_no ring_type move_no\n",
|
|
"0 175 1 A 8\n",
|
|
"0 175 1 B 4\n",
|
|
"1 175 2 A 7\n",
|
|
"1 175 2 B 3\n",
|
|
"2 175 3 A 6\n",
|
|
"2 175 3 B 1\n",
|
|
"4 175 4 A 5\n",
|
|
"3 175 4 B 2\n",
|
|
"5 176 1 A 8\n",
|
|
"5 176 1 B 4"
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 계층화 (inter_no, phas_A, phas_B, move_A, move_B) -> ('inter_no', 'phase_no', 'ring_type', 'move_no')\n",
|
|
"matchA = match1[['inter_no', 'phas_A', 'move_A']].copy()\n",
|
|
"matchA.columns = ['inter_no', 'phase_no', 'move_no']\n",
|
|
"matchA['ring_type'] = 'A'\n",
|
|
"matchB = match1[['inter_no', 'phas_B', 'move_B']].copy()\n",
|
|
"matchB.columns = ['inter_no', 'phase_no', 'move_no']\n",
|
|
"matchB['ring_type'] = 'B'\n",
|
|
"match2 = pd.concat([matchA, matchB]).drop_duplicates()\n",
|
|
"match2 = match2[['inter_no', 'phase_no', 'ring_type', 'move_no']]\n",
|
|
"match2 = match2.sort_values(by=list(match2.columns))\n",
|
|
"match2.head(10)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>phase_no</th>\n",
|
|
" <th>ring_type</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>inc_dir</th>\n",
|
|
" <th>out_dir</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>59</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>60</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>61</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>62</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>63</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>64 rows × 6 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no phase_no ring_type move_no inc_dir out_dir\n",
|
|
"0 175 1 A 8 남 북\n",
|
|
"1 175 1 B 4 북 남\n",
|
|
"2 175 2 A 7 북 동\n",
|
|
"3 175 2 B 3 남 서\n",
|
|
"4 175 3 A 6 동 서\n",
|
|
".. ... ... ... ... ... ...\n",
|
|
"59 210 4 B 3 남 서\n",
|
|
"60 211 1 A 6 동 서\n",
|
|
"61 211 1 B 2 서 동\n",
|
|
"62 211 2 A 17 NaN NaN\n",
|
|
"63 211 2 B 18 NaN NaN\n",
|
|
"\n",
|
|
"[64 rows x 6 columns]"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# [nema 이동류목록] 불러오기 및 병합\n",
|
|
"nema = pd.read_csv('../../Data/tables/nema.csv', encoding='cp949')\n",
|
|
"match3 = pd.merge(match2, nema, how='left', on='move_no').drop_duplicates()\n",
|
|
"match3"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>phase_no</th>\n",
|
|
" <th>ring_type</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>inc_dir</th>\n",
|
|
" <th>out_dir</th>\n",
|
|
" <th>inc_angle</th>\n",
|
|
" <th>out_angle</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>179</td>\n",
|
|
" <td>004</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>003</td>\n",
|
|
" <td>176</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>001</td>\n",
|
|
" <td>095</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>179</td>\n",
|
|
" <td>270</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>090</td>\n",
|
|
" <td>270</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>59</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>270</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>60</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>090</td>\n",
|
|
" <td>270</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>61</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>270</td>\n",
|
|
" <td>090</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>62</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>A</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>63</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>B</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" <td>NaN</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>64 rows × 8 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no phase_no ring_type move_no inc_dir out_dir inc_angle out_angle\n",
|
|
"0 175 1 A 8 남 북 179 004\n",
|
|
"1 175 1 B 4 북 남 003 176\n",
|
|
"2 175 2 A 7 북 동 001 095\n",
|
|
"3 175 2 B 3 남 서 179 270\n",
|
|
"4 175 3 A 6 동 서 090 270\n",
|
|
".. ... ... ... ... ... ... ... ...\n",
|
|
"59 210 4 B 3 남 서 180 270\n",
|
|
"60 211 1 A 6 동 서 090 270\n",
|
|
"61 211 1 B 2 서 동 270 090\n",
|
|
"62 211 2 A 17 NaN NaN NaN NaN\n",
|
|
"63 211 2 B 18 NaN NaN NaN NaN\n",
|
|
"\n",
|
|
"[64 rows x 8 columns]"
|
|
]
|
|
},
|
|
"execution_count": 5,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# [방위각정보] 불러오기, 계층화, 병합\n",
|
|
"# 불러오기\n",
|
|
"dtype_dict = {f'angle_{alph}{j}':'str' for alph in ['A', 'B'] for j in range(1,9)}\n",
|
|
"angle_original = pd.read_csv('../../Data/tables/angle.csv', index_col=0, dtype = dtype_dict)\n",
|
|
"# 계층화\n",
|
|
"angle = []\n",
|
|
"for i, row in angle_original.iterrows():\n",
|
|
" angle_codes = row[[f'angle_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]]\n",
|
|
" new = pd.DataFrame({'inter_no':[row.inter_no] * 16, 'phase_no':list(range(1, 9))*2, 'ring_type':['A'] * 8 + ['B'] * 8, 'angle_code':angle_codes.to_list()})\n",
|
|
" angle.append(new)\n",
|
|
"angle = pd.concat(angle)\n",
|
|
"angle = angle.dropna().reset_index(drop=True)\n",
|
|
"# 병합\n",
|
|
"six_chars = angle.angle_code.apply(lambda x:len(x)==6)\n",
|
|
"angle.loc[six_chars,'inc_angle'] = angle.angle_code.apply(lambda x:x[:3])\n",
|
|
"angle.loc[six_chars,'out_angle'] = angle.angle_code.apply(lambda x:x[3:])\n",
|
|
"angle = angle.drop('angle_code', axis=1)\n",
|
|
"match4 = pd.merge(match3, angle, how='left', left_on=['inter_no', 'phase_no', 'ring_type'],\n",
|
|
" right_on=['inter_no', 'phase_no', 'ring_type']).drop_duplicates()\n",
|
|
"match4"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# [네트워크], [교차로-노드 매칭], [교차로정보] 불러오기 \n",
|
|
"net = sumolib.net.readNet('../../Data/networks/SN_sample.net.xml')\n",
|
|
"inter_node = pd.read_csv('../../Data/tables/inter_node.csv', index_col=0)\n",
|
|
"inter_info = pd.read_csv('../../Data/tables/inter_info.csv', index_col=0)\n",
|
|
"\n",
|
|
"inter_node1 = inter_node[inter_node.inter_type == 'parent'].drop('inter_type', axis=1)\n",
|
|
"inter_info1 = inter_info[['inter_no', 'inter_lat', 'inter_lon']]\n",
|
|
"inter = pd.merge(inter_node1, inter_info1, how='left', left_on=['inter_no'],\n",
|
|
" right_on=['inter_no']).drop_duplicates()\n",
|
|
"\n",
|
|
"inter2node = dict(zip(inter['inter_no'], inter['node_id']))\n",
|
|
"\n",
|
|
"match5 = match4.copy()\n",
|
|
"# 진입진출ID 매칭\n",
|
|
"for index, row in match5.iterrows():\n",
|
|
" node_id = inter2node[row.inter_no]\n",
|
|
" node = net.getNode(node_id)\n",
|
|
" # 교차로의 모든 (from / to) edges\n",
|
|
" inc_edges = [edge for edge in node.getIncoming() if edge.getFunction() == ''] # incoming edges\n",
|
|
" out_edges = [edge for edge in node.getOutgoing() if edge.getFunction() == ''] # outgoing edges\n",
|
|
" # 교차로의 모든 (from / to) directions\n",
|
|
" inc_dirs = []\n",
|
|
" for inc_edge in inc_edges:\n",
|
|
" start = inc_edge.getShape()[-2]\n",
|
|
" end = inc_edge.getShape()[-1]\n",
|
|
" inc_dir = np.array(end) - np.array(start)\n",
|
|
" inc_dir = inc_dir / (inc_dir ** 2).sum() ** 0.5\n",
|
|
" inc_dirs.append(inc_dir)\n",
|
|
" out_dirs = []\n",
|
|
" for out_edge in out_edges:\n",
|
|
" start = out_edge.getShape()[0]\n",
|
|
" end = out_edge.getShape()[1]\n",
|
|
" out_dir = np.array(end) - np.array(start)\n",
|
|
" out_dir = out_dir / (out_dir ** 2).sum() ** 0.5\n",
|
|
" out_dirs.append(out_dir)\n",
|
|
" # 진입각, 진출각 불러오기\n",
|
|
" if not pd.isna(row.inc_angle):\n",
|
|
" inc_angle = int(row.inc_angle)\n",
|
|
" out_angle = int(row.out_angle)\n",
|
|
" # 방위각을 일반각으로 가공, 라디안 변환, 단위벡터로 변환\n",
|
|
" inc_angle = (-90 - inc_angle) % 360\n",
|
|
" inc_angle = inc_angle * np.pi / 180.\n",
|
|
" inc_dir_true = np.array([np.cos(inc_angle), np.sin(inc_angle)])\n",
|
|
" out_angle = (90 - out_angle) % 360\n",
|
|
" out_angle = out_angle * np.pi / 180.\n",
|
|
" out_dir_true = np.array([np.cos(out_angle), np.sin(out_angle)])\n",
|
|
" # 매칭 엣지 반환\n",
|
|
" inc_index = np.array([np.dot(inc_dir, inc_dir_true) for inc_dir in inc_dirs]).argmax()\n",
|
|
" out_index = np.array([np.dot(out_dir, out_dir_true) for out_dir in out_dirs]).argmax()\n",
|
|
" inc_edge_id = inc_edges[inc_index].getID()\n",
|
|
" out_edge_id = out_edges[out_index].getID()\n",
|
|
" match5.at[index, 'inc_edge'] = inc_edge_id\n",
|
|
" match5.at[index, 'out_edge'] = out_edge_id\n",
|
|
"match5['node_id'] = match5['inter_no'].map(inter2node)\n",
|
|
"# match5 = match5[['inter_no', 'node_id', 'move_no', 'inc_edge', 'out_edge']]\n",
|
|
"match5 = match5.sort_values(by=['inter_no', 'move_no']).reset_index(drop=True)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>move_no</th>\n",
|
|
" <th>inc_dir</th>\n",
|
|
" <th>out_dir</th>\n",
|
|
" <th>inc_edge</th>\n",
|
|
" <th>out_edge</th>\n",
|
|
" <th>node_id</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571545870_02</td>\n",
|
|
" <td>571542797_02</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571510153_02</td>\n",
|
|
" <td>571545870_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>-571542797_02</td>\n",
|
|
" <td>571510153_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>-571500487_01</td>\n",
|
|
" <td>571542797_02</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571510153_02</td>\n",
|
|
" <td>571500487_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571545870_02</td>\n",
|
|
" <td>571510153_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>-571500487_01</td>\n",
|
|
" <td>571545870_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>-571542797_02</td>\n",
|
|
" <td>571500487_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>-571500487_01</td>\n",
|
|
" <td>571510153_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571510153_02</td>\n",
|
|
" <td>571542797_02</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>-571542797_02</td>\n",
|
|
" <td>571545870_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571545870_02</td>\n",
|
|
" <td>571500487_01</td>\n",
|
|
" <td>i0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>-571542810_01</td>\n",
|
|
" <td>571543469_01</td>\n",
|
|
" <td>i1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571542797_02.99</td>\n",
|
|
" <td>571542810_01</td>\n",
|
|
" <td>i1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571543469_02</td>\n",
|
|
" <td>-571542797_02.99</td>\n",
|
|
" <td>i1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>-571542810_01</td>\n",
|
|
" <td>-571542797_02.99</td>\n",
|
|
" <td>i1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571542797_02.99</td>\n",
|
|
" <td>571543469_01</td>\n",
|
|
" <td>i1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571543469_02</td>\n",
|
|
" <td>571542810_01</td>\n",
|
|
" <td>i1</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571542107_02</td>\n",
|
|
" <td>571542809_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>-571542809_01</td>\n",
|
|
" <td>571542107_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>-571542809_01</td>\n",
|
|
" <td>571542809_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571542811_02</td>\n",
|
|
" <td>571542809_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>-571542809_01</td>\n",
|
|
" <td>571542811_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571542107_02</td>\n",
|
|
" <td>571542809_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571542811_02</td>\n",
|
|
" <td>571542107_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>-571542809_01</td>\n",
|
|
" <td>571542811_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>30</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>31</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>32</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571542811_02</td>\n",
|
|
" <td>571542809_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>33</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>-571542809_01</td>\n",
|
|
" <td>571542809_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>34</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>-571542809_01</td>\n",
|
|
" <td>571542107_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>35</th>\n",
|
|
" <td>177</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571542107_02</td>\n",
|
|
" <td>571542811_01</td>\n",
|
|
" <td>i2</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>36</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>-571500475_01</td>\n",
|
|
" <td>571540304_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>37</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571540303_02.21</td>\n",
|
|
" <td>571500475_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>38</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571540304_02</td>\n",
|
|
" <td>571540303_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>39</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571556450_02</td>\n",
|
|
" <td>571540304_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>40</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571540303_02.21</td>\n",
|
|
" <td>571556450_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>41</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>-571500475_01</td>\n",
|
|
" <td>571540303_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>42</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571556450_02</td>\n",
|
|
" <td>571500475_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>43</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571540304_02</td>\n",
|
|
" <td>571556450_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>44</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>45</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>46</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571556450_02</td>\n",
|
|
" <td>571540303_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>47</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571540303_02.21</td>\n",
|
|
" <td>571540304_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>48</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571540304_02</td>\n",
|
|
" <td>571500475_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>49</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>-571500475_01</td>\n",
|
|
" <td>571556450_01</td>\n",
|
|
" <td>i3</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>50</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571500617_02</td>\n",
|
|
" <td>571500569_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>51</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571500618_02</td>\n",
|
|
" <td>571500617_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>52</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>-571500569_01</td>\n",
|
|
" <td>571500618_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>53</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571500583_01</td>\n",
|
|
" <td>571500569_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>54</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571500618_02</td>\n",
|
|
" <td>571500583_02</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>55</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571500617_02</td>\n",
|
|
" <td>571500618_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>56</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571500583_01</td>\n",
|
|
" <td>571500617_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>57</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>-571500569_01</td>\n",
|
|
" <td>571500583_02</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>58</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>59</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>60</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571500583_01</td>\n",
|
|
" <td>571500618_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>61</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571500618_02</td>\n",
|
|
" <td>571500569_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>62</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>-571500569_01</td>\n",
|
|
" <td>571500617_01</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>63</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571500617_02</td>\n",
|
|
" <td>571500583_02</td>\n",
|
|
" <td>i8</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>64</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571510152_01</td>\n",
|
|
" <td>571510152_01.65</td>\n",
|
|
" <td>i9</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>65</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571510152_02</td>\n",
|
|
" <td>-571510152_01</td>\n",
|
|
" <td>i9</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>66</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i9</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>67</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i9</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>68</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571542073_01</td>\n",
|
|
" <td>571511538_02</td>\n",
|
|
" <td>i7</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>69</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>-571511538_02</td>\n",
|
|
" <td>571542073_02</td>\n",
|
|
" <td>i7</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>70</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i7</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>71</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i7</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>72</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>1</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>-571542115_01</td>\n",
|
|
" <td>571500585_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>73</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571500535_02.18</td>\n",
|
|
" <td>571542115_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>74</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>3</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571500585_02</td>\n",
|
|
" <td>571500535_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>75</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>4</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571511538_02.121</td>\n",
|
|
" <td>571500585_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>76</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>5</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571500535_02.18</td>\n",
|
|
" <td>571511538_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>77</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>-571542115_01</td>\n",
|
|
" <td>571500535_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>78</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571511538_02.121</td>\n",
|
|
" <td>571542115_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>79</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>8</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>571500585_02</td>\n",
|
|
" <td>571511538_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>80</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>81</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>82</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571511538_02.121</td>\n",
|
|
" <td>571500535_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>83</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>571500535_02.18</td>\n",
|
|
" <td>571500585_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>84</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>남</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571500585_02</td>\n",
|
|
" <td>571542115_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>85</th>\n",
|
|
" <td>210</td>\n",
|
|
" <td>21</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>북</td>\n",
|
|
" <td>-571542115_01</td>\n",
|
|
" <td>571511538_01</td>\n",
|
|
" <td>i6</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>86</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>2</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>571542116_02.96</td>\n",
|
|
" <td>571542116_02.164</td>\n",
|
|
" <td>c30</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>87</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>6</td>\n",
|
|
" <td>동</td>\n",
|
|
" <td>서</td>\n",
|
|
" <td>571542116_01</td>\n",
|
|
" <td>-571542116_02.96</td>\n",
|
|
" <td>c30</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>88</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>c30</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>89</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>None</td>\n",
|
|
" <td>c30</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no move_no inc_dir out_dir inc_edge out_edge \\\n",
|
|
"0 175 1 동 남 571545870_02 571542797_02 \n",
|
|
"1 175 2 서 동 571510153_02 571545870_01 \n",
|
|
"2 175 3 남 서 -571542797_02 571510153_01 \n",
|
|
"3 175 4 북 남 -571500487_01 571542797_02 \n",
|
|
"4 175 5 서 북 571510153_02 571500487_01 \n",
|
|
"5 175 6 동 서 571545870_02 571510153_01 \n",
|
|
"6 175 7 북 동 -571500487_01 571545870_01 \n",
|
|
"7 175 8 남 북 -571542797_02 571500487_01 \n",
|
|
"8 175 17 None None None None \n",
|
|
"9 175 18 None None None None \n",
|
|
"10 175 21 북 서 -571500487_01 571510153_01 \n",
|
|
"11 175 21 서 남 571510153_02 571542797_02 \n",
|
|
"12 175 21 남 동 -571542797_02 571545870_01 \n",
|
|
"13 175 21 동 북 571545870_02 571500487_01 \n",
|
|
"14 176 3 남 서 -571542810_01 571543469_01 \n",
|
|
"15 176 4 북 남 571542797_02.99 571542810_01 \n",
|
|
"16 176 5 서 북 571543469_02 -571542797_02.99 \n",
|
|
"17 176 8 남 북 -571542810_01 -571542797_02.99 \n",
|
|
"18 176 17 None None None None \n",
|
|
"19 176 18 None None None None \n",
|
|
"20 176 21 북 서 571542797_02.99 571543469_01 \n",
|
|
"21 176 21 서 남 571543469_02 571542810_01 \n",
|
|
"22 177 1 동 남 571542107_02 571542809_01 \n",
|
|
"23 177 2 서 동 -571542809_01 571542107_01 \n",
|
|
"24 177 3 남 서 -571542809_01 571542809_01 \n",
|
|
"25 177 4 북 남 571542811_02 571542809_01 \n",
|
|
"26 177 5 서 북 -571542809_01 571542811_01 \n",
|
|
"27 177 6 동 서 571542107_02 571542809_01 \n",
|
|
"28 177 7 북 동 571542811_02 571542107_01 \n",
|
|
"29 177 8 남 북 -571542809_01 571542811_01 \n",
|
|
"30 177 17 None None None None \n",
|
|
"31 177 18 None None None None \n",
|
|
"32 177 21 북 서 571542811_02 571542809_01 \n",
|
|
"33 177 21 서 남 -571542809_01 571542809_01 \n",
|
|
"34 177 21 남 동 -571542809_01 571542107_01 \n",
|
|
"35 177 21 동 북 571542107_02 571542811_01 \n",
|
|
"36 178 1 동 남 -571500475_01 571540304_01 \n",
|
|
"37 178 2 서 동 571540303_02.21 571500475_01 \n",
|
|
"38 178 3 남 서 571540304_02 571540303_01 \n",
|
|
"39 178 4 북 남 571556450_02 571540304_01 \n",
|
|
"40 178 5 서 북 571540303_02.21 571556450_01 \n",
|
|
"41 178 6 동 서 -571500475_01 571540303_01 \n",
|
|
"42 178 7 북 동 571556450_02 571500475_01 \n",
|
|
"43 178 8 남 북 571540304_02 571556450_01 \n",
|
|
"44 178 17 None None None None \n",
|
|
"45 178 18 None None None None \n",
|
|
"46 178 21 북 서 571556450_02 571540303_01 \n",
|
|
"47 178 21 서 남 571540303_02.21 571540304_01 \n",
|
|
"48 178 21 남 동 571540304_02 571500475_01 \n",
|
|
"49 178 21 동 북 -571500475_01 571556450_01 \n",
|
|
"50 201 1 동 남 571500617_02 571500569_01 \n",
|
|
"51 201 2 서 동 571500618_02 571500617_01 \n",
|
|
"52 201 3 남 서 -571500569_01 571500618_01 \n",
|
|
"53 201 4 북 남 571500583_01 571500569_01 \n",
|
|
"54 201 5 서 북 571500618_02 571500583_02 \n",
|
|
"55 201 6 동 서 571500617_02 571500618_01 \n",
|
|
"56 201 7 북 동 571500583_01 571500617_01 \n",
|
|
"57 201 8 남 북 -571500569_01 571500583_02 \n",
|
|
"58 201 17 None None None None \n",
|
|
"59 201 18 None None None None \n",
|
|
"60 201 21 북 서 571500583_01 571500618_01 \n",
|
|
"61 201 21 서 남 571500618_02 571500569_01 \n",
|
|
"62 201 21 남 동 -571500569_01 571500617_01 \n",
|
|
"63 201 21 동 북 571500617_02 571500583_02 \n",
|
|
"64 202 2 서 동 571510152_01 571510152_01.65 \n",
|
|
"65 202 6 동 서 571510152_02 -571510152_01 \n",
|
|
"66 202 17 None None None None \n",
|
|
"67 202 18 None None None None \n",
|
|
"68 206 4 북 남 571542073_01 571511538_02 \n",
|
|
"69 206 8 남 북 -571511538_02 571542073_02 \n",
|
|
"70 206 17 None None None None \n",
|
|
"71 206 18 None None None None \n",
|
|
"72 210 1 동 남 -571542115_01 571500585_01 \n",
|
|
"73 210 2 서 동 571500535_02.18 571542115_01 \n",
|
|
"74 210 3 남 서 571500585_02 571500535_01 \n",
|
|
"75 210 4 북 남 571511538_02.121 571500585_01 \n",
|
|
"76 210 5 서 북 571500535_02.18 571511538_01 \n",
|
|
"77 210 6 동 서 -571542115_01 571500535_01 \n",
|
|
"78 210 7 북 동 571511538_02.121 571542115_01 \n",
|
|
"79 210 8 남 북 571500585_02 571511538_01 \n",
|
|
"80 210 17 None None None None \n",
|
|
"81 210 18 None None None None \n",
|
|
"82 210 21 북 서 571511538_02.121 571500535_01 \n",
|
|
"83 210 21 서 남 571500535_02.18 571500585_01 \n",
|
|
"84 210 21 남 동 571500585_02 571542115_01 \n",
|
|
"85 210 21 동 북 -571542115_01 571511538_01 \n",
|
|
"86 211 2 서 동 571542116_02.96 571542116_02.164 \n",
|
|
"87 211 6 동 서 571542116_01 -571542116_02.96 \n",
|
|
"88 211 17 None None None None \n",
|
|
"89 211 18 None None None None \n",
|
|
"\n",
|
|
" node_id \n",
|
|
"0 i0 \n",
|
|
"1 i0 \n",
|
|
"2 i0 \n",
|
|
"3 i0 \n",
|
|
"4 i0 \n",
|
|
"5 i0 \n",
|
|
"6 i0 \n",
|
|
"7 i0 \n",
|
|
"8 i0 \n",
|
|
"9 i0 \n",
|
|
"10 i0 \n",
|
|
"11 i0 \n",
|
|
"12 i0 \n",
|
|
"13 i0 \n",
|
|
"14 i1 \n",
|
|
"15 i1 \n",
|
|
"16 i1 \n",
|
|
"17 i1 \n",
|
|
"18 i1 \n",
|
|
"19 i1 \n",
|
|
"20 i1 \n",
|
|
"21 i1 \n",
|
|
"22 i2 \n",
|
|
"23 i2 \n",
|
|
"24 i2 \n",
|
|
"25 i2 \n",
|
|
"26 i2 \n",
|
|
"27 i2 \n",
|
|
"28 i2 \n",
|
|
"29 i2 \n",
|
|
"30 i2 \n",
|
|
"31 i2 \n",
|
|
"32 i2 \n",
|
|
"33 i2 \n",
|
|
"34 i2 \n",
|
|
"35 i2 \n",
|
|
"36 i3 \n",
|
|
"37 i3 \n",
|
|
"38 i3 \n",
|
|
"39 i3 \n",
|
|
"40 i3 \n",
|
|
"41 i3 \n",
|
|
"42 i3 \n",
|
|
"43 i3 \n",
|
|
"44 i3 \n",
|
|
"45 i3 \n",
|
|
"46 i3 \n",
|
|
"47 i3 \n",
|
|
"48 i3 \n",
|
|
"49 i3 \n",
|
|
"50 i8 \n",
|
|
"51 i8 \n",
|
|
"52 i8 \n",
|
|
"53 i8 \n",
|
|
"54 i8 \n",
|
|
"55 i8 \n",
|
|
"56 i8 \n",
|
|
"57 i8 \n",
|
|
"58 i8 \n",
|
|
"59 i8 \n",
|
|
"60 i8 \n",
|
|
"61 i8 \n",
|
|
"62 i8 \n",
|
|
"63 i8 \n",
|
|
"64 i9 \n",
|
|
"65 i9 \n",
|
|
"66 i9 \n",
|
|
"67 i9 \n",
|
|
"68 i7 \n",
|
|
"69 i7 \n",
|
|
"70 i7 \n",
|
|
"71 i7 \n",
|
|
"72 i6 \n",
|
|
"73 i6 \n",
|
|
"74 i6 \n",
|
|
"75 i6 \n",
|
|
"76 i6 \n",
|
|
"77 i6 \n",
|
|
"78 i6 \n",
|
|
"79 i6 \n",
|
|
"80 i6 \n",
|
|
"81 i6 \n",
|
|
"82 i6 \n",
|
|
"83 i6 \n",
|
|
"84 i6 \n",
|
|
"85 i6 \n",
|
|
"86 c30 \n",
|
|
"87 c30 \n",
|
|
"88 c30 \n",
|
|
"89 c30 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"# 이동류 매칭\n",
|
|
"# 각 교차로에 대하여, 가능한 모든 이동류(1~18, 21)에 대한 진입·진출엣지ID를 지정한다.\n",
|
|
"# 모든 이동류에 대해 지정하므로, 시차제시 이전과 다른 이동류가 등장하더라도 항상 진입·진출 엣지 ID를 지정할 수 있다.\n",
|
|
"match6 = match5.copy().dropna()\n",
|
|
"match6 = match6[['inter_no', 'move_no', 'inc_dir', 'out_dir', 'inc_edge', 'out_edge', 'node_id']]\n",
|
|
"# (1) 가능한 (진입방향, 진출방향) 목록\n",
|
|
"flows = nema.dropna().apply(lambda row: (row['inc_dir'], row['out_dir']), axis=1).tolist()\n",
|
|
"# (2) 각 교차로별 방향 목록 : pdires\n",
|
|
"pdires = {}\n",
|
|
"for inter_no in match6.inter_no.unique():\n",
|
|
" dires = match6[match6.inter_no == inter_no][['inc_dir','out_dir']].values.flatten()\n",
|
|
" dires = {dire for dire in dires if type(dire)==str}\n",
|
|
" pdires[inter_no] = dires\n",
|
|
"# (3) 각 (교차로, 진입방향) 별 진입id 목록 : inc2id\n",
|
|
"inc2id = {}\n",
|
|
"for inter_no in match6.inter_no.unique():\n",
|
|
" for inc_dir in pdires[inter_no]:\n",
|
|
" df = match6[(match6.inter_no==inter_no) & (match6.inc_dir==inc_dir)]\n",
|
|
" inc2id[(inter_no, inc_dir)] = df.inc_edge.iloc[0]\n",
|
|
"# (4) 각 (교차로, 진출방향) 별 진출id 목록 : out2id\n",
|
|
"out2id = {}\n",
|
|
"for inter_no in match6.inter_no.unique():\n",
|
|
" for out_dir in pdires[inter_no]:\n",
|
|
" df = match6[(match6.inter_no==inter_no) & (match6.out_dir==out_dir)]\n",
|
|
" out2id[(inter_no, out_dir)] = df.out_edge.iloc[0]\n",
|
|
"# (5) 각 교차로별 가능한 (진입방향, 진출방향) 목록 : pflows\n",
|
|
"pflow = {}\n",
|
|
"for inter_no in match6.inter_no.unique():\n",
|
|
" pflow[inter_no] = [flow for flow in flows if set(flow).issubset(pdires[inter_no])]\n",
|
|
"# (6) 가능한 이동류에 대하여 진입id, 진출id 배정 : matching\n",
|
|
"inter2node = dict(zip(match6['inter_no'], match6['node_id']))\n",
|
|
"dires_right = ['북', '서', '남', '동', '북']\n",
|
|
"matching = []\n",
|
|
"for inter_no in match6.inter_no.unique():\n",
|
|
" node_id = inter2node[inter_no]\n",
|
|
" # 좌회전과 직진(1 ~ 16)\n",
|
|
" for (inc_dir, out_dir) in pflow[inter_no]:\n",
|
|
" move_no = nema[(nema.inc_dir==inc_dir) & (nema.out_dir==out_dir)].move_no.iloc[0]\n",
|
|
" inc_edge = inc2id[(inter_no, inc_dir)]\n",
|
|
" out_edge = out2id[(inter_no, out_dir)]\n",
|
|
" new_row = pd.DataFrame({'inter_no':[inter_no], 'move_no':[move_no],\n",
|
|
" 'inc_dir':[inc_dir], 'out_dir':[out_dir],\n",
|
|
" 'inc_edge':[inc_edge], 'out_edge':[out_edge], 'node_id':[node_id]})\n",
|
|
" matching.append(new_row)\n",
|
|
" # 보행신호(17), 전적색(18)\n",
|
|
" new_row = pd.DataFrame({'inter_no':[inter_no] * 2, 'move_no':[17, 18],\n",
|
|
" 'inc_dir':[None]*2, 'out_dir':[None]*2,\n",
|
|
" 'inc_edge':[None]*2, 'out_edge':[None]*2, 'node_id':[node_id]*2})\n",
|
|
" matching.append(new_row)\n",
|
|
" # 신호우회전(21)\n",
|
|
" for d in range(len(dires_right)-1):\n",
|
|
" inc_dir = dires_right[d]\n",
|
|
" out_dir = dires_right[d+1]\n",
|
|
" if {inc_dir, out_dir}.issubset(pdires[inter_no]):\n",
|
|
" inc_edge = inc2id[(inter_no, inc_dir)]\n",
|
|
" out_edge = out2id[(inter_no, out_dir)]\n",
|
|
" new_row = pd.DataFrame({'inter_no':[inter_no], 'move_no':[21],\n",
|
|
" 'inc_dir':[inc_dir], 'out_dir':[out_dir],\n",
|
|
" 'inc_edge':[inc_edge], 'out_edge':[out_edge], 'node_id':[node_id]})\n",
|
|
" matching.append(new_row)\n",
|
|
"matching = pd.concat(matching)\n",
|
|
"matching = matching.sort_values(by=['inter_no', 'move_no']).reset_index(drop=True)\n",
|
|
"with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n",
|
|
" display(matching)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# B. 5초 간격으로 이동류번호 수집"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 8,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
" 0%| | 0/17280 [00:00<?, ?it/s]"
|
|
]
|
|
},
|
|
{
|
|
"name": "stderr",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"100%|██████████| 17280/17280 [02:01<00:00, 142.50it/s]\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# 5초 단위로 이동류번호 저장 및 신호이력에서 유닉스시각 가져와서 표시, 한시간동안의 데이터만 보관\n",
|
|
"midnight = int(datetime(2024, 1, 5, 0, 0, 0).timestamp())\n",
|
|
"next_day = int(datetime(2024, 1, 6, 0, 0, 0).timestamp())\n",
|
|
"fsecs = range(midnight, next_day, 5) # fsecs : unix time by Five SECondS\n",
|
|
"time2move = dict(zip(fsecs,moves)) # move : 어느 순간의 이동류정보\n",
|
|
"history = pd.read_csv('../../Data/tables/history.csv', index_col=0)\n",
|
|
"\n",
|
|
"time2movement = {} # movement : 어느 순간의, 그 순간으로부터 한시간 동안의 (교차로번호 + 현시별이동류번호 + 시작시간)\n",
|
|
"# - 아래 절차를 5초마다 반복\n",
|
|
"for fsec in tqdm(fsecs): # fsec : unix time by Five SECond\n",
|
|
" # 1. 상태 테이블 조회해서 전체 데이터중 필요데이터(교차로번호, A링 현시번호, A링 이동류번호, B링 현시번호, B링 이동류번호)만 수집 : A\n",
|
|
" move = time2move[fsec]\n",
|
|
" # 2. 이력 테이블 조회해서 교차로별로 유닉스시간 최대인 데이터(교차로변호, 종료유닉스타임)만 수집 : B\n",
|
|
" recent_histories = [group.iloc[-1:] for _, group in history[history['end_unix'] < fsec].groupby('inter_no')] # 교차로별로 유닉스시간이 최대인 행들\n",
|
|
" if not recent_histories:\n",
|
|
" rhistory = pd.DataFrame({'inter_no':[], 'end_unix':[]}) # recent history\n",
|
|
" else:\n",
|
|
" rhistory = pd.concat(recent_histories)\n",
|
|
" recent_unix = rhistory[['inter_no', 'end_unix']]\n",
|
|
" # 3. 상태 테이블 조회정보(A)와 이력 테이블 조회정보(B) 조인(키값 : 교차로번호) : C\n",
|
|
" move = pd.merge(move, recent_unix, how='left', on='inter_no')\n",
|
|
" move['end_unix'] = move['end_unix'].fillna(0).astype(int)\n",
|
|
" move = move.drop_duplicates()\n",
|
|
" # 4. C데이터 프레임에 신규 컬럼(시작 유닉스타임) 생성 후 종료유닉스 타임 값 입력, 종료 유닉스 타임 컬럼 제거\n",
|
|
" move = move.rename(columns = {'end_unix':'start_unix'})\n",
|
|
" # 5. 이동류 이력정보 READ\n",
|
|
" # - CSV 파일로 서버에 저장된 이동류정보를 읽어옴(파일이 없는 경우에는 데이터가 없는 프레임 D 생성)\n",
|
|
" try:\n",
|
|
" if isinstance(movement, pd.DataFrame): # movement가 존재할 경우 그걸 그대로 씀.\n",
|
|
" pass\n",
|
|
" else: \n",
|
|
" movement = pd.DataFrame()\n",
|
|
" except NameError: # movement가 존재하지 않는 경우 생성\n",
|
|
" movement = pd.DataFrame()\n",
|
|
" # 6. 이동류 이력정보 데이터테이블(D)에 C데이터 add\n",
|
|
" movement = pd.concat([movement, move])\n",
|
|
" # 7. D데이터 프레임에서 중복데이터 제거(교차로번호, 시작 유닉스타임, A링 현시번호, B링 현시번호 같은 행은 제거)\n",
|
|
" movement = movement.drop_duplicates(['inter_no','phas_A','phas_B','start_unix'])\n",
|
|
" # 8. D데이터 보관 시간 기준시간을 시작 유닉스 타임의 최대값 - 3600을 값으로 산출하고, 보관 시간 기준시간보다 작은 시작 유닉스 타임을 가진 행은 모두 제거(1시간 데이터만 보관)\n",
|
|
" movement = movement[movement.start_unix > fsec - 3600]\n",
|
|
" start_unix_min = movement.start_unix.min()\n",
|
|
" start_unix_max = movement.start_unix.max()\n",
|
|
" movement = movement.sort_values(by=['start_unix','inter_no','phas_A','phas_B']).reset_index(drop=True)\n",
|
|
"\n",
|
|
" time2movement[fsec] = movement\n",
|
|
" movement.to_csv(f'../../Data/tables/movements/movements_{fsec}.csv')\n",
|
|
"\n",
|
|
"# 각 movement들의 길이 시각화\n",
|
|
"import matplotlib.pyplot as plt\n",
|
|
"plt.plot(fsecs, [len(time2movement[fsec]) for fsec in fsecs])\n",
|
|
"plt.close()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# C. 5분 간격으로 신호이력 수집 및 통합테이블 생성"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 9,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>start_hour</th>\n",
|
|
" <th>start_minute</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>7</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>9</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>43</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>22</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>180</td>\n",
|
|
" <td>28</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>46</td>\n",
|
|
" <td>48</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>18</td>\n",
|
|
" <td>41</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>190</td>\n",
|
|
" <td>18</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>176</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>73</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>150</td>\n",
|
|
" <td>131</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no start_hour start_minute ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 \\\n",
|
|
"0 175 0 0 37 39 25 30 29 \n",
|
|
"1 175 7 0 40 42 29 26 33 \n",
|
|
"2 175 9 0 43 45 33 22 37 \n",
|
|
"3 175 18 30 46 48 37 18 41 \n",
|
|
"4 176 0 0 37 73 40 0 0 \n",
|
|
"\n",
|
|
" ddur_6 ddur_7 ddur_8 cycle offset \n",
|
|
"0 0 0 0 160 57 \n",
|
|
"1 0 0 0 170 40 \n",
|
|
"2 0 0 0 180 28 \n",
|
|
"3 0 0 0 190 18 \n",
|
|
"4 0 0 0 150 131 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>206</td>\n",
|
|
" <td>1704380520</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>35</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>10</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704380525</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>178</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>38</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>23</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>50</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>201</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>24</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>58</td>\n",
|
|
" <td>17</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>133</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>202</td>\n",
|
|
" <td>1704380540</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>101</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>140</td>\n",
|
|
" <td>103</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
|
|
"0 206 1704380520 33 35 26 26 0 0 \n",
|
|
"1 211 1704380525 28 97 0 0 0 0 \n",
|
|
"2 178 1704380540 38 39 40 23 0 0 \n",
|
|
"3 201 1704380540 24 24 17 58 17 0 \n",
|
|
"4 202 1704380540 39 101 0 0 0 0 \n",
|
|
"\n",
|
|
" ddur_7 ddur_8 cycle offset \n",
|
|
"0 0 0 120 10 \n",
|
|
"1 0 0 125 45 \n",
|
|
"2 0 0 140 50 \n",
|
|
"3 0 0 140 133 \n",
|
|
"4 0 0 140 103 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"pland = pd.read_csv('../../Data/tables/pland.csv', index_col=0)\n",
|
|
"plan = pd.read_csv('../../Data/tables/plan.csv', index_col=0)\n",
|
|
"history = pd.read_csv('../../Data/tables/history.csv', index_col=0)\n",
|
|
"display(pland.head())\n",
|
|
"display(history.head())\n",
|
|
"# plan은 A, B가 통합된 형식으로 history는 분리된 형식으로 표시되었음."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" <th>diff</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>723</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704391690</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>732</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704391850</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>741</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704392010</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>755</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704392170</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>764</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704392330</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>773</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704392490</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>784</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704392651</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>161</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>793</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704392810</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>159</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>802</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704392970</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>813</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704393130</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>825</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704393290</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>834</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704393450</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>846</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704393610</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>856</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704393770</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>865</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704393930</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>876</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704394090</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>886</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704394250</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>898</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704394410</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>909</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704394570</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>918</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704394730</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" <td>160</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
|
|
"723 175 1704391690 37 39 25 30 29 0 \n",
|
|
"732 175 1704391850 37 39 25 30 29 0 \n",
|
|
"741 175 1704392010 37 39 25 30 29 0 \n",
|
|
"755 175 1704392170 37 39 25 30 29 0 \n",
|
|
"764 175 1704392330 37 39 25 30 29 0 \n",
|
|
"773 175 1704392490 37 39 25 30 29 0 \n",
|
|
"784 175 1704392651 37 39 25 30 29 0 \n",
|
|
"793 175 1704392810 37 39 25 30 29 0 \n",
|
|
"802 175 1704392970 37 39 25 30 29 0 \n",
|
|
"813 175 1704393130 37 39 25 30 29 0 \n",
|
|
"825 175 1704393290 37 39 25 30 29 0 \n",
|
|
"834 175 1704393450 37 39 25 30 29 0 \n",
|
|
"846 175 1704393610 37 39 25 30 29 0 \n",
|
|
"856 175 1704393770 37 39 25 30 29 0 \n",
|
|
"865 175 1704393930 37 39 25 30 29 0 \n",
|
|
"876 175 1704394090 37 39 25 30 29 0 \n",
|
|
"886 175 1704394250 37 39 25 30 29 0 \n",
|
|
"898 175 1704394410 37 39 25 30 29 0 \n",
|
|
"909 175 1704394570 37 39 25 30 29 0 \n",
|
|
"918 175 1704394730 37 39 25 30 29 0 \n",
|
|
"\n",
|
|
" ddur_7 ddur_8 cycle offset diff \n",
|
|
"723 0 0 160 57 160 \n",
|
|
"732 0 0 160 57 160 \n",
|
|
"741 0 0 160 57 160 \n",
|
|
"755 0 0 160 57 160 \n",
|
|
"764 0 0 160 57 160 \n",
|
|
"773 0 0 160 57 160 \n",
|
|
"784 0 0 160 57 161 \n",
|
|
"793 0 0 160 57 159 \n",
|
|
"802 0 0 160 57 160 \n",
|
|
"813 0 0 160 57 160 \n",
|
|
"825 0 0 160 57 160 \n",
|
|
"834 0 0 160 57 160 \n",
|
|
"846 0 0 160 57 160 \n",
|
|
"856 0 0 160 57 160 \n",
|
|
"865 0 0 160 57 160 \n",
|
|
"876 0 0 160 57 160 \n",
|
|
"886 0 0 160 57 160 \n",
|
|
"898 0 0 160 57 160 \n",
|
|
"909 0 0 160 57 160 \n",
|
|
"918 0 0 160 57 160 "
|
|
]
|
|
},
|
|
"execution_count": 10,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"hist = history.copy()\n",
|
|
"hist = hist[hist.inter_no==175]\n",
|
|
"hist['diff'] = hist['end_unix'].diff().fillna(0).astype(int)\n",
|
|
"hist[70:90]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>start_hour</th>\n",
|
|
" <th>start_minute</th>\n",
|
|
" <th>start_seconds</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1704380400</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>7</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1704405600</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>9</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1704412800</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>1704447000</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" start_hour start_minute start_seconds\n",
|
|
"0 0 0 1704380400\n",
|
|
"1 7 0 1704405600\n",
|
|
"2 9 0 1704412800\n",
|
|
"3 18 30 1704447000"
|
|
]
|
|
},
|
|
"execution_count": 11,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"# split, isplit : A,B 분리 혹은 통합시 사용될 수 있는 딕셔너리\n",
|
|
"splits = {} # splits maps (inter_no, start_hour, start_minute) to split\n",
|
|
"for i, row in plan.iterrows():\n",
|
|
" inter_no = row.inter_no\n",
|
|
" start_hour = row.start_hour\n",
|
|
" start_minute = row.start_minute\n",
|
|
" cycle = row.cycle\n",
|
|
" cums_A = row[[f'dura_A{j}' for j in range(1,9)]].cumsum()\n",
|
|
" cums_B = row[[f'dura_B{j}' for j in range(1,9)]].cumsum()\n",
|
|
" splits[(inter_no, start_hour, start_minute)] = {} # split maps (phas_A, phas_B) to k\n",
|
|
" k = 0\n",
|
|
" for t in range(cycle):\n",
|
|
" new_phas_A = len(cums_A[cums_A < t]) + 1\n",
|
|
" new_phas_B = len(cums_B[cums_B < t]) + 1\n",
|
|
" if k == 0 or ((new_phas_A, new_phas_B) != (phas_A, phas_B)):\n",
|
|
" k += 1\n",
|
|
" phas_A = new_phas_A\n",
|
|
" phas_B = new_phas_B\n",
|
|
" splits[(inter_no, start_hour, start_minute)][(phas_A, phas_B)] = k\n",
|
|
"\n",
|
|
"isplits = {} # the inverse of splits\n",
|
|
"for i in splits:\n",
|
|
" isplits[i] = {splits[i][k]:k for k in splits[i]} # isplit maps k to (phas_A, phas_B)\n",
|
|
"\n",
|
|
"# timetable\n",
|
|
"timetable = plan[['start_hour', 'start_minute']].drop_duplicates()\n",
|
|
"timetable['start_seconds'] = midnight + timetable['start_hour'] * 3600 + timetable['start_minute'] * 60\n",
|
|
"timetable"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"[175, 176, 177, 178, 201, 202, 206, 210, 211]"
|
|
]
|
|
},
|
|
"execution_count": 12,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"sorted(history.inter_no.unique())"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 378,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>start_hour</th>\n",
|
|
" <th>start_minute</th>\n",
|
|
" <th>start_seconds</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1704380400</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>7</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1704405600</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>9</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>1704412800</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>18</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>1704447000</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" start_hour start_minute start_seconds\n",
|
|
"0 0 0 1704380400\n",
|
|
"1 7 0 1704405600\n",
|
|
"2 9 0 1704412800\n",
|
|
"3 18 30 1704447000"
|
|
]
|
|
},
|
|
"execution_count": 378,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"timetable"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 379,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>1460</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704403110</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1470</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704403270</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1479</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704403430</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1489</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704403590</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1497</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704403750</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1506</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704403910</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1517</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704404070</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1528</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704404230</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1686</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704407111</td>\n",
|
|
" <td>37</td>\n",
|
|
" <td>39</td>\n",
|
|
" <td>25</td>\n",
|
|
" <td>30</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>160</td>\n",
|
|
" <td>57</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1695</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704407280</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1705</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704407449</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1715</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704407620</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1725</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704407791</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1735</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704407960</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1745</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704408130</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1754</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704408300</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1765</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704408470</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1774</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704408640</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1783</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704408810</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1792</th>\n",
|
|
" <td>175</td>\n",
|
|
" <td>1704408980</td>\n",
|
|
" <td>40</td>\n",
|
|
" <td>42</td>\n",
|
|
" <td>29</td>\n",
|
|
" <td>26</td>\n",
|
|
" <td>33</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>170</td>\n",
|
|
" <td>40</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
|
|
"1460 175 1704403110 37 39 25 30 29 0 \n",
|
|
"1470 175 1704403270 37 39 25 30 29 0 \n",
|
|
"1479 175 1704403430 37 39 25 30 29 0 \n",
|
|
"1489 175 1704403590 37 39 25 30 29 0 \n",
|
|
"1497 175 1704403750 37 39 25 30 29 0 \n",
|
|
"1506 175 1704403910 37 39 25 30 29 0 \n",
|
|
"1517 175 1704404070 37 39 25 30 29 0 \n",
|
|
"1528 175 1704404230 37 39 25 30 29 0 \n",
|
|
"1686 175 1704407111 37 39 25 30 29 0 \n",
|
|
"1695 175 1704407280 40 42 29 26 33 0 \n",
|
|
"1705 175 1704407449 40 42 29 26 33 0 \n",
|
|
"1715 175 1704407620 40 42 29 26 33 0 \n",
|
|
"1725 175 1704407791 40 42 29 26 33 0 \n",
|
|
"1735 175 1704407960 40 42 29 26 33 0 \n",
|
|
"1745 175 1704408130 40 42 29 26 33 0 \n",
|
|
"1754 175 1704408300 40 42 29 26 33 0 \n",
|
|
"1765 175 1704408470 40 42 29 26 33 0 \n",
|
|
"1774 175 1704408640 40 42 29 26 33 0 \n",
|
|
"1783 175 1704408810 40 42 29 26 33 0 \n",
|
|
"1792 175 1704408980 40 42 29 26 33 0 \n",
|
|
"\n",
|
|
" ddur_7 ddur_8 cycle offset \n",
|
|
"1460 0 0 160 57 \n",
|
|
"1470 0 0 160 57 \n",
|
|
"1479 0 0 160 57 \n",
|
|
"1489 0 0 160 57 \n",
|
|
"1497 0 0 160 57 \n",
|
|
"1506 0 0 160 57 \n",
|
|
"1517 0 0 160 57 \n",
|
|
"1528 0 0 160 57 \n",
|
|
"1686 0 0 160 57 \n",
|
|
"1695 0 0 170 40 \n",
|
|
"1705 0 0 170 40 \n",
|
|
"1715 0 0 170 40 \n",
|
|
"1725 0 0 170 40 \n",
|
|
"1735 0 0 170 40 \n",
|
|
"1745 0 0 170 40 \n",
|
|
"1754 0 0 170 40 \n",
|
|
"1765 0 0 170 40 \n",
|
|
"1774 0 0 170 40 \n",
|
|
"1783 0 0 170 40 \n",
|
|
"1792 0 0 170 40 "
|
|
]
|
|
},
|
|
"execution_count": 379,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"history[(history.inter_no==175) & (history.end_unix>=1704403000) & (history.end_unix<=1704409000)]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 465,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"2024-01-05 14:29:20\n",
|
|
"2024-01-05 15:29:19\n"
|
|
]
|
|
}
|
|
],
|
|
"source": [
|
|
"# inter_no = 175, m = 30 : 조정 (수축)\n",
|
|
"# inter_no = 175, m = 70 : 삭제 + 조정(수축)\n",
|
|
"# inter_no = 175, m = 90 : 결측(전이) + 삭제 + 조정(수축)\n",
|
|
"# inter_no = 175, m = 140 : 삭제 + 조정(수축)\n",
|
|
"# inter_no = 176, m = 50 : 조정(수축)\n",
|
|
"# inter_no = 176, m = 155 : 삭제(마지막 행에서 삭제)\n",
|
|
"# inter_no = 176, m = 160 : 조정(수축) + 삭제 + 조정(수축)\n",
|
|
"# inter_no = 176, m = 190 : 결측\n",
|
|
"# inter_no = 176, m = 220 : 삭제\n",
|
|
"# inter_no = 176, m = 270 : 삭제\n",
|
|
"# inter_no = 176, m = 275 : 삭제\n",
|
|
"# inter_no = 177, m = 40 : 조정(수축)\n",
|
|
"# inter_no = 178, m = 70 : 삭제\n",
|
|
"# inter_no = 178, m = 100 : 조정(확장) + 삭제\n",
|
|
"# inter_no = 178, m = 270 : 결측 + 조정(확장)\n",
|
|
"\n",
|
|
"print(datetime.fromtimestamp(1704432560))\n",
|
|
"print(datetime.fromtimestamp(1704436159))"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 483,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704380525</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704380645</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704380765</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704380885</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>36</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704381005</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>...</th>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" <td>...</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4835</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704466205</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>117</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>145</td>\n",
|
|
" <td>55</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4842</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704466345</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>117</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>145</td>\n",
|
|
" <td>55</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4851</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704466485</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>117</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>145</td>\n",
|
|
" <td>55</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4857</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704466625</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>117</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>145</td>\n",
|
|
" <td>55</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4864</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704466765</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>117</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>145</td>\n",
|
|
" <td>55</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"<p>649 rows × 12 columns</p>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
|
|
"1 211 1704380525 28 97 0 0 0 0 \n",
|
|
"10 211 1704380645 28 97 0 0 0 0 \n",
|
|
"19 211 1704380765 28 97 0 0 0 0 \n",
|
|
"28 211 1704380885 28 97 0 0 0 0 \n",
|
|
"36 211 1704381005 28 97 0 0 0 0 \n",
|
|
"... ... ... ... ... ... ... ... ... \n",
|
|
"4835 211 1704466205 28 117 0 0 0 0 \n",
|
|
"4842 211 1704466345 28 117 0 0 0 0 \n",
|
|
"4851 211 1704466485 28 117 0 0 0 0 \n",
|
|
"4857 211 1704466625 28 117 0 0 0 0 \n",
|
|
"4864 211 1704466765 28 117 0 0 0 0 \n",
|
|
"\n",
|
|
" ddur_7 ddur_8 cycle offset \n",
|
|
"1 0 0 125 45 \n",
|
|
"10 0 0 125 45 \n",
|
|
"19 0 0 125 45 \n",
|
|
"28 0 0 125 45 \n",
|
|
"36 0 0 125 45 \n",
|
|
"... ... ... ... ... \n",
|
|
"4835 0 0 145 55 \n",
|
|
"4842 0 0 145 55 \n",
|
|
"4851 0 0 145 55 \n",
|
|
"4857 0 0 145 55 \n",
|
|
"4864 0 0 145 55 \n",
|
|
"\n",
|
|
"[649 rows x 12 columns]"
|
|
]
|
|
},
|
|
"execution_count": 483,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"history[history.inter_no==211]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 481,
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"결측치 처리 전\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" <th>diff</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>52</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386765</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>53</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386885</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>54</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387005</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>55</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387125</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>56</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387245</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>57</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387365</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>58</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387485</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>59</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387605</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>60</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387725</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>61</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387845</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>62</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387965</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>63</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388085</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>64</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388205</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>65</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388325</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>66</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388445</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>67</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388565</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>68</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388685</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>69</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388805</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>70</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388925</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>71</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389045</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>72</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389165</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>73</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389285</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
|
|
"52 211 1704386765 28 97 0 0 0 0 \n",
|
|
"53 211 1704386885 28 97 0 0 0 0 \n",
|
|
"54 211 1704387005 28 97 0 0 0 0 \n",
|
|
"55 211 1704387125 28 97 0 0 0 0 \n",
|
|
"56 211 1704387245 28 97 0 0 0 0 \n",
|
|
"57 211 1704387365 28 97 0 0 0 0 \n",
|
|
"58 211 1704387485 28 97 0 0 0 0 \n",
|
|
"59 211 1704387605 28 97 0 0 0 0 \n",
|
|
"60 211 1704387725 28 97 0 0 0 0 \n",
|
|
"61 211 1704387845 28 97 0 0 0 0 \n",
|
|
"62 211 1704387965 28 97 0 0 0 0 \n",
|
|
"63 211 1704388085 28 97 0 0 0 0 \n",
|
|
"64 211 1704388205 28 97 0 0 0 0 \n",
|
|
"65 211 1704388325 28 97 0 0 0 0 \n",
|
|
"66 211 1704388445 28 97 0 0 0 0 \n",
|
|
"67 211 1704388565 28 97 0 0 0 0 \n",
|
|
"68 211 1704388685 28 97 0 0 0 0 \n",
|
|
"69 211 1704388805 28 97 0 0 0 0 \n",
|
|
"70 211 1704388925 28 97 0 0 0 0 \n",
|
|
"71 211 1704389045 28 97 0 0 0 0 \n",
|
|
"72 211 1704389165 28 97 0 0 0 0 \n",
|
|
"73 211 1704389285 28 97 0 0 0 0 \n",
|
|
"\n",
|
|
" ddur_7 ddur_8 cycle offset diff \n",
|
|
"52 0 0 125 45 120 \n",
|
|
"53 0 0 125 45 120 \n",
|
|
"54 0 0 125 45 120 \n",
|
|
"55 0 0 125 45 120 \n",
|
|
"56 0 0 125 45 120 \n",
|
|
"57 0 0 125 45 120 \n",
|
|
"58 0 0 125 45 120 \n",
|
|
"59 0 0 125 45 120 \n",
|
|
"60 0 0 125 45 120 \n",
|
|
"61 0 0 125 45 120 \n",
|
|
"62 0 0 125 45 120 \n",
|
|
"63 0 0 125 45 120 \n",
|
|
"64 0 0 125 45 120 \n",
|
|
"65 0 0 125 45 120 \n",
|
|
"66 0 0 125 45 120 \n",
|
|
"67 0 0 125 45 120 \n",
|
|
"68 0 0 125 45 120 \n",
|
|
"69 0 0 125 45 120 \n",
|
|
"70 0 0 125 45 120 \n",
|
|
"71 0 0 125 45 120 \n",
|
|
"72 0 0 125 45 120 \n",
|
|
"73 0 0 125 45 120 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"결측치 처리 후\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" <th>diff</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>52</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386765</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>53</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386885</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>54</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387005</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>55</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387125</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>56</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387245</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>57</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387365</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>58</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387485</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>59</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387605</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>60</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387725</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>61</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387845</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>62</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387965</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>63</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388085</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>64</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388205</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>65</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388325</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>66</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388445</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>67</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388565</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>68</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388685</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>69</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388805</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>70</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388925</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>71</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389045</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>72</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389165</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>73</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389285</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
|
|
"52 211 1704386765 28 97 0 0 0 0 \n",
|
|
"53 211 1704386885 28 97 0 0 0 0 \n",
|
|
"54 211 1704387005 28 97 0 0 0 0 \n",
|
|
"55 211 1704387125 28 97 0 0 0 0 \n",
|
|
"56 211 1704387245 28 97 0 0 0 0 \n",
|
|
"57 211 1704387365 28 97 0 0 0 0 \n",
|
|
"58 211 1704387485 28 97 0 0 0 0 \n",
|
|
"59 211 1704387605 28 97 0 0 0 0 \n",
|
|
"60 211 1704387725 28 97 0 0 0 0 \n",
|
|
"61 211 1704387845 28 97 0 0 0 0 \n",
|
|
"62 211 1704387965 28 97 0 0 0 0 \n",
|
|
"63 211 1704388085 28 97 0 0 0 0 \n",
|
|
"64 211 1704388205 28 97 0 0 0 0 \n",
|
|
"65 211 1704388325 28 97 0 0 0 0 \n",
|
|
"66 211 1704388445 28 97 0 0 0 0 \n",
|
|
"67 211 1704388565 28 97 0 0 0 0 \n",
|
|
"68 211 1704388685 28 97 0 0 0 0 \n",
|
|
"69 211 1704388805 28 97 0 0 0 0 \n",
|
|
"70 211 1704388925 28 97 0 0 0 0 \n",
|
|
"71 211 1704389045 28 97 0 0 0 0 \n",
|
|
"72 211 1704389165 28 97 0 0 0 0 \n",
|
|
"73 211 1704389285 28 97 0 0 0 0 \n",
|
|
"\n",
|
|
" ddur_7 ddur_8 cycle offset diff \n",
|
|
"52 0 0 125 45 120 \n",
|
|
"53 0 0 125 45 120 \n",
|
|
"54 0 0 125 45 120 \n",
|
|
"55 0 0 125 45 120 \n",
|
|
"56 0 0 125 45 120 \n",
|
|
"57 0 0 125 45 120 \n",
|
|
"58 0 0 125 45 120 \n",
|
|
"59 0 0 125 45 120 \n",
|
|
"60 0 0 125 45 120 \n",
|
|
"61 0 0 125 45 120 \n",
|
|
"62 0 0 125 45 120 \n",
|
|
"63 0 0 125 45 120 \n",
|
|
"64 0 0 125 45 120 \n",
|
|
"65 0 0 125 45 120 \n",
|
|
"66 0 0 125 45 120 \n",
|
|
"67 0 0 125 45 120 \n",
|
|
"68 0 0 125 45 120 \n",
|
|
"69 0 0 125 45 120 \n",
|
|
"70 0 0 125 45 120 \n",
|
|
"71 0 0 125 45 120 \n",
|
|
"72 0 0 125 45 120 \n",
|
|
"73 0 0 125 45 120 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"이상치 처리 전\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" <th>D_n</th>\n",
|
|
" <th>S_n</th>\n",
|
|
" <th>diff</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704385805</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2400</td>\n",
|
|
" <td>2500</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704385925</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2520</td>\n",
|
|
" <td>2625</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386045</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2640</td>\n",
|
|
" <td>2750</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386165</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2760</td>\n",
|
|
" <td>2875</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386285</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2880</td>\n",
|
|
" <td>3000</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386405</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3000</td>\n",
|
|
" <td>3125</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386525</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3120</td>\n",
|
|
" <td>3250</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386645</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3240</td>\n",
|
|
" <td>3375</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386765</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3360</td>\n",
|
|
" <td>3500</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386885</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3480</td>\n",
|
|
" <td>3625</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387005</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3600</td>\n",
|
|
" <td>3750</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387125</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3720</td>\n",
|
|
" <td>3875</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387245</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3840</td>\n",
|
|
" <td>4000</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387365</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3960</td>\n",
|
|
" <td>4125</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387485</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>4080</td>\n",
|
|
" <td>4250</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387605</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>600</td>\n",
|
|
" <td>625</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387725</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>720</td>\n",
|
|
" <td>750</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387845</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>840</td>\n",
|
|
" <td>875</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387965</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>960</td>\n",
|
|
" <td>1000</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388085</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1080</td>\n",
|
|
" <td>1125</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388205</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1200</td>\n",
|
|
" <td>1250</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388325</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1320</td>\n",
|
|
" <td>1375</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388445</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1440</td>\n",
|
|
" <td>1500</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388565</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1560</td>\n",
|
|
" <td>1625</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388685</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1680</td>\n",
|
|
" <td>1750</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388805</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1800</td>\n",
|
|
" <td>1875</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388925</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1920</td>\n",
|
|
" <td>2000</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389045</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2040</td>\n",
|
|
" <td>2125</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389165</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2160</td>\n",
|
|
" <td>2250</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389285</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2280</td>\n",
|
|
" <td>2375</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
|
|
"0 211 1704385805 28 97 0 0 0 0 \n",
|
|
"1 211 1704385925 28 97 0 0 0 0 \n",
|
|
"2 211 1704386045 28 97 0 0 0 0 \n",
|
|
"3 211 1704386165 28 97 0 0 0 0 \n",
|
|
"4 211 1704386285 28 97 0 0 0 0 \n",
|
|
"5 211 1704386405 28 97 0 0 0 0 \n",
|
|
"6 211 1704386525 28 97 0 0 0 0 \n",
|
|
"7 211 1704386645 28 97 0 0 0 0 \n",
|
|
"8 211 1704386765 28 97 0 0 0 0 \n",
|
|
"9 211 1704386885 28 97 0 0 0 0 \n",
|
|
"10 211 1704387005 28 97 0 0 0 0 \n",
|
|
"11 211 1704387125 28 97 0 0 0 0 \n",
|
|
"12 211 1704387245 28 97 0 0 0 0 \n",
|
|
"13 211 1704387365 28 97 0 0 0 0 \n",
|
|
"14 211 1704387485 28 97 0 0 0 0 \n",
|
|
"15 211 1704387605 28 97 0 0 0 0 \n",
|
|
"16 211 1704387725 28 97 0 0 0 0 \n",
|
|
"17 211 1704387845 28 97 0 0 0 0 \n",
|
|
"18 211 1704387965 28 97 0 0 0 0 \n",
|
|
"19 211 1704388085 28 97 0 0 0 0 \n",
|
|
"20 211 1704388205 28 97 0 0 0 0 \n",
|
|
"21 211 1704388325 28 97 0 0 0 0 \n",
|
|
"22 211 1704388445 28 97 0 0 0 0 \n",
|
|
"23 211 1704388565 28 97 0 0 0 0 \n",
|
|
"24 211 1704388685 28 97 0 0 0 0 \n",
|
|
"25 211 1704388805 28 97 0 0 0 0 \n",
|
|
"26 211 1704388925 28 97 0 0 0 0 \n",
|
|
"27 211 1704389045 28 97 0 0 0 0 \n",
|
|
"28 211 1704389165 28 97 0 0 0 0 \n",
|
|
"29 211 1704389285 28 97 0 0 0 0 \n",
|
|
"\n",
|
|
" ddur_7 ddur_8 cycle offset D_n S_n diff \n",
|
|
"0 0 0 125 45 2400 2500 0 \n",
|
|
"1 0 0 125 45 2520 2625 120 \n",
|
|
"2 0 0 125 45 2640 2750 120 \n",
|
|
"3 0 0 125 45 2760 2875 120 \n",
|
|
"4 0 0 125 45 2880 3000 120 \n",
|
|
"5 0 0 125 45 3000 3125 120 \n",
|
|
"6 0 0 125 45 3120 3250 120 \n",
|
|
"7 0 0 125 45 3240 3375 120 \n",
|
|
"8 0 0 125 45 3360 3500 120 \n",
|
|
"9 0 0 125 45 3480 3625 120 \n",
|
|
"10 0 0 125 45 3600 3750 120 \n",
|
|
"11 0 0 125 45 3720 3875 120 \n",
|
|
"12 0 0 125 45 3840 4000 120 \n",
|
|
"13 0 0 125 45 3960 4125 120 \n",
|
|
"14 0 0 125 45 4080 4250 120 \n",
|
|
"15 0 0 125 45 600 625 120 \n",
|
|
"16 0 0 125 45 720 750 120 \n",
|
|
"17 0 0 125 45 840 875 120 \n",
|
|
"18 0 0 125 45 960 1000 120 \n",
|
|
"19 0 0 125 45 1080 1125 120 \n",
|
|
"20 0 0 125 45 1200 1250 120 \n",
|
|
"21 0 0 125 45 1320 1375 120 \n",
|
|
"22 0 0 125 45 1440 1500 120 \n",
|
|
"23 0 0 125 45 1560 1625 120 \n",
|
|
"24 0 0 125 45 1680 1750 120 \n",
|
|
"25 0 0 125 45 1800 1875 120 \n",
|
|
"26 0 0 125 45 1920 2000 120 \n",
|
|
"27 0 0 125 45 2040 2125 120 \n",
|
|
"28 0 0 125 45 2160 2250 120 \n",
|
|
"29 0 0 125 45 2280 2375 120 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
},
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"이상치 처리 후\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/html": [
|
|
"<div>\n",
|
|
"<style scoped>\n",
|
|
" .dataframe tbody tr th:only-of-type {\n",
|
|
" vertical-align: middle;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe tbody tr th {\n",
|
|
" vertical-align: top;\n",
|
|
" }\n",
|
|
"\n",
|
|
" .dataframe thead th {\n",
|
|
" text-align: right;\n",
|
|
" }\n",
|
|
"</style>\n",
|
|
"<table border=\"1\" class=\"dataframe\">\n",
|
|
" <thead>\n",
|
|
" <tr style=\"text-align: right;\">\n",
|
|
" <th></th>\n",
|
|
" <th>inter_no</th>\n",
|
|
" <th>end_unix</th>\n",
|
|
" <th>ddur_1</th>\n",
|
|
" <th>ddur_2</th>\n",
|
|
" <th>ddur_3</th>\n",
|
|
" <th>ddur_4</th>\n",
|
|
" <th>ddur_5</th>\n",
|
|
" <th>ddur_6</th>\n",
|
|
" <th>ddur_7</th>\n",
|
|
" <th>ddur_8</th>\n",
|
|
" <th>cycle</th>\n",
|
|
" <th>offset</th>\n",
|
|
" <th>D_n</th>\n",
|
|
" <th>S_n</th>\n",
|
|
" <th>diff</th>\n",
|
|
" </tr>\n",
|
|
" </thead>\n",
|
|
" <tbody>\n",
|
|
" <tr>\n",
|
|
" <th>0</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704385805</td>\n",
|
|
" <td>28</td>\n",
|
|
" <td>97</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>125</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2400</td>\n",
|
|
" <td>2500</td>\n",
|
|
" <td>0</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>1</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704385925</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2520</td>\n",
|
|
" <td>2625</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>2</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386045</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2640</td>\n",
|
|
" <td>2750</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>3</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386165</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2760</td>\n",
|
|
" <td>2875</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>4</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386285</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2880</td>\n",
|
|
" <td>3000</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>5</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386405</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3000</td>\n",
|
|
" <td>3125</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>6</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386525</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3120</td>\n",
|
|
" <td>3250</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>7</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386645</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3240</td>\n",
|
|
" <td>3375</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>8</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386765</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3360</td>\n",
|
|
" <td>3500</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>9</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704386885</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3480</td>\n",
|
|
" <td>3625</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>10</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387005</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3600</td>\n",
|
|
" <td>3750</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>11</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387125</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3720</td>\n",
|
|
" <td>3875</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>12</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387245</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3840</td>\n",
|
|
" <td>4000</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>13</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387365</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>3960</td>\n",
|
|
" <td>4125</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>14</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387485</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>4080</td>\n",
|
|
" <td>4250</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>15</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387605</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>600</td>\n",
|
|
" <td>625</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>16</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387725</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>720</td>\n",
|
|
" <td>750</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>17</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387845</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>840</td>\n",
|
|
" <td>875</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>18</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704387965</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>960</td>\n",
|
|
" <td>1000</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>19</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388085</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1080</td>\n",
|
|
" <td>1125</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>20</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388205</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1200</td>\n",
|
|
" <td>1250</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>21</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388325</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1320</td>\n",
|
|
" <td>1375</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>22</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388445</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1440</td>\n",
|
|
" <td>1500</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>23</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388565</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1560</td>\n",
|
|
" <td>1625</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>24</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388685</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1680</td>\n",
|
|
" <td>1750</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>25</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388805</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1800</td>\n",
|
|
" <td>1875</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>26</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704388925</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>1920</td>\n",
|
|
" <td>2000</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>27</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389045</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2040</td>\n",
|
|
" <td>2125</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>28</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389165</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2160</td>\n",
|
|
" <td>2250</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" <tr>\n",
|
|
" <th>29</th>\n",
|
|
" <td>211</td>\n",
|
|
" <td>1704389285</td>\n",
|
|
" <td>27</td>\n",
|
|
" <td>93</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>0</td>\n",
|
|
" <td>120</td>\n",
|
|
" <td>45</td>\n",
|
|
" <td>2280</td>\n",
|
|
" <td>2375</td>\n",
|
|
" <td>120</td>\n",
|
|
" </tr>\n",
|
|
" </tbody>\n",
|
|
"</table>\n",
|
|
"</div>"
|
|
],
|
|
"text/plain": [
|
|
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
|
|
"0 211 1704385805 28 97 0 0 0 0 \n",
|
|
"1 211 1704385925 27 93 0 0 0 0 \n",
|
|
"2 211 1704386045 27 93 0 0 0 0 \n",
|
|
"3 211 1704386165 27 93 0 0 0 0 \n",
|
|
"4 211 1704386285 27 93 0 0 0 0 \n",
|
|
"5 211 1704386405 27 93 0 0 0 0 \n",
|
|
"6 211 1704386525 27 93 0 0 0 0 \n",
|
|
"7 211 1704386645 27 93 0 0 0 0 \n",
|
|
"8 211 1704386765 27 93 0 0 0 0 \n",
|
|
"9 211 1704386885 27 93 0 0 0 0 \n",
|
|
"10 211 1704387005 27 93 0 0 0 0 \n",
|
|
"11 211 1704387125 27 93 0 0 0 0 \n",
|
|
"12 211 1704387245 27 93 0 0 0 0 \n",
|
|
"13 211 1704387365 27 93 0 0 0 0 \n",
|
|
"14 211 1704387485 27 93 0 0 0 0 \n",
|
|
"15 211 1704387605 27 93 0 0 0 0 \n",
|
|
"16 211 1704387725 27 93 0 0 0 0 \n",
|
|
"17 211 1704387845 27 93 0 0 0 0 \n",
|
|
"18 211 1704387965 27 93 0 0 0 0 \n",
|
|
"19 211 1704388085 27 93 0 0 0 0 \n",
|
|
"20 211 1704388205 27 93 0 0 0 0 \n",
|
|
"21 211 1704388325 27 93 0 0 0 0 \n",
|
|
"22 211 1704388445 27 93 0 0 0 0 \n",
|
|
"23 211 1704388565 27 93 0 0 0 0 \n",
|
|
"24 211 1704388685 27 93 0 0 0 0 \n",
|
|
"25 211 1704388805 27 93 0 0 0 0 \n",
|
|
"26 211 1704388925 27 93 0 0 0 0 \n",
|
|
"27 211 1704389045 27 93 0 0 0 0 \n",
|
|
"28 211 1704389165 27 93 0 0 0 0 \n",
|
|
"29 211 1704389285 27 93 0 0 0 0 \n",
|
|
"\n",
|
|
" ddur_7 ddur_8 cycle offset D_n S_n diff \n",
|
|
"0 0 0 125 45 2400 2500 0 \n",
|
|
"1 0 0 120 45 2520 2625 120 \n",
|
|
"2 0 0 120 45 2640 2750 120 \n",
|
|
"3 0 0 120 45 2760 2875 120 \n",
|
|
"4 0 0 120 45 2880 3000 120 \n",
|
|
"5 0 0 120 45 3000 3125 120 \n",
|
|
"6 0 0 120 45 3120 3250 120 \n",
|
|
"7 0 0 120 45 3240 3375 120 \n",
|
|
"8 0 0 120 45 3360 3500 120 \n",
|
|
"9 0 0 120 45 3480 3625 120 \n",
|
|
"10 0 0 120 45 3600 3750 120 \n",
|
|
"11 0 0 120 45 3720 3875 120 \n",
|
|
"12 0 0 120 45 3840 4000 120 \n",
|
|
"13 0 0 120 45 3960 4125 120 \n",
|
|
"14 0 0 120 45 4080 4250 120 \n",
|
|
"15 0 0 120 45 600 625 120 \n",
|
|
"16 0 0 120 45 720 750 120 \n",
|
|
"17 0 0 120 45 840 875 120 \n",
|
|
"18 0 0 120 45 960 1000 120 \n",
|
|
"19 0 0 120 45 1080 1125 120 \n",
|
|
"20 0 0 120 45 1200 1250 120 \n",
|
|
"21 0 0 120 45 1320 1375 120 \n",
|
|
"22 0 0 120 45 1440 1500 120 \n",
|
|
"23 0 0 120 45 1560 1625 120 \n",
|
|
"24 0 0 120 45 1680 1750 120 \n",
|
|
"25 0 0 120 45 1800 1875 120 \n",
|
|
"26 0 0 120 45 1920 2000 120 \n",
|
|
"27 0 0 120 45 2040 2125 120 \n",
|
|
"28 0 0 120 45 2160 2250 120 \n",
|
|
"29 0 0 120 45 2280 2375 120 "
|
|
]
|
|
},
|
|
"metadata": {},
|
|
"output_type": "display_data"
|
|
}
|
|
],
|
|
"source": [
|
|
"inter_no = 211\n",
|
|
"m = 30 # ranges from 0 to 287, but 0 makes an error where 288 = 86400//300\n",
|
|
"fmins = range(midnight, next_day, 300) # fmins : unix time by Five MINuteS\n",
|
|
"present_time = fmins[m] # 현재시점\n",
|
|
"# - 5분마다 신호이력 데이터 수집해서 통합테이블 생성할때\n",
|
|
"# 1. 조회시점의 유닉스 타임을 기준으로 신호이력의 유닉스 타임이 1시간 이내인 데이터 수집\n",
|
|
"rhistory = history.copy() # recent history (3시간 이내)\n",
|
|
"rhistory = rhistory[(rhistory.end_unix < present_time) & (rhistory.end_unix >= present_time - 10800)]\n",
|
|
"hours = np.array(range(midnight, next_day + 1, 3600))\n",
|
|
"rhist = rhistory.copy()[rhistory.inter_no == inter_no] # 특정한 inter_no\n",
|
|
"rhist = rhist.reset_index(drop=True)\n",
|
|
"print(\"결측치 처리 전\")\n",
|
|
"rhist_diff = rhist.copy()\n",
|
|
"rhist_diff['diff'] = rhist_diff['end_unix'].diff().fillna(0).astype(int)\n",
|
|
"display(rhist_diff.tail(22)) # 결측치 처리 전\n",
|
|
"new_rows = []\n",
|
|
"# 1-1. 결측치 처리 : 인접한 두 end_unix의 차이가 계획된 주기의 두 배보다 크면 결측이 일어났다고 판단\n",
|
|
"for n in range(len(rhist) - 1):\n",
|
|
" curr_unix = rhist.iloc[n].end_unix # current end_unix\n",
|
|
" next_unix = rhist.iloc[n+1].end_unix # next end_unix\n",
|
|
" cycle = rhist.iloc[n].cycle\n",
|
|
" if next_unix - curr_unix >= 2 * cycle:\n",
|
|
" # 현재 unix를 계획된 주기만큼 늘려가면서 한 행씩 채워나간다.\n",
|
|
" #(다음 unix와의 차이가 계획된 주기보다 작거나 같아질 때까지)\n",
|
|
" while next_unix - curr_unix > cycle:\n",
|
|
" curr_unix += cycle\n",
|
|
" start_seconds = np.array(timetable.start_seconds)\n",
|
|
" idx = (start_seconds <= curr_unix).sum() - 1\n",
|
|
" start_hour = timetable.iloc[idx].start_hour\n",
|
|
" start_minute = timetable.iloc[idx].start_minute\n",
|
|
" prow = pland[(pland.inter_no==inter_no) & (pland.start_hour==start_hour) & (pland.start_minute==start_minute)] # planned row\n",
|
|
" prow = prow.drop(['start_hour', 'start_minute'], axis=1)\n",
|
|
" prow['end_unix'] = curr_unix\n",
|
|
" cycle = prow.iloc[0].cycle\n",
|
|
" display(prow)\n",
|
|
" new_rows.append(prow)\n",
|
|
"\n",
|
|
"rhist = pd.concat([rhist] + new_rows).sort_values(['end_unix'])\n",
|
|
"print(\"결측치 처리 후\")\n",
|
|
"rhist_diff = rhist.copy()\n",
|
|
"rhist_diff['diff'] = rhist_diff['end_unix'].diff().fillna(0).astype(int)\n",
|
|
"display(rhist_diff.tail(22)) # 결측치 처리 후\n",
|
|
"rhist = rhist.reset_index(drop=True)\n",
|
|
"\n",
|
|
"# 1-2. 이상치 처리 : 기준유닉스로부터의 시간차이와 현시시간합이 11 이상 차이나면 이상치가 발생했다고 판단\n",
|
|
"Rhist = rhist.copy() # recent history 1704393231\n",
|
|
"Rhist = Rhist[(Rhist.end_unix < present_time) & (Rhist.end_unix >= present_time - 3600)] # Recent history (1시간 이내)\n",
|
|
"Rhist = Rhist.reset_index(drop=True)\n",
|
|
"Rhist['D_n'] = 0\n",
|
|
"Rhist['S_n'] = 0\n",
|
|
"for n in range(len(Rhist)):\n",
|
|
" curr_unix = Rhist.iloc[n].end_unix # current end_unix\n",
|
|
" cycle = Rhist.iloc[n].cycle\n",
|
|
" ghour_lt_curr_unix = hours[hours < curr_unix].max() # the greatest hour less than curr_unix\n",
|
|
" end_unixes = rhist.end_unix.unique()\n",
|
|
" end_unixes_lt_ghour = np.sort(end_unixes[end_unixes < ghour_lt_curr_unix]) # end unixes less than ghour_lt_end_unix\n",
|
|
" base_unix = end_unixes_lt_ghour[-5] # 기준유닉스 : curr_unix보다 작은 hour 중에서 가장 큰 값으로부터 다섯 번째로 작은 end_unix\n",
|
|
" # D_n : 시간차이\n",
|
|
" D_n = curr_unix - base_unix\n",
|
|
" ddurations = rhist[(rhist.end_unix > base_unix) & (rhist.end_unix <= curr_unix)][[f'ddur_{j}' for j in range(1,9)]]\n",
|
|
" # S_n : 현시시간합\n",
|
|
" S_n = ddurations.values.sum()\n",
|
|
" Rhist.loc[n, ['D_n', 'S_n']] = [D_n, S_n]\n",
|
|
"print(\"이상치 처리 전\")\n",
|
|
"Rhist_diff = Rhist.copy()\n",
|
|
"Rhist_diff['diff'] = Rhist_diff['end_unix'].diff().fillna(0).astype(int)\n",
|
|
"display(Rhist_diff)\n",
|
|
"# for n in range(1, len(Rhist)):\n",
|
|
"n = 1\n",
|
|
"while n < len(Rhist):\n",
|
|
" prev_unix = Rhist[Rhist.index==n-1]['end_unix'].iloc[0] # previous end_unix\n",
|
|
" curr_unix = Rhist[Rhist.index==n]['end_unix'].iloc[0] # current end_unix\n",
|
|
" R_n = (curr_unix - prev_unix) / cycle\n",
|
|
" ghour_lt_curr_unix = hours[hours < curr_unix].max() # the greatest hour less than curr_unix\n",
|
|
" end_unixes = rhist.end_unix.unique()\n",
|
|
" end_unixes_lt_ghour = np.sort(end_unixes[end_unixes < ghour_lt_curr_unix]) # end unixes less than ghour_lt_end_unix\n",
|
|
" base_unix = end_unixes_lt_ghour[-5] # 기준유닉스 : curr_unix보다 작은 hour 중에서 가장 큰 값으로부터 다섯 번째로 작은 end_unix\n",
|
|
" # D_n : 시간차이\n",
|
|
" D_n = curr_unix - base_unix\n",
|
|
" # S_n : 현시시간합\n",
|
|
" ddurations = rhist[(rhist.end_unix > base_unix) & (rhist.end_unix <= curr_unix)][[f'ddur_{j}' for j in range(1,9)]]\n",
|
|
" S_n = ddurations.values.sum()\n",
|
|
" # 비율이 0.5보다 작거나 같으면 해당 행을 삭제\n",
|
|
" if (abs(D_n - S_n) > 10) & (R_n <= 0.5):\n",
|
|
" print(\"lt\", n, curr_unix, round(R_n,2), D_n, S_n)\n",
|
|
" Rhist = Rhist.drop(index=n)\n",
|
|
" n += 1\n",
|
|
" # 행삭제에 따른 curr_unix, D_n, S_n 등 재정의\n",
|
|
" if not Rhist[Rhist.index==n]['end_unix'].empty: # 마지막 행을 삭제하여 뒤의 행이 없을 때를 대비\n",
|
|
" curr_unix = Rhist[Rhist.index==n]['end_unix'].iloc[0] # current end_unix\n",
|
|
" R_n = (curr_unix - prev_unix) / cycle\n",
|
|
" ghour_lt_curr_unix = hours[hours < curr_unix].max() # the greatest hour less than curr_unix\n",
|
|
" end_unixes = rhist.end_unix.unique()\n",
|
|
" end_unixes_lt_ghour = np.sort(end_unixes[end_unixes < ghour_lt_curr_unix]) # end unixes less than ghour_lt_end_unix\n",
|
|
" base_unix = end_unixes_lt_ghour[-5] # 기준유닉스 : curr_unix보다 작은 hour 중에서 가장 큰 값으로부터 다섯 번째로 작은 end_unix\n",
|
|
" # D_n : 시간차이\n",
|
|
" D_n = curr_unix - base_unix\n",
|
|
" # S_n : 현시시간합\n",
|
|
" ddurations = rhist[(rhist.end_unix > base_unix) & (rhist.end_unix <= curr_unix)][[f'ddur_{j}' for j in range(1,9)]]\n",
|
|
" S_n = ddurations.values.sum()\n",
|
|
" # 비율이 0.5보다 크면 해당 행 조정 (비율을 유지한 채로 현시시간 대체)\n",
|
|
" if (abs(D_n - S_n) > 10) & (R_n > 0.5):\n",
|
|
" start_seconds = np.array(timetable.start_seconds)\n",
|
|
" idx = (start_seconds <= curr_unix).sum() - 1\n",
|
|
" start_hour = timetable.iloc[idx].start_hour\n",
|
|
" start_minute = timetable.iloc[idx].start_minute\n",
|
|
" prow = pland[(pland.inter_no==inter_no) & (pland.start_hour==start_hour) & (pland.start_minute==start_minute)].copy().reset_index(drop=True).iloc[0] # planned row\n",
|
|
" adjusted_dur = prow[['ddur_1', 'ddur_2', 'ddur_3', 'ddur_4', 'ddur_5', 'ddur_6', 'ddur_7', 'ddur_8']] * R_n\n",
|
|
" # 조정된 현시시간을 정수로 바꿈\n",
|
|
" int_parts = adjusted_dur.apply(lambda x: int(x))\n",
|
|
" frac_parts = adjusted_dur - int_parts\n",
|
|
" difference = int(round(adjusted_dur.sum())) - int_parts.sum()\n",
|
|
" # 소수 부분이 가장 큰 상위 'difference'개의 값에 대해 올림 처리\n",
|
|
" for _ in range(difference):\n",
|
|
" max_frac_index = frac_parts.idxmax()\n",
|
|
" int_parts[max_frac_index] += 1\n",
|
|
" frac_parts[max_frac_index] = 0 # 이미 처리된 항목은 0으로 설정\n",
|
|
" Rhist.loc[n, ['ddur_1', 'ddur_2', 'ddur_3', 'ddur_4', 'ddur_5', 'ddur_6', 'ddur_7', 'ddur_8']] = int_parts.values\n",
|
|
" Rhist.loc[n, 'cycle'] = int_parts.sum()\n",
|
|
" n += 1\n",
|
|
"print(\"이상치 처리 후\")\n",
|
|
"Rhist_diff = Rhist.copy()\n",
|
|
"Rhist_diff['diff'] = Rhist_diff['end_unix'].diff().fillna(0).astype(int)\n",
|
|
"display(Rhist_diff)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# 세부현시로 되어있던 history를 A, B로 나뉘어 현시시간이 구성된 형태로 바꿈.\n",
|
|
"plan = pd.read_csv('../../Data/tables/plan.csv', index_col=0)\n",
|
|
"history = pd.read_csv('../../Data/tables/history.csv', index_col=0)\n",
|
|
"\n",
|
|
"# A, B 분리 혹은 통합시 사용할 수 있는 딕셔너리\n",
|
|
"splits = {} # splits maps (inter_no, start_hour, start_minute) to split\n",
|
|
"for i, row in plan.iterrows():\n",
|
|
" inter_no = row.inter_no\n",
|
|
" start_hour = row.start_hour\n",
|
|
" start_minute = row.start_minute\n",
|
|
" cycle = row.cycle\n",
|
|
" cums_A = row[[f'dura_A{j}' for j in range(1,9)]].cumsum()\n",
|
|
" cums_B = row[[f'dura_B{j}' for j in range(1,9)]].cumsum()\n",
|
|
" splits[(inter_no, start_hour, start_minute)] = {} # split maps (phas_A, phas_B) to k\n",
|
|
" k = 0\n",
|
|
" for t in range(cycle):\n",
|
|
" new_phas_A = len(cums_A[cums_A < t]) + 1\n",
|
|
" new_phas_B = len(cums_B[cums_B < t]) + 1\n",
|
|
" if k == 0 or ((new_phas_A, new_phas_B) != (phas_A, phas_B)):\n",
|
|
" k += 1\n",
|
|
" phas_A = new_phas_A\n",
|
|
" phas_B = new_phas_B\n",
|
|
" splits[(inter_no, start_hour, start_minute)][(phas_A, phas_B)] = k\n",
|
|
"# the inverse of splits\n",
|
|
"isplits = {} # isplit maps k to (phas_A, phas_B)\n",
|
|
"for i in splits:\n",
|
|
" isplits[i] = {splits[i][k]:k for k in splits[i]}\n",
|
|
"\n",
|
|
"timetable = plan[['start_hour', 'start_minute']].drop_duplicates()\n",
|
|
"timetable['start_seconds'] = midnight + timetable['start_hour'] * 3600 + timetable['start_minute'] * 60\n",
|
|
"\n",
|
|
"abhistory = history.copy() # A, B가 나뉘어진 history\n",
|
|
"# history의 행들을 순회하며 새로운 열 dur_A1, dur_A2, ... 를 만들어내고 값을 배정함.\n",
|
|
"for i, row in abhistory.iterrows():\n",
|
|
" inter_no = row.inter_no\n",
|
|
" ind = (timetable['start_seconds'] < row.end_unix).sum() - 1\n",
|
|
" start_hour = timetable.iloc[ind].start_hour\n",
|
|
" start_minute = timetable.iloc[ind].start_minute\n",
|
|
" isplit = isplits[(inter_no,start_hour,start_minute)]\n",
|
|
" dur_dict = {}\n",
|
|
" dur_chars = [f'dur_{alph}{j}' for alph in ['A', 'B'] for j in range(1, 9)] # 새로운 행들\n",
|
|
" for dur_char in dur_chars:\n",
|
|
" dur_dict[dur_char] = 0\n",
|
|
" for k in range(1, len(isplit)+1): # dur_dict에 값 저장\n",
|
|
" ja = isplit[k][0] # A현시번호\n",
|
|
" jb = isplit[k][1] # B현시번호\n",
|
|
" dur_dict[f'dur_A{ja}'] += row[f'ddur_{k}']\n",
|
|
" dur_dict[f'dur_B{jb}'] += row[f'ddur_{k}']\n",
|
|
" for dur_char in dur_chars: # history의 새로운 열들에 값 배정\n",
|
|
" abhistory.at[i, dur_char] = dur_dict[dur_char]\n",
|
|
"abhistory = abhistory[['inter_no','end_unix'] + dur_chars + ['cycle']].astype(int)\n",
|
|
"abhistory = abhistory.astype(int).sort_values(by = ['end_unix','inter_no'])\n",
|
|
"abhistory.head()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"fmins = range(midnight, next_day, 300) # fmins : unix time by Five MINuteS\n",
|
|
"\n",
|
|
"def make_histid(m:int):\n",
|
|
" '''\n",
|
|
" input : m\n",
|
|
" - m ranges from 0 to 287, but 0 makes an error where 288 = 86400//300\n",
|
|
" - present_time = fmins[m] : 현재시점\n",
|
|
" output : histid\n",
|
|
" - history with edge ids (incoming and outgoing edge ids)\n",
|
|
" - 현재시점으로부터 한시간동안 (교차로번호, 현시, 링)별 현시시간, 진입엣지id, 진출엣지id\n",
|
|
" '''\n",
|
|
" present_time = fmins[m] ####### 현재 시점 ranges from 0 to 287\n",
|
|
" # - 5분마다 신호이력 데이터 수집해서 통합테이블 생성할때\n",
|
|
" # 1. 조회시점의 유닉스 타임을 기준으로 신호이력의 유닉스 타임이 1시간 이내인 데이터 수집\n",
|
|
" rhistory = history.copy()\n",
|
|
" rhistory = rhistory[(rhistory.end_unix < present_time) & (rhistory.end_unix >= present_time - 3600)]\n",
|
|
" ddurs = [f'ddur_{j}' for j in range(1, 9)]\n",
|
|
"\n",
|
|
" # 2. 시작 유닉스 타임컬럼 생성 후 종류 유닉스 타임에서 현시별 현시기간 컬럼의 합을 뺀 값으로 입력\n",
|
|
" # - 현시시간의 합을 뺀 시간의 +- 10초 이내에 이전 주기정보가 존재하면 그 유닉스 시간을 시작 유닉스시간 값으로 하고, 존재하지 않으면 현시시간의 합을 뺀 유닉스 시간을 시작 유닉스 시간으로 지정\n",
|
|
" # # 이전 유닉스 존재하지 않음 => 현시시간 합의 차\n",
|
|
" # # 이전 유닉스 존재, abs < 10 => 이전 유닉스\n",
|
|
" # # 이전 유닉스 존재, abs >=10 => 현시시간 합의 차\n",
|
|
" for i, row in rhistory.iterrows():\n",
|
|
" inter_no = row.inter_no\n",
|
|
" end_unix = row.end_unix\n",
|
|
" elapsed_time = row[ddurs].sum()\n",
|
|
" start_unix = end_unix - elapsed_time\n",
|
|
" pre_rows = history[:i] # previous rows\n",
|
|
" if inter_no in pre_rows.inter_no.unique(): # 이전 유닉스 존재\n",
|
|
" pre_unix = pre_rows[pre_rows.inter_no == inter_no]['end_unix'].iloc[-1] # previous unix time\n",
|
|
" if abs(pre_unix - start_unix) < 10: # abs < 10\n",
|
|
" start_unix = pre_unix\n",
|
|
" else: # abs >= 10\n",
|
|
" pass\n",
|
|
" rhistory.loc[i, 'start_unix'] = start_unix\n",
|
|
" rhistory[rhistory.isna()] = 0\n",
|
|
" rhistory['start_unix'] = rhistory['start_unix'].astype(int)\n",
|
|
" # with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n",
|
|
" # display(rhistory)\n",
|
|
" rhistory = rhistory[['inter_no', 'start_unix'] + ddurs + ['cycle']]\n",
|
|
"\n",
|
|
" # 계층화된 형태로 변환\n",
|
|
" hrhistory = [] # hierarchied recent history\n",
|
|
" for i, row in rhistory.iterrows():\n",
|
|
" inter_no = row.inter_no #\n",
|
|
" start_unix = row.start_unix #\n",
|
|
" ind = (timetable['start_seconds'] <= row.start_unix).sum() - 1\n",
|
|
" start_hour = timetable.iloc[ind].start_hour\n",
|
|
" start_minute = timetable.iloc[ind].start_minute\n",
|
|
" isplit = isplits[(inter_no, start_hour, start_minute)]\n",
|
|
" new_rows = []\n",
|
|
" for j in isplit.keys():\n",
|
|
" phas_A, phas_B = isplit[j]\n",
|
|
" duration = row[f'ddur_{j}']\n",
|
|
" new_rows.append(pd.DataFrame({'inter_no':[inter_no], 'start_unix':[start_unix],\n",
|
|
" 'phas_A':[phas_A],'phas_B':[phas_B],'duration':[duration]}))\n",
|
|
" new_rows = pd.concat(new_rows)\n",
|
|
" hrhistory.append(new_rows)\n",
|
|
" hrhistory = pd.concat(hrhistory)\n",
|
|
" hrhistory = hrhistory.sort_values(by = ['start_unix', 'inter_no', 'phas_A', 'phas_B']).reset_index(drop=True)\n",
|
|
"\n",
|
|
" # 5초단위로 수집한 이동류정보(time2movement[present_time])와 최근 1시간 신호이력(hrhistory)을 병합\n",
|
|
" movedur = pd.merge(time2movement[present_time], hrhistory, how='inner', on=['inter_no', 'start_unix', 'phas_A', 'phas_B'])\n",
|
|
" # movements and durations\n",
|
|
" movedur = movedur.sort_values(by=['start_unix', 'inter_no', 'phas_A','phas_B'])\n",
|
|
" movedur = movedur[['inter_no', 'start_unix', 'phas_A', 'phas_B', 'move_A', 'move_B', 'duration']]\n",
|
|
" # 이동류 매칭 테이블에서 진입id, 진출id를 가져와서 붙임.\n",
|
|
" for i, row in movedur.iterrows():\n",
|
|
" inter_no = row.inter_no\n",
|
|
" start_unix = row.start_unix\n",
|
|
" move_A = row.move_A\n",
|
|
" move_B = row.move_B\n",
|
|
" match_A = matching[(matching.inter_no == inter_no) & (matching.move_no == move_A)].iloc[0]\n",
|
|
" match_B = matching[(matching.inter_no == inter_no) & (matching.move_no == move_B)].iloc[0]\n",
|
|
" inc_edge_A = match_A.inc_edge\n",
|
|
" inc_edge_B = match_B.inc_edge\n",
|
|
" out_edge_A = match_A.out_edge\n",
|
|
" out_edge_B = match_B.out_edge\n",
|
|
" movedur.loc[i, ['inc_edge_A', 'inc_edge_B', 'out_edge_A', 'out_edge_B']] = [inc_edge_A, inc_edge_B, out_edge_A, out_edge_B]\n",
|
|
" # 이동류 컬럼 제거\n",
|
|
" movedur = movedur.drop(['move_A', 'move_B'], axis=1)\n",
|
|
"\n",
|
|
" histid = movedur.copy() # history with edge ids (incoming and outgoing edge ids)\n",
|
|
" return histid"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"make_histid(200).inter_no.unique()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"hist = history.copy()[history.inter_no==175]\n",
|
|
"hist['diff'] = hist['end_unix'].diff()\n",
|
|
"hist = hist[1:]\n",
|
|
"hist\n",
|
|
"hist['diff'] = hist['diff'].astype(int)\n",
|
|
"with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n",
|
|
" display(hist)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"# 3. 결측, 이상치 처리"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"planned = plan.copy()\n",
|
|
"planned['start_unix'] = planned['start_hour'] * 3600 +planned['start_minute'] * 60 + midnight\n",
|
|
"start_unixes = planned.start_unix.unique()\n",
|
|
"planned['pstart_unix'] = planned['start_unix'].apply(lambda x:start_unixes[sum(start_unixes <= x) - 1]) # the unix time when the program started\n",
|
|
"planned = planned[['inter_no', 'start_unix'] + [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)] + ['cycle', 'pstart_unix']]\n",
|
|
"planned.head(10)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"make_histid(100).inter_no.unique()"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"pland = plan.copy() # A, B가 통합된 plan (plan detailed)\n",
|
|
"cums_A = np.array(pland[[f'dura_A{k}' for k in range(1,9)]].cumsum(axis=1))\n",
|
|
"cums_B = np.array(pland[[f'dura_B{k}' for k in range(1,9)]].cumsum(axis=1))\n",
|
|
"detailed_cums = []\n",
|
|
"i = 0\n",
|
|
"for row_A, row_B in zip(cums_A, cums_B):\n",
|
|
" combined_row = np.unique(np.concatenate((row_A, row_B)))\n",
|
|
" ddur = np.concatenate(([combined_row[0]], np.diff(combined_row)))\n",
|
|
" ddur = np.pad(ddur, (0, 8 - len(ddur)), constant_values=(0))\n",
|
|
" detailed_cums.append(ddur)\n",
|
|
" for j in range(8):\n",
|
|
" pland.at[i, f'ddur_{j+1}'] = ddur[j]\n",
|
|
" i+=1\n",
|
|
"pland = pland[['inter_no', 'start_hour', 'start_minute'] + [f'ddur_{i}' for i in range(1,9)] + ['cycle', 'offset']] # plan detailed\n",
|
|
"pland[[f'ddur_{i}' for i in range(1,9)]] = pland[[f'ddur_{i}' for i in range(1,9)]].astype(int)\n",
|
|
"pland[:10]"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"histid = make_histid(25)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"inter_no = 175\n",
|
|
"hist = histid.copy()[histid.inter_no==inter_no]\n",
|
|
"hist = hist.reset_index(drop=True)\n",
|
|
"hist['diff'] = hist['start_unix'].diff().fillna(0).astype(int)\n",
|
|
"hist = hist.set_index('start_unix')\n",
|
|
"with pd.option_context('display.max_rows', None, 'display.max_columns', None):\n",
|
|
" display(hist)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"inter_no = 175\n",
|
|
"hist = histid.copy()[histid.inter_no==inter_no]\n",
|
|
"hist = hist.reset_index(drop=True)\n",
|
|
"hist['diff'] = hist['start_unix'].diff().fillna(0).astype(int)\n",
|
|
"hist = hist.set_index('start_unix')\n",
|
|
"start_unixes = hist.index.unique()\n",
|
|
"for n in range(1, len(start_unixes)):\n",
|
|
" ind = (timetable['start_seconds'] <= start_unixes[n]).sum() - 1 \n",
|
|
" start_hour = timetable.iloc[ind].start_hour\n",
|
|
" start_minute = timetable.iloc[ind].start_minute\n",
|
|
" prow = pland[(pland.inter_no == inter_no)&(pland.start_hour == start_hour)&(pland.start_minute == start_minute)].iloc[0] # planned row\n",
|
|
" cycle = prow.cycle\n",
|
|
" if start_unixes[n] - start_unixes[n-1] < 2 * cycle:\n",
|
|
" pass\n",
|
|
" else:"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"hist"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"matching"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"n = 3\n",
|
|
"ind = (timetable['start_seconds'] <= start_unixes[n]).sum() - 1 \n",
|
|
"start_hour = timetable.iloc[ind].start_hour\n",
|
|
"start_minute = timetable.iloc[ind].start_minute\n",
|
|
"prow = pland[(pland.inter_no == inter_no)&(pland.start_hour == start_hour)&(pland.start_minute == start_minute)].iloc[0] # planned row\n",
|
|
"cycle = prow.cycle\n",
|
|
"print(start_unixes[n] - start_unixes[n-1] < 2 * cycle)\n",
|
|
"ddurs = [f'ddur_{j}' for j in range(1, 9)]\n",
|
|
"print(prow[ddurs])\n",
|
|
"ndphase = (prow[ddurs]!=0).sum() # the number of (detailed) phases\n",
|
|
"isplit = isplits[(inter_no,start_hour,start_minute)]\n",
|
|
"print(isplit)\n",
|
|
"inter_nos = [inter_no] * ndphase\n",
|
|
"phas_As = [isplit[i][0] for i in isplit.keys()]\n",
|
|
"phas_Bs = [isplit[i][1] for i in isplit.keys()]\n",
|
|
"durations = prow[ddurs][prow[ddurs]!=0]\n",
|
|
"# new_rows = pd.DataFrame()"
|
|
]
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "rts",
|
|
"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.8.10"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 2
|
|
}
|