{
"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:12<00:00, 1330.89it/s]\n"
]
},
{
"data": {
"text/html": [
"
\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" phas_A | \n",
" phas_B | \n",
" move_A | \n",
" move_B | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 2 | \n",
" 2 | \n",
" 7 | \n",
" 3 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 3 | \n",
" 3 | \n",
" 6 | \n",
" 1 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 3 | \n",
" 4 | \n",
" 6 | \n",
" 2 | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
" 4 | \n",
" 4 | \n",
" 5 | \n",
" 2 | \n",
"
\n",
" \n",
" 5 | \n",
" 176 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
"
\n",
" \n",
" 6 | \n",
" 176 | \n",
" 2 | \n",
" 2 | \n",
" 8 | \n",
" 3 | \n",
"
\n",
" \n",
" 7 | \n",
" 176 | \n",
" 3 | \n",
" 3 | \n",
" 5 | \n",
" 18 | \n",
"
\n",
" \n",
" 8 | \n",
" 177 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
"
\n",
" \n",
" 9 | \n",
" 177 | \n",
" 2 | \n",
" 2 | \n",
" 7 | \n",
" 3 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"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": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" phase_no | \n",
" ring_type | \n",
" move_no | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 1 | \n",
" A | \n",
" 8 | \n",
"
\n",
" \n",
" 0 | \n",
" 175 | \n",
" 1 | \n",
" B | \n",
" 4 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 2 | \n",
" A | \n",
" 7 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 2 | \n",
" B | \n",
" 3 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 3 | \n",
" A | \n",
" 6 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 3 | \n",
" B | \n",
" 1 | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
" 4 | \n",
" A | \n",
" 5 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 4 | \n",
" B | \n",
" 2 | \n",
"
\n",
" \n",
" 5 | \n",
" 176 | \n",
" 1 | \n",
" A | \n",
" 8 | \n",
"
\n",
" \n",
" 5 | \n",
" 176 | \n",
" 1 | \n",
" B | \n",
" 4 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"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": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" phase_no | \n",
" ring_type | \n",
" move_no | \n",
" inc_dir | \n",
" out_dir | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 1 | \n",
" A | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 1 | \n",
" B | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 2 | \n",
" A | \n",
" 7 | \n",
" 북 | \n",
" 동 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 2 | \n",
" B | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
" 3 | \n",
" A | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 59 | \n",
" 210 | \n",
" 4 | \n",
" B | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
"
\n",
" \n",
" 60 | \n",
" 211 | \n",
" 1 | \n",
" A | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
"
\n",
" \n",
" 61 | \n",
" 211 | \n",
" 1 | \n",
" B | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
"
\n",
" \n",
" 62 | \n",
" 211 | \n",
" 2 | \n",
" A | \n",
" 17 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 63 | \n",
" 211 | \n",
" 2 | \n",
" B | \n",
" 18 | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
64 rows × 6 columns
\n",
"
"
],
"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": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" phase_no | \n",
" ring_type | \n",
" move_no | \n",
" inc_dir | \n",
" out_dir | \n",
" inc_angle | \n",
" out_angle | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 1 | \n",
" A | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
" 179 | \n",
" 004 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 1 | \n",
" B | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
" 003 | \n",
" 176 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 2 | \n",
" A | \n",
" 7 | \n",
" 북 | \n",
" 동 | \n",
" 001 | \n",
" 095 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 2 | \n",
" B | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
" 179 | \n",
" 270 | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
" 3 | \n",
" A | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" 090 | \n",
" 270 | \n",
"
\n",
" \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
" ... | \n",
"
\n",
" \n",
" 59 | \n",
" 210 | \n",
" 4 | \n",
" B | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
" 180 | \n",
" 270 | \n",
"
\n",
" \n",
" 60 | \n",
" 211 | \n",
" 1 | \n",
" A | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" 090 | \n",
" 270 | \n",
"
\n",
" \n",
" 61 | \n",
" 211 | \n",
" 1 | \n",
" B | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
" 270 | \n",
" 090 | \n",
"
\n",
" \n",
" 62 | \n",
" 211 | \n",
" 2 | \n",
" A | \n",
" 17 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
" 63 | \n",
" 211 | \n",
" 2 | \n",
" B | \n",
" 18 | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
" NaN | \n",
"
\n",
" \n",
"
\n",
"
64 rows × 8 columns
\n",
"
"
],
"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": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" move_no | \n",
" inc_dir | \n",
" out_dir | \n",
" inc_edge | \n",
" out_edge | \n",
" node_id | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 1 | \n",
" 동 | \n",
" 남 | \n",
" 571545870_02 | \n",
" 571542797_02 | \n",
" i0 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
" 571510153_02 | \n",
" 571545870_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
" -571542797_02 | \n",
" 571510153_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
" -571500487_01 | \n",
" 571542797_02 | \n",
" i0 | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
" 5 | \n",
" 서 | \n",
" 북 | \n",
" 571510153_02 | \n",
" 571500487_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 5 | \n",
" 175 | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" 571545870_02 | \n",
" 571510153_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 6 | \n",
" 175 | \n",
" 7 | \n",
" 북 | \n",
" 동 | \n",
" -571500487_01 | \n",
" 571545870_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 7 | \n",
" 175 | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
" -571542797_02 | \n",
" 571500487_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 8 | \n",
" 175 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i0 | \n",
"
\n",
" \n",
" 9 | \n",
" 175 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i0 | \n",
"
\n",
" \n",
" 10 | \n",
" 175 | \n",
" 21 | \n",
" 북 | \n",
" 서 | \n",
" -571500487_01 | \n",
" 571510153_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 11 | \n",
" 175 | \n",
" 21 | \n",
" 서 | \n",
" 남 | \n",
" 571510153_02 | \n",
" 571542797_02 | \n",
" i0 | \n",
"
\n",
" \n",
" 12 | \n",
" 175 | \n",
" 21 | \n",
" 남 | \n",
" 동 | \n",
" -571542797_02 | \n",
" 571545870_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 13 | \n",
" 175 | \n",
" 21 | \n",
" 동 | \n",
" 북 | \n",
" 571545870_02 | \n",
" 571500487_01 | \n",
" i0 | \n",
"
\n",
" \n",
" 14 | \n",
" 176 | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
" -571542810_01 | \n",
" 571543469_01 | \n",
" i1 | \n",
"
\n",
" \n",
" 15 | \n",
" 176 | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
" 571542797_02.99 | \n",
" 571542810_01 | \n",
" i1 | \n",
"
\n",
" \n",
" 16 | \n",
" 176 | \n",
" 5 | \n",
" 서 | \n",
" 북 | \n",
" 571543469_02 | \n",
" -571542797_02.99 | \n",
" i1 | \n",
"
\n",
" \n",
" 17 | \n",
" 176 | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
" -571542810_01 | \n",
" -571542797_02.99 | \n",
" i1 | \n",
"
\n",
" \n",
" 18 | \n",
" 176 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i1 | \n",
"
\n",
" \n",
" 19 | \n",
" 176 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i1 | \n",
"
\n",
" \n",
" 20 | \n",
" 176 | \n",
" 21 | \n",
" 북 | \n",
" 서 | \n",
" 571542797_02.99 | \n",
" 571543469_01 | \n",
" i1 | \n",
"
\n",
" \n",
" 21 | \n",
" 176 | \n",
" 21 | \n",
" 서 | \n",
" 남 | \n",
" 571543469_02 | \n",
" 571542810_01 | \n",
" i1 | \n",
"
\n",
" \n",
" 22 | \n",
" 177 | \n",
" 1 | \n",
" 동 | \n",
" 남 | \n",
" 571542107_02 | \n",
" 571542809_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 23 | \n",
" 177 | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
" -571542809_01 | \n",
" 571542107_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 24 | \n",
" 177 | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
" -571542809_01 | \n",
" 571542809_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 25 | \n",
" 177 | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
" 571542811_02 | \n",
" 571542809_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 26 | \n",
" 177 | \n",
" 5 | \n",
" 서 | \n",
" 북 | \n",
" -571542809_01 | \n",
" 571542811_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 27 | \n",
" 177 | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" 571542107_02 | \n",
" 571542809_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 28 | \n",
" 177 | \n",
" 7 | \n",
" 북 | \n",
" 동 | \n",
" 571542811_02 | \n",
" 571542107_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 29 | \n",
" 177 | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
" -571542809_01 | \n",
" 571542811_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 30 | \n",
" 177 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i2 | \n",
"
\n",
" \n",
" 31 | \n",
" 177 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i2 | \n",
"
\n",
" \n",
" 32 | \n",
" 177 | \n",
" 21 | \n",
" 북 | \n",
" 서 | \n",
" 571542811_02 | \n",
" 571542809_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 33 | \n",
" 177 | \n",
" 21 | \n",
" 서 | \n",
" 남 | \n",
" -571542809_01 | \n",
" 571542809_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 34 | \n",
" 177 | \n",
" 21 | \n",
" 남 | \n",
" 동 | \n",
" -571542809_01 | \n",
" 571542107_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 35 | \n",
" 177 | \n",
" 21 | \n",
" 동 | \n",
" 북 | \n",
" 571542107_02 | \n",
" 571542811_01 | \n",
" i2 | \n",
"
\n",
" \n",
" 36 | \n",
" 178 | \n",
" 1 | \n",
" 동 | \n",
" 남 | \n",
" -571500475_01 | \n",
" 571540304_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 37 | \n",
" 178 | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
" 571540303_02.21 | \n",
" 571500475_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 38 | \n",
" 178 | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
" 571540304_02 | \n",
" 571540303_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 39 | \n",
" 178 | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
" 571556450_02 | \n",
" 571540304_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 40 | \n",
" 178 | \n",
" 5 | \n",
" 서 | \n",
" 북 | \n",
" 571540303_02.21 | \n",
" 571556450_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 41 | \n",
" 178 | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" -571500475_01 | \n",
" 571540303_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 42 | \n",
" 178 | \n",
" 7 | \n",
" 북 | \n",
" 동 | \n",
" 571556450_02 | \n",
" 571500475_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 43 | \n",
" 178 | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
" 571540304_02 | \n",
" 571556450_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 44 | \n",
" 178 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i3 | \n",
"
\n",
" \n",
" 45 | \n",
" 178 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i3 | \n",
"
\n",
" \n",
" 46 | \n",
" 178 | \n",
" 21 | \n",
" 북 | \n",
" 서 | \n",
" 571556450_02 | \n",
" 571540303_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 47 | \n",
" 178 | \n",
" 21 | \n",
" 서 | \n",
" 남 | \n",
" 571540303_02.21 | \n",
" 571540304_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 48 | \n",
" 178 | \n",
" 21 | \n",
" 남 | \n",
" 동 | \n",
" 571540304_02 | \n",
" 571500475_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 49 | \n",
" 178 | \n",
" 21 | \n",
" 동 | \n",
" 북 | \n",
" -571500475_01 | \n",
" 571556450_01 | \n",
" i3 | \n",
"
\n",
" \n",
" 50 | \n",
" 201 | \n",
" 1 | \n",
" 동 | \n",
" 남 | \n",
" 571500617_02 | \n",
" 571500569_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 51 | \n",
" 201 | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
" 571500618_02 | \n",
" 571500617_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 52 | \n",
" 201 | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
" -571500569_01 | \n",
" 571500618_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 53 | \n",
" 201 | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
" 571500583_01 | \n",
" 571500569_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 54 | \n",
" 201 | \n",
" 5 | \n",
" 서 | \n",
" 북 | \n",
" 571500618_02 | \n",
" 571500583_02 | \n",
" i8 | \n",
"
\n",
" \n",
" 55 | \n",
" 201 | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" 571500617_02 | \n",
" 571500618_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 56 | \n",
" 201 | \n",
" 7 | \n",
" 북 | \n",
" 동 | \n",
" 571500583_01 | \n",
" 571500617_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 57 | \n",
" 201 | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
" -571500569_01 | \n",
" 571500583_02 | \n",
" i8 | \n",
"
\n",
" \n",
" 58 | \n",
" 201 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i8 | \n",
"
\n",
" \n",
" 59 | \n",
" 201 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i8 | \n",
"
\n",
" \n",
" 60 | \n",
" 201 | \n",
" 21 | \n",
" 북 | \n",
" 서 | \n",
" 571500583_01 | \n",
" 571500618_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 61 | \n",
" 201 | \n",
" 21 | \n",
" 서 | \n",
" 남 | \n",
" 571500618_02 | \n",
" 571500569_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 62 | \n",
" 201 | \n",
" 21 | \n",
" 남 | \n",
" 동 | \n",
" -571500569_01 | \n",
" 571500617_01 | \n",
" i8 | \n",
"
\n",
" \n",
" 63 | \n",
" 201 | \n",
" 21 | \n",
" 동 | \n",
" 북 | \n",
" 571500617_02 | \n",
" 571500583_02 | \n",
" i8 | \n",
"
\n",
" \n",
" 64 | \n",
" 202 | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
" 571510152_01 | \n",
" 571510152_01.65 | \n",
" i9 | \n",
"
\n",
" \n",
" 65 | \n",
" 202 | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" 571510152_02 | \n",
" -571510152_01 | \n",
" i9 | \n",
"
\n",
" \n",
" 66 | \n",
" 202 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i9 | \n",
"
\n",
" \n",
" 67 | \n",
" 202 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i9 | \n",
"
\n",
" \n",
" 68 | \n",
" 206 | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
" 571542073_01 | \n",
" 571511538_02 | \n",
" i7 | \n",
"
\n",
" \n",
" 69 | \n",
" 206 | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
" -571511538_02 | \n",
" 571542073_02 | \n",
" i7 | \n",
"
\n",
" \n",
" 70 | \n",
" 206 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i7 | \n",
"
\n",
" \n",
" 71 | \n",
" 206 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i7 | \n",
"
\n",
" \n",
" 72 | \n",
" 210 | \n",
" 1 | \n",
" 동 | \n",
" 남 | \n",
" -571542115_01 | \n",
" 571500585_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 73 | \n",
" 210 | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
" 571500535_02.18 | \n",
" 571542115_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 74 | \n",
" 210 | \n",
" 3 | \n",
" 남 | \n",
" 서 | \n",
" 571500585_02 | \n",
" 571500535_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 75 | \n",
" 210 | \n",
" 4 | \n",
" 북 | \n",
" 남 | \n",
" 571511538_02.121 | \n",
" 571500585_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 76 | \n",
" 210 | \n",
" 5 | \n",
" 서 | \n",
" 북 | \n",
" 571500535_02.18 | \n",
" 571511538_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 77 | \n",
" 210 | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" -571542115_01 | \n",
" 571500535_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 78 | \n",
" 210 | \n",
" 7 | \n",
" 북 | \n",
" 동 | \n",
" 571511538_02.121 | \n",
" 571542115_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 79 | \n",
" 210 | \n",
" 8 | \n",
" 남 | \n",
" 북 | \n",
" 571500585_02 | \n",
" 571511538_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 80 | \n",
" 210 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i6 | \n",
"
\n",
" \n",
" 81 | \n",
" 210 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" i6 | \n",
"
\n",
" \n",
" 82 | \n",
" 210 | \n",
" 21 | \n",
" 북 | \n",
" 서 | \n",
" 571511538_02.121 | \n",
" 571500535_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 83 | \n",
" 210 | \n",
" 21 | \n",
" 서 | \n",
" 남 | \n",
" 571500535_02.18 | \n",
" 571500585_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 84 | \n",
" 210 | \n",
" 21 | \n",
" 남 | \n",
" 동 | \n",
" 571500585_02 | \n",
" 571542115_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 85 | \n",
" 210 | \n",
" 21 | \n",
" 동 | \n",
" 북 | \n",
" -571542115_01 | \n",
" 571511538_01 | \n",
" i6 | \n",
"
\n",
" \n",
" 86 | \n",
" 211 | \n",
" 2 | \n",
" 서 | \n",
" 동 | \n",
" 571542116_02.96 | \n",
" 571542116_02.164 | \n",
" c30 | \n",
"
\n",
" \n",
" 87 | \n",
" 211 | \n",
" 6 | \n",
" 동 | \n",
" 서 | \n",
" 571542116_01 | \n",
" -571542116_02.96 | \n",
" c30 | \n",
"
\n",
" \n",
" 88 | \n",
" 211 | \n",
" 17 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" c30 | \n",
"
\n",
" \n",
" 89 | \n",
" 211 | \n",
" 18 | \n",
" None | \n",
" None | \n",
" None | \n",
" None | \n",
" c30 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"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:03<00:00, 139.65it/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": "code",
"execution_count": 9,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"3540\n"
]
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" phas_A | \n",
" phas_B | \n",
" move_A | \n",
" move_B | \n",
" start_unix | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 176 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
" 1704463240 | \n",
"
\n",
" \n",
" 1 | \n",
" 176 | \n",
" 2 | \n",
" 2 | \n",
" 8 | \n",
" 3 | \n",
" 1704463240 | \n",
"
\n",
" \n",
" 2 | \n",
" 176 | \n",
" 3 | \n",
" 3 | \n",
" 5 | \n",
" 18 | \n",
" 1704463240 | \n",
"
\n",
" \n",
" 3 | \n",
" 206 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
" 1704463250 | \n",
"
\n",
" \n",
" 4 | \n",
" 206 | \n",
" 2 | \n",
" 2 | \n",
" 17 | \n",
" 18 | \n",
" 1704463250 | \n",
"
\n",
" \n",
" 5 | \n",
" 206 | \n",
" 3 | \n",
" 3 | \n",
" 8 | \n",
" 4 | \n",
" 1704463250 | \n",
"
\n",
" \n",
" 6 | \n",
" 206 | \n",
" 4 | \n",
" 4 | \n",
" 17 | \n",
" 18 | \n",
" 1704463250 | \n",
"
\n",
" \n",
" 7 | \n",
" 175 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
" 1704463270 | \n",
"
\n",
" \n",
" 8 | \n",
" 175 | \n",
" 2 | \n",
" 2 | \n",
" 7 | \n",
" 3 | \n",
" 1704463270 | \n",
"
\n",
" \n",
" 9 | \n",
" 175 | \n",
" 3 | \n",
" 3 | \n",
" 6 | \n",
" 1 | \n",
" 1704463270 | \n",
"
\n",
" \n",
" 10 | \n",
" 175 | \n",
" 3 | \n",
" 4 | \n",
" 6 | \n",
" 2 | \n",
" 1704463270 | \n",
"
\n",
" \n",
" 11 | \n",
" 175 | \n",
" 4 | \n",
" 4 | \n",
" 5 | \n",
" 2 | \n",
" 1704463270 | \n",
"
\n",
" \n",
" 12 | \n",
" 202 | \n",
" 1 | \n",
" 1 | \n",
" 6 | \n",
" 2 | \n",
" 1704463270 | \n",
"
\n",
" \n",
" 13 | \n",
" 202 | \n",
" 2 | \n",
" 2 | \n",
" 17 | \n",
" 18 | \n",
" 1704463270 | \n",
"
\n",
" \n",
" 14 | \n",
" 210 | \n",
" 1 | \n",
" 1 | \n",
" 6 | \n",
" 18 | \n",
" 1704463290 | \n",
"
\n",
" \n",
" 15 | \n",
" 210 | \n",
" 1 | \n",
" 2 | \n",
" 6 | \n",
" 2 | \n",
" 1704463290 | \n",
"
\n",
" \n",
" 16 | \n",
" 210 | \n",
" 2 | \n",
" 2 | \n",
" 5 | \n",
" 2 | \n",
" 1704463290 | \n",
"
\n",
" \n",
" 17 | \n",
" 210 | \n",
" 3 | \n",
" 3 | \n",
" 7 | \n",
" 4 | \n",
" 1704463290 | \n",
"
\n",
" \n",
" 18 | \n",
" 210 | \n",
" 4 | \n",
" 4 | \n",
" 8 | \n",
" 3 | \n",
" 1704463290 | \n",
"
\n",
" \n",
" 19 | \n",
" 201 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 3 | \n",
" 1704463330 | \n",
"
\n",
" \n",
" 20 | \n",
" 201 | \n",
" 2 | \n",
" 2 | \n",
" 5 | \n",
" 2 | \n",
" 1704463330 | \n",
"
\n",
" \n",
" 21 | \n",
" 201 | \n",
" 3 | \n",
" 3 | \n",
" 6 | \n",
" 2 | \n",
" 1704463330 | \n",
"
\n",
" \n",
" 22 | \n",
" 201 | \n",
" 4 | \n",
" 4 | \n",
" 6 | \n",
" 1 | \n",
" 1704463330 | \n",
"
\n",
" \n",
" 23 | \n",
" 201 | \n",
" 5 | \n",
" 5 | \n",
" 7 | \n",
" 4 | \n",
" 1704463330 | \n",
"
\n",
" \n",
" 24 | \n",
" 211 | \n",
" 1 | \n",
" 1 | \n",
" 6 | \n",
" 2 | \n",
" 1704463335 | \n",
"
\n",
" \n",
" 25 | \n",
" 211 | \n",
" 2 | \n",
" 2 | \n",
" 17 | \n",
" 18 | \n",
" 1704463335 | \n",
"
\n",
" \n",
" 26 | \n",
" 178 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
" 1704463360 | \n",
"
\n",
" \n",
" 27 | \n",
" 178 | \n",
" 2 | \n",
" 2 | \n",
" 7 | \n",
" 3 | \n",
" 1704463360 | \n",
"
\n",
" \n",
" 28 | \n",
" 178 | \n",
" 3 | \n",
" 3 | \n",
" 5 | \n",
" 2 | \n",
" 1704463360 | \n",
"
\n",
" \n",
" 29 | \n",
" 178 | \n",
" 4 | \n",
" 4 | \n",
" 6 | \n",
" 1 | \n",
" 1704463360 | \n",
"
\n",
" \n",
" 30 | \n",
" 177 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
" 1704463370 | \n",
"
\n",
" \n",
" 31 | \n",
" 177 | \n",
" 2 | \n",
" 2 | \n",
" 7 | \n",
" 3 | \n",
" 1704463370 | \n",
"
\n",
" \n",
" 32 | \n",
" 177 | \n",
" 3 | \n",
" 3 | \n",
" 17 | \n",
" 18 | \n",
" 1704463370 | \n",
"
\n",
" \n",
" 33 | \n",
" 177 | \n",
" 4 | \n",
" 4 | \n",
" 5 | \n",
" 1 | \n",
" 1704463370 | \n",
"
\n",
" \n",
" 34 | \n",
" 206 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
" 1704463410 | \n",
"
\n",
" \n",
" 35 | \n",
" 206 | \n",
" 2 | \n",
" 2 | \n",
" 17 | \n",
" 18 | \n",
" 1704463410 | \n",
"
\n",
" \n",
" 36 | \n",
" 206 | \n",
" 3 | \n",
" 3 | \n",
" 8 | \n",
" 4 | \n",
" 1704463410 | \n",
"
\n",
" \n",
" 37 | \n",
" 206 | \n",
" 4 | \n",
" 4 | \n",
" 17 | \n",
" 18 | \n",
" 1704463410 | \n",
"
\n",
" \n",
" 38 | \n",
" 176 | \n",
" 1 | \n",
" 1 | \n",
" 8 | \n",
" 4 | \n",
" 1704463431 | \n",
"
\n",
" \n",
" 39 | \n",
" 176 | \n",
" 2 | \n",
" 2 | \n",
" 8 | \n",
" 3 | \n",
" 1704463431 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no phas_A phas_B move_A move_B start_unix\n",
"0 176 1 1 8 4 1704463240\n",
"1 176 2 2 8 3 1704463240\n",
"2 176 3 3 5 18 1704463240\n",
"3 206 1 1 8 4 1704463250\n",
"4 206 2 2 17 18 1704463250\n",
"5 206 3 3 8 4 1704463250\n",
"6 206 4 4 17 18 1704463250\n",
"7 175 1 1 8 4 1704463270\n",
"8 175 2 2 7 3 1704463270\n",
"9 175 3 3 6 1 1704463270\n",
"10 175 3 4 6 2 1704463270\n",
"11 175 4 4 5 2 1704463270\n",
"12 202 1 1 6 2 1704463270\n",
"13 202 2 2 17 18 1704463270\n",
"14 210 1 1 6 18 1704463290\n",
"15 210 1 2 6 2 1704463290\n",
"16 210 2 2 5 2 1704463290\n",
"17 210 3 3 7 4 1704463290\n",
"18 210 4 4 8 3 1704463290\n",
"19 201 1 1 8 3 1704463330\n",
"20 201 2 2 5 2 1704463330\n",
"21 201 3 3 6 2 1704463330\n",
"22 201 4 4 6 1 1704463330\n",
"23 201 5 5 7 4 1704463330\n",
"24 211 1 1 6 2 1704463335\n",
"25 211 2 2 17 18 1704463335\n",
"26 178 1 1 8 4 1704463360\n",
"27 178 2 2 7 3 1704463360\n",
"28 178 3 3 5 2 1704463360\n",
"29 178 4 4 6 1 1704463360\n",
"30 177 1 1 8 4 1704463370\n",
"31 177 2 2 7 3 1704463370\n",
"32 177 3 3 17 18 1704463370\n",
"33 177 4 4 5 1 1704463370\n",
"34 206 1 1 8 4 1704463410\n",
"35 206 2 2 17 18 1704463410\n",
"36 206 3 3 8 4 1704463410\n",
"37 206 4 4 17 18 1704463410\n",
"38 176 1 1 8 4 1704463431\n",
"39 176 2 2 8 3 1704463431"
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"print(movement.start_unix.max() - movement.start_unix.min())\n",
"display(movement[:40])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# C. 5분 간격으로 신호이력 수집 및 통합테이블 생성"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" start_hour | \n",
" start_minute | \n",
" dura_A1 | \n",
" dura_A2 | \n",
" dura_A3 | \n",
" dura_A4 | \n",
" dura_A5 | \n",
" dura_A6 | \n",
" dura_A7 | \n",
" ... | \n",
" dura_B1 | \n",
" dura_B2 | \n",
" dura_B3 | \n",
" dura_B4 | \n",
" dura_B5 | \n",
" dura_B6 | \n",
" dura_B7 | \n",
" dura_B8 | \n",
" cycle | \n",
" offset | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 0 | \n",
" 0 | \n",
" 37 | \n",
" 39 | \n",
" 55 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" ... | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 59 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 7 | \n",
" 0 | \n",
" 40 | \n",
" 42 | \n",
" 55 | \n",
" 33 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" ... | \n",
" 40 | \n",
" 42 | \n",
" 29 | \n",
" 59 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 170 | \n",
" 40 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 9 | \n",
" 0 | \n",
" 43 | \n",
" 45 | \n",
" 55 | \n",
" 37 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" ... | \n",
" 43 | \n",
" 45 | \n",
" 33 | \n",
" 59 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 180 | \n",
" 28 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 18 | \n",
" 30 | \n",
" 46 | \n",
" 48 | \n",
" 55 | \n",
" 41 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" ... | \n",
" 46 | \n",
" 48 | \n",
" 37 | \n",
" 59 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 190 | \n",
" 18 | \n",
"
\n",
" \n",
" 4 | \n",
" 176 | \n",
" 0 | \n",
" 0 | \n",
" 37 | \n",
" 73 | \n",
" 40 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" ... | \n",
" 37 | \n",
" 73 | \n",
" 40 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 150 | \n",
" 131 | \n",
"
\n",
" \n",
"
\n",
"
5 rows × 21 columns
\n",
"
"
],
"text/plain": [
" inter_no start_hour start_minute dura_A1 dura_A2 dura_A3 dura_A4 \\\n",
"0 175 0 0 37 39 55 29 \n",
"1 175 7 0 40 42 55 33 \n",
"2 175 9 0 43 45 55 37 \n",
"3 175 18 30 46 48 55 41 \n",
"4 176 0 0 37 73 40 0 \n",
"\n",
" dura_A5 dura_A6 dura_A7 ... dura_B1 dura_B2 dura_B3 dura_B4 \\\n",
"0 0 0 0 ... 37 39 25 59 \n",
"1 0 0 0 ... 40 42 29 59 \n",
"2 0 0 0 ... 43 45 33 59 \n",
"3 0 0 0 ... 46 48 37 59 \n",
"4 0 0 0 ... 37 73 40 0 \n",
"\n",
" dura_B5 dura_B6 dura_B7 dura_B8 cycle offset \n",
"0 0 0 0 0 160 57 \n",
"1 0 0 0 0 170 40 \n",
"2 0 0 0 0 180 28 \n",
"3 0 0 0 0 190 18 \n",
"4 0 0 0 0 150 131 \n",
"\n",
"[5 rows x 21 columns]"
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" end_unix | \n",
" ddur_1 | \n",
" ddur_2 | \n",
" ddur_3 | \n",
" ddur_4 | \n",
" ddur_5 | \n",
" ddur_6 | \n",
" ddur_7 | \n",
" ddur_8 | \n",
" cycle | \n",
" offset | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 206 | \n",
" 1704380519 | \n",
" 33 | \n",
" 35 | \n",
" 26 | \n",
" 26 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 120 | \n",
" 10 | \n",
"
\n",
" \n",
" 1 | \n",
" 211 | \n",
" 1704380525 | \n",
" 28 | \n",
" 97 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 125 | \n",
" 45 | \n",
"
\n",
" \n",
" 2 | \n",
" 178 | \n",
" 1704380540 | \n",
" 38 | \n",
" 39 | \n",
" 40 | \n",
" 23 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 140 | \n",
" 50 | \n",
"
\n",
" \n",
" 3 | \n",
" 201 | \n",
" 1704380540 | \n",
" 24 | \n",
" 24 | \n",
" 17 | \n",
" 58 | \n",
" 17 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 140 | \n",
" 133 | \n",
"
\n",
" \n",
" 4 | \n",
" 202 | \n",
" 1704380540 | \n",
" 39 | \n",
" 101 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 140 | \n",
" 103 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
"0 206 1704380519 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": [
"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(plan.head()) \n",
"display(history.head())\n",
"# plan은 A, B가 통합된 형식으로 history는 분리된 형식으로 표시되었음."
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" end_unix | \n",
" ddur_1 | \n",
" ddur_2 | \n",
" ddur_3 | \n",
" ddur_4 | \n",
" ddur_5 | \n",
" ddur_6 | \n",
" ddur_7 | \n",
" ddur_8 | \n",
" cycle | \n",
" offset | \n",
" diff | \n",
"
\n",
" \n",
" \n",
" \n",
" 725 | \n",
" 175 | \n",
" 1704391761 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 161 | \n",
"
\n",
" \n",
" 736 | \n",
" 175 | \n",
" 1704391920 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 746 | \n",
" 175 | \n",
" 1704392080 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 755 | \n",
" 175 | \n",
" 1704392240 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 765 | \n",
" 175 | \n",
" 1704392399 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 777 | \n",
" 175 | \n",
" 1704392560 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 161 | \n",
"
\n",
" \n",
" 788 | \n",
" 175 | \n",
" 1704392721 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 161 | \n",
"
\n",
" \n",
" 799 | \n",
" 175 | \n",
" 1704392880 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 809 | \n",
" 175 | \n",
" 1704393040 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 819 | \n",
" 175 | \n",
" 1704393200 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 820 | \n",
" 175 | \n",
" 1704393231 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 31 | \n",
"
\n",
" \n",
" 831 | \n",
" 175 | \n",
" 1704393390 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 840 | \n",
" 175 | \n",
" 1704393550 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 851 | \n",
" 175 | \n",
" 1704393710 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 862 | \n",
" 175 | \n",
" 1704393870 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 872 | \n",
" 175 | \n",
" 1704394030 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 881 | \n",
" 175 | \n",
" 1704394189 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 892 | \n",
" 175 | \n",
" 1704394350 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 161 | \n",
"
\n",
" \n",
" 903 | \n",
" 175 | \n",
" 1704394510 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 912 | \n",
" 175 | \n",
" 1704394670 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
"725 175 1704391761 37 39 25 30 29 0 \n",
"736 175 1704391920 37 39 25 30 29 0 \n",
"746 175 1704392080 37 39 25 30 29 0 \n",
"755 175 1704392240 37 39 25 30 29 0 \n",
"765 175 1704392399 37 39 25 30 29 0 \n",
"777 175 1704392560 37 39 25 30 29 0 \n",
"788 175 1704392721 37 39 25 30 29 0 \n",
"799 175 1704392880 37 39 25 30 29 0 \n",
"809 175 1704393040 37 39 25 30 29 0 \n",
"819 175 1704393200 37 39 25 30 29 0 \n",
"820 175 1704393231 37 39 25 30 29 0 \n",
"831 175 1704393390 37 39 25 30 29 0 \n",
"840 175 1704393550 37 39 25 30 29 0 \n",
"851 175 1704393710 37 39 25 30 29 0 \n",
"862 175 1704393870 37 39 25 30 29 0 \n",
"872 175 1704394030 37 39 25 30 29 0 \n",
"881 175 1704394189 37 39 25 30 29 0 \n",
"892 175 1704394350 37 39 25 30 29 0 \n",
"903 175 1704394510 37 39 25 30 29 0 \n",
"912 175 1704394670 37 39 25 30 29 0 \n",
"\n",
" ddur_7 ddur_8 cycle offset diff \n",
"725 0 0 160 57 161 \n",
"736 0 0 160 57 159 \n",
"746 0 0 160 57 160 \n",
"755 0 0 160 57 160 \n",
"765 0 0 160 57 159 \n",
"777 0 0 160 57 161 \n",
"788 0 0 160 57 161 \n",
"799 0 0 160 57 159 \n",
"809 0 0 160 57 160 \n",
"819 0 0 160 57 160 \n",
"820 0 0 160 57 31 \n",
"831 0 0 160 57 159 \n",
"840 0 0 160 57 160 \n",
"851 0 0 160 57 160 \n",
"862 0 0 160 57 160 \n",
"872 0 0 160 57 160 \n",
"881 0 0 160 57 159 \n",
"892 0 0 160 57 161 \n",
"903 0 0 160 57 160 \n",
"912 0 0 160 57 160 "
]
},
"execution_count": 11,
"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": 12,
"metadata": {},
"outputs": [],
"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"
]
},
{
"cell_type": "code",
"execution_count": 13,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" start_hour | \n",
" start_minute | \n",
" ddur_1 | \n",
" ddur_2 | \n",
" ddur_3 | \n",
" ddur_4 | \n",
" ddur_5 | \n",
" ddur_6 | \n",
" ddur_7 | \n",
" ddur_8 | \n",
" cycle | \n",
" offset | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 0 | \n",
" 0 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 7 | \n",
" 0 | \n",
" 40 | \n",
" 42 | \n",
" 29 | \n",
" 26 | \n",
" 33 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 170 | \n",
" 40 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 9 | \n",
" 0 | \n",
" 43 | \n",
" 45 | \n",
" 33 | \n",
" 22 | \n",
" 37 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 180 | \n",
" 28 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 18 | \n",
" 30 | \n",
" 46 | \n",
" 48 | \n",
" 37 | \n",
" 18 | \n",
" 41 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 190 | \n",
" 18 | \n",
"
\n",
" \n",
" 4 | \n",
" 176 | \n",
" 0 | \n",
" 0 | \n",
" 37 | \n",
" 73 | \n",
" 40 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 150 | \n",
" 131 | \n",
"
\n",
" \n",
" 5 | \n",
" 176 | \n",
" 7 | \n",
" 0 | \n",
" 37 | \n",
" 93 | \n",
" 40 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 170 | \n",
" 153 | \n",
"
\n",
" \n",
" 6 | \n",
" 176 | \n",
" 9 | \n",
" 0 | \n",
" 37 | \n",
" 103 | \n",
" 40 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 180 | \n",
" 169 | \n",
"
\n",
" \n",
" 7 | \n",
" 176 | \n",
" 18 | \n",
" 30 | \n",
" 37 | \n",
" 113 | \n",
" 40 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 190 | \n",
" 185 | \n",
"
\n",
" \n",
" 8 | \n",
" 177 | \n",
" 0 | \n",
" 0 | \n",
" 36 | \n",
" 20 | \n",
" 68 | \n",
" 26 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 150 | \n",
" 35 | \n",
"
\n",
" \n",
" 9 | \n",
" 177 | \n",
" 7 | \n",
" 0 | \n",
" 40 | \n",
" 25 | \n",
" 71 | \n",
" 34 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 170 | \n",
" 33 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"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",
"5 176 7 0 37 93 40 0 0 \n",
"6 176 9 0 37 103 40 0 0 \n",
"7 176 18 30 37 113 40 0 0 \n",
"8 177 0 0 36 20 68 26 0 \n",
"9 177 7 0 40 25 71 34 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 \n",
"5 0 0 0 170 153 \n",
"6 0 0 0 180 169 \n",
"7 0 0 0 190 185 \n",
"8 0 0 0 150 35 \n",
"9 0 0 0 170 33 "
]
},
"execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"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]"
]
},
{
"attachments": {
"image.png": {
"image/png": "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UaEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEeUKEWERERERER6QEVahEREREREZEesJsdYDBrbW2ltraWjo4O6urqaG9vx2azYbGA3+ejuqaWYDBodkw5TU6nE1dyMg67nUDAD1iIjo4mOjqa2LgEUtMziQp3mh1TRERERETOkAr1WdRyuJXKijKqq2uora2lqamJxsZG3G73UYUaixWvz09dTZUK9TnI6XSSnJyM3W7H0+XH4bARHRVBVFQ0sfEuEpPTSI6PICUlhaSkJHJycoiMjDQ7toiIiIiInCaLYRiG2SEGqkAgQGtrK62trVTVNLJ9xzbWfbCGvXv3ARAXF0dxcTGJiYkMGTKE+Ph4/D4ffqzYHBEUFeZjt2lW/rmms7OT/fv34/Z48BkhRIbZqasup66+gZqaGjZu3Mjhw4cxDIP8/Hxmz57NmDFjiI2N/Wwk22azmf02RERERETkJFSo+4DP56O9vZ3NmzezatUq1q1bR3PLYYbk5zN79gWMHz+e2NhYHA4HYWFhOBwOQkNDsdvtGIaBAVgsVqwWs9+J9JRhGASDQQysWK3g83rx+Xz4fF46Ojrw+fzU1NSwbt061q5dy969e0lOTmbGjBlMnTqVyZMnExISgt2uSSQiIiIiIv2VCnUva2pq4oknnuCNN94gLi6OnJwcxo4dS05ODgkJ8WRmZhMTE212TOknmpqaqKyspKGhgerqakpKSti2bRsej4e5c+fy1a/eSmys/r6IiIiIiPRHKtS9xOv18sQTT7Bq1SpSU1MZNmwYWVlZ5ObmUlBQoCm8clKBQIB9+/bx8ccfU7KvlH0lu2hvb2PmzFnccvONhIVHmB1RREREREQ+R4W6Fzz99NN8+OGHeDwesrKymDt3LhMmTDA7lpzjVq9ew6pVK6mpriFgCeW86dO5+boFWKy6r15EREREpD9Qoe6hQCDAihUr2LJlCzt37sThcHD99dcze/Zss6PJALPqnXd4/Onn8LjdTB0zivETJujvmYiIiIhIP6BC3QPNzc0sW7aMV155hfb2du655x4uueQSs2PJAObHy5JXXua5xc8TERHBVVddxYUXXkhUVJTZ0UREREREBi0V6tPU0NDASy+9xIoVK7jmmmuYM2cO0dHRWCxaklv6lmEEaWvvYOnrr/Pyyy8zZ84crrjiCpKTk82OJmeJ1+ulrq6Ojo4O9E/3wGWxWAgPDyc5OZmQkBCz44iIiMgJqFCfhpKSEh577DFaW1u5++67KSgo0IcdOes8Hg8bNmzg17/+NcXFxdxyyy1kZWWZHUvOgg0bNnDHHXfQ0tKii3gDmGEYRERE8MgjjzBz5kyz44iIiMgJaJPbU7Rt2zb+9Kc/YbVauf/++ykoKDA7kgxSoaGhTJ8+nfDwcJ5//nkeeughbr75FqZMmWx2NOljlZWVVFdX86tf/Yr4+Hiz40gf6ezs5K677qK0tFSFWkREpJ9ToT4Ff/vb31ixYgXDhg3jyiuvVJmWfmHcuHGEhoby6quv8uijj1BeXsY111xjdizpQz6fj9jYWObPn4/T6TQ7jvSh//qv/8Ln85kdQ0RERE5ChfokHnvscTZsWM+oUaO49tprSUtLMzuSyGcKCwtJTEzkhReeZ/ny5QSDQRYtWmR2LOkjVqsVwzBobm7WvfMDWFtbG8FgEKu2yBMREen3VKiPw+v1smzZMt5++y0WLFjAtddeqw830i+5XC7uvvsenn32WV599VWcTicLFiwwO5aIiIiIyICnQt2NYDDIhg0beO6551i0aBGXX365yrT0e4sWLcLn8/H888+Tk5PDuHHjzI4kIiIiIjKgqSV2Y+fOnSxZsoTx48cze/ZsreQt5wSLxcK8efOYPHkyv/jFL9i/f7/ZkUREREREBjQV6i+oqqrixRdfpK2tjRtvvJG4uDizI4mcsoSEBK688krS0tJYsmQJtbW1ZkcSERERERmwVKi/YOnSpRw8eJAHHngAl8tldhyR05afn89NN93E7t27eeONN2htbTU7koiIiIjIgKRC/TmLFy/mvffe4/bbb2fIkCFmxxHpEYvFQlFREbfccguvvPIKq1atMjuSiIiIiMiApEXJPrFmzRqWL1/OlClTmDFjhtlxRM7YrFmzPlsPwOVyMWXKFLMjiYiIiIgMKBqhBgzD4C9/+QsxMTFcd911ZscR6TV33HEHPp+PV199lba2NrPjiIiIiIgMKCrUwIoVK2jvcDNj5iwSEhLMjiPSa6xWK4sWLaKuro4333zT7DgiIiIiIgPKoC/UHR0dPP74YxSNHc+VX1pgdhyRXnf55Zdjs9lYunQpPp/P7DgiIiIiIgPGoC7UgUCAlStX4nA4mTppHOGhuqVcBh6LxcLs2bMJCwtj9erVZscRERERERkwBnWhbm9v54UXXmDChAlMnDDe7DgifWbevHmkp2ewePFibaMlIiIiItJLBm2h7ujo4O2336azs5OpU6cSHR1jdiSRPhMVFcW4cePo6upi5cqVGIZhdiQRERERkXPeoC3UtbW1PPnkk1x22WWMGjXK7DgifW7KlMlMmDBBo9QiIiIiIr1kUBbqYDDIvn37qKqqYsaMGURGRpodSaTPxcfHU1hYSENDA3v27CEYDJodSURERETknDYoC3VTUxPbt29n7NixREdHmx1H5KwZMmQI06ZNY+XKlbS3a19qEREREZEzMSgLdWlpKVu2bGHWrFnExOjeaRk88vPzKS4ew4oVK2htbTc7joiIiIjIOW1QFuqKigr27dvHtGnTCAsLMzuOyFljs9lISUmhsbGRw4d1H7WIiIiIyJkYdIXa7/dTW1tLbGwsSUlJWCwWsyOJnFUpKcnk5+fz0UcfaHEyEREREZEzMOgKdUlJCXv27GHq1KmEhISYHUfkrHO5XEyYMIHt27fT3NxsdhwRERERkXPWoCvUGzZsoKSkhLlz5+JwOMyOI3LWxcTEMHXqVNatW0dNTa3ZcUTOXKCUjcv/j2df2k5jQHusi4iIyNkz6Ap1RUUFXq+X4uJirNZB9/ZFcDgc5OXl0dnZSWVlJYFAwOxIIj3kpmnHRna8+hTPv/gSz7y4jSbtBiciIiJnkd3sAGdTZ2cnHR0dZGZm4nQ6zY5zVrlrtlPWasXpKiAv7tQuJASbdrO+NZXRubGEn+4J/W5aa/exsyOBIRnJJEXYjnrY8LbTVL6dans+WakuYnsw+94ItFFXsoOW8HyS013EfXHCQdBHS9kmKgKpuFKzSI44/XN88mY4XLaT8hYr4VkjyT/F719/5nQ6mTBhAlVVlRw+fJj4+HizI8mAdZjKnbsob48ia2g6xsEd7GqKILegkLz0UOyf/Ti5aa3cw6YNB2juZpDZGpVCzsjxFKU6+efKF17ayvZTVdECUalEGU5sx75UREREpM8MqkJdWlpKZ2cneXl5Zkc5Y4a/i9a6fVQ1B/B/fkTGYsNuDyEsNI7k3ITPinDTih/zq/dtJF29mAcv/MLFBE8jFVUNNHf4/nmYjmp2/+MXPLB/JvcvvITz80I/e8wWEkFCRj6uiBNNcWih/I0fc/OOefz6WzczL//oR/3NB1n7hxv5Y8z/44GvXs3MjNP/HlioZM3PbmFFwc+55Z4vMfULhdroamP74tv4ZcctLPzKt7m+8J+PBf3tHKooo74tgP8LR7XaQwiLSCA5I55ImwXoZNez3+Xna0IZdt8zPHThub8yfGhoKPn5+dTU1NDY2KhCLX3Ej6dlF+/+5ts8tc/FxK/fSfY7v+MP73Qw/Vt/4N++kk/aZxe6DlO35RUe/e7f2N7NKLNjyCyuua+A0UcV6hiyL7uKLH8O7sf+wbObDQzDALTYpIiIiJwdg6pQNzQ0EAwGycjoQXvrZ4JtlXz0+M3810uHafD8888tBPH5w4nOupmfPvcVzgt3gAE1DS20dEYT1910yLJ/8Nsf/4H/+6juk4NYsQbdHK6qpN77Ef+95q88GmolGDwybBSdP5mb/vtp7pxk4bOaHfTidrvxeD85QWsNtY0ttB9qoL6miub4yCOHtjsJC4/AahgEfG48Pj+nfMtjwIvH3Ynbd+QFvrYaGlraaWmqp66qmebEI98Bqz2UiKhQbEDQ56bL58P/hXN4W3byjwfv4pHVLRw66rEgQV8YkcnX8+DS+5iXFIYNCPg8dHks+AbI7GiHw0FKSgoHDx7USt/Sh5o5uMvJ0KwCLnIeYG25lemLvsf/ZD/ECpeXRj+kffbcJHIvvJc/rLwdX3eHsocQHhV9zEU8i9WGxenAZlWJFhERkbNvUBXq+vp6PB4PLpfL7ChnzBqZytgbHuYXs310fdJhLRYr1ooVPP/mGp5vh4qHv8QN73VQ2Qbe5jI6Cq9jTHeDqxmz+cq387nksBeLxYLF4qO17FUeufm3vMVw5nzrPm6cmE64YYARxBoeS8YwC0eNc9e+w+Jf/5bfvll65OugF3dzDYc8u/nhuif5VeiRj8FJ4+bx9R/+D1dF2HE6Q3DabZzy5+CylTz/+5/xi2WNABhBN4ermmj/8EHWL32EI7PKE8kZ91V+8NebGBdix2EPwWG3Y/vCOZzRw5n9rV+Td6MP71GPVLL75Tf484uHaHP7CHCkUFvtThxOx+emp57bQkJCyM7OZsmSJTQ2NpodRwasGDILCmipiiGk1UHh5EmMHRakauNQxo4OISHy88+1YQ+LITEs5vRPYxgYgMViwaqtEEVEROQsGlSFuqKiAp/Px7Bhw8yOcsYsjnCShk0n6QtvpXXFu7xaaXDR169mZmYy8YVeWr1Q997vWOFx4/V3c7CIdEaMTWfEp193fsTLy/cQfd0PeCStiVWNBu1ZM7ks5wSBoocy8ZIbuXtIy5GvPY2UfvAif6weyWUXTGZc2pGbpMNThjI6FvAaBE93Md74oYy99GvcPbQTgICnnA3PPEZJyiVMnjWB4ZEA4cSmFpMOWAJBjncKqzOW9KLppB/zSBPp1aUs+4d7QP9wWK1WkpKSqK+vp6Wlxew4MmA5iYxzUN6ahL9rIhdMisLuWc/a5gwmbvyIZksEttxkUpwADZSufJaf/8+rlHTzg2vPnsS8W/+du6dFHzuh2xJOaGgIdkc4kQ4VahERETl7BnJnOMahQ4dwu93ExPRgBOQc0LHtj/z2iTfYm3sL/3FpHiMT8xg568hjRsZqGpd24OmuUH+qajl/+91zrKgOJ61gLtd872auSd5D7Kvv8s6Pv8o/YsYz69Y7uWVUN8v+ROYx7sI8xl346R8c5kDsTl7cdgULb7+WC9OOfrqvLnj6hTo2n6IL8yn67BwH+fuWF1hRdBU33XsJY774fEcs0RE27G4D45TP1UJrh4cTfZsGivj4BIJBA5+v2wm2Ir3Ds5mP6p3URM/ha2GttO5czhuvvcmm2mu5sdhJ2mezPpyExmUwbMwYwror1Mn5ZMQc+yurYeNy1ix5nMVLt/NeUxJdPz/IvIu+xoLR4UQPqt9wIiIiYoZB9XEjEAhgsVgG4ArfQWrefpr//cUTbHXN4dbv38mkyIOsf3YJ75V68QBNGzaxzjKJSx1Hv47WXbz98rusr27F4q2gorQFI+NC5n3zBqaEAkzixlujcDWV8ocNm1n9ws+pfs3AGTWCGVfPY0yKk26/m22Hqasrw19dSX1TG6RF9fq79ne58RsGTYfqqK8FUqCtbB1r31zBpkOAz03p6jqqR4QRespbjscRGxmKHTfHHd4eIKKijsy31bZZ0qcMG2lTxhLmGE0MTnAO4fyZo2icOoucvDjiP/stFEPK2AV8a+yC0zp80NuFpz2SjMKJzAsN4nV30unrwQwYERERkR4YdIXaZrMRHn7am0D1W10HVrBm+3refOwfrPTO4urbH+C6IeBtqGfv+0t5Y0MnbUBH5T7q8scdvSI4VrAfpnzbOlbtqCX94m9w7zNfouiYsxQw599+yxwq2LT4f/nuMx8T4bIx4mrHcbaoMfC1lPLBivXUfJxGWdP1BIjq5e1sDOwtleyqbGZDfSlzmoKQYsXduI9tb/+dv1eAEfTTVt0GeQ4cX7j3OehtoWrXVvZUttDm/fzCaNXseXsjpYdz8VkG9lrBFosFj8eN3z8YxuPFNGHFXHLBP7+MKVrEA48u6rXDJ0+9guunXsH1vXZEERERkVM3qAp1V1cXHo+HYLC7pa7PIX43rfWllFY3suWF7/PnZZ3ELPwf/nTfXMZ9cq3AmTSZ6x9d+dmHzJrX7uePW23Eh39aEQ2MQCt1ZdGMv+4eRhsGFpsDY/sOthMkGAx+bpq0BavNipUgttE38+CDQSwWO/b6SppjU4kPtR+98m6wnurNz/HqVhdxnl1s2l3GnvNSKTjlUeJTYDRTv+Ipni+1U3V4I7t37KStYDSu8Yu479mF3GuA4W7m/f89n1+522g/euUxPIc28+r3F/HLjaEEo8II+ewNGBhGFHGjZpAQ7jjBtmADg0ULOImIiIiI9NigKtSGYWCz2QgJCTE7yplpK2Xzk9/inudqiLvse/zH48XkpiWQEGin/bAPXxDAis3xz1WpI6fdx9cnOQj57KbCIL72dTx/74/5W8UhOqwWjIAfv/8E21hZrNhsdhx2K4bhwB5yBf/+wr0sGBLP57+j7SUfsnzFB8Td8Usecb7KI9tXsHRtHsNmuXptlLq99H2ef/kjXFfcw8Xlb1D65mIW5/2EuyY6sdmtR85jiyDcacXqOfYNBbxugoaFSXf8kpuunsDIz1YbtmC1OXCGRhETH9rLo+oiIiIiIjKQDKpCDeD3+/F6vYSGhp78yf1VZCajr/kJv5vpJTx7ApHrvstvHlzN2krfF6Z0/5MtJJL4yddy67/cyXWjHIAVe8RYvvTgz5nQ6SVgtZz69GbDIGhYsNpTGJIWxVEDz3Xv8cbfnuR3VfP50XeuYG5kHk3338Wrf7OTmfodru2FBdaDdRt449Hv8dv6i/nX797KgoR0fn3rT3ju5y6yH36Ay1M/idnVhddvYBjdvTMLNmcY8ZlDGFaYTbYGakVERERE5DQNqkLtdDpxOBzn/iJMjkji8ycyPf/Il+3eL3P1Hedxvuf4q1lX/eM/eaFsFZtr7uC6UQAWrPZEciYmcqLdsE5Hw7rH+cO//57XOidz5a/u4OK0UOyMZ9Fd9+N/7Pc8ek85u/7lAX60IAfbKW8+fbSOfa/xl/t/wGMbXVz4u3uYX5RCkn0ht35jB6U//Q333NVB3Y9+wK2jrVhsJ1tXzMDv6aSjHej9NdP6Pav1yPQF49SXQBcRERERkc8ZVIU6NjaWhoYGWltbiYiIMDtOr3G31FC592NK6o+/LVbj/kM0Oqx032MrWfenZ3j5vY+pPdGJ7KFEROUz/Py53HhlIXGfeyiw7xUe/+Ej/G5jGtc/ejf3TnUR9sljMWMWcuNtXup/8BOe/t8WgrG/5vujLDhtp1eq23e+xOO/+iG/35XDl77zn3zryhG4AIggb8F93Ge10PnQMzzygIfYhx9iXo4T5/HmbBsGWCyERMYSd9IybRmQKwa3tLRgsVhwOHrz5nYRERERkcFjUBXq+Ph47HY7DQ0NpKammh2nlxiUL/8pjy5upDlpKqOSun+WLWMes4suYXZud8tsBfF5Ouloa6PtRKdq/JC3d67A3pzDZVcUEvf5PhwMEF+0kDsWLuDem0bxxZ2+Y8bfwL/9BGKXbOWQN0gwaJz2rlSG30tY1gUs+um3+P7CfI6+Ez6N8V/+Eb+JSOevr9XT5QfjuDeDg8UK7kM1rH36f/mfvXlkdHcHgMUOwy/i+jm5RIYMvLupm5ubiYyMHFCr3ouIiIiInE2DqlDHxMRgtVppbGw0O0rvMYJYbCFkzfs637jnh9yU1ZODZHHeXT/ivLtO8rSSP/GDnzzLS047FoOj9pSyDbuKOx+66oQvjxhzA/865gYAfHX1+E5QeLsTVXwddxZfd4JnhJN58b3858WffOn24TvO7H5nZDr50y4j473dbH1rJ5u7fxZcMIQ5M7OItA2s9b4Nw+Dw4cMkJCQQFTUI57uLiIiIiPSCQVWoXS4XdrudyspKs6P0KiPgo61yD9vf38GO1hM8z3AQHptMWmbsZ9OxT4vXTyAI58pOSyeq6864Yr70kyVcGQyceLTcasNubecDtw8G0JrfXV1dlJeXk5iYSFxc3MlfICIiIiIixxhUhTo9PZ2wsLCBVagtNkJi07DsXMkza9ex5IS3w+YyccG3+K+fXc6InpzL78fn8+MLBE97uvYxDINgwIc/EDzuQmq9wQj48AcC3d4DbbFYsNjsWE+hJwc/3VLsHN/C/FNer5eysjJcLhfx8fFmxxEREREROScNqkKdmppKSEgIFRUVZkfpVflX/4ZfTW3iUEfXcac4HxFGTHI2mWdyMgunvr3WSY4Dlr4f7bZYOI0NwU50GCyW3nrz5vP5fNTU1JCamqop3yIiIiIiPTSoCnVMTAwOh52Skj1mR+lVYYn5DEvM7/sT5c3lK98ew6X2PFLPsFjaYnOYctufSHGMZGhi78T7IoszkpHX/47/DGSR3qN7yz8VTsHCH/P92TYihzh7K56p3G43a9eu5Zvf/CYJCQlmxxEREREROScNqkJttVrJzx/C5s1b2b59OyNHjvxsL145BTG5FE7IpbAXDmUNiSZ11Bz6dK11m5OEERdy5nXRTvywaUzuhUj9gWEYVFRUEAgEyM7OxukcGBcJRERERETOtkHXJkePLiIvL4fly5fj8/nMjiNy1rW2trJ582amTJlCWlqa2XFERERERM5Zg65QZ2dnkZycwnvvvYff7zc7jshZV1NTw+rVq5kwYQLJyclmxxEREREROWcNukKdkJBAXl4e+/fvp7293ew4ImddY2MjO3fuZPjw4URGRpodR0RERETknDXoCjUcWe07NzeX7du3a5RaBhXDMKitrSU2NlbTvUVEREREztCgLNS5ubmMHTuW5cuX09LSYnYckbOmtLSUTZs2MW3aNGJiYsyOIyIiIiJyThuUhTotLY2ioiLeffddTfuWQWX//v1s376defPmaf9pEREREZEzNCgLtd1uZ8SIEaSkpLBp0yY6OjrMjiTS54LBIAcPHsTv91NUVITdPqh2zRMRERER6XWDslADZGdnc+211/L0009TWVlpdhyRPrd+/Xo2btzIggULNDotIiIiItILBm2hjoiIYObMmbS0tLBu3TpN/ZYB7+2336aiooIbb7wRm81mdhwRERERkXPeoC3UAC6Xi6997WssXbqUjRs3mh1HpM9s3bqVmpoaZs2aRVhYmNlxpIcMw8BqtRIeHm52FOlDERERWK1WDMMwO4qIiIicxKC+idLpdDJ//nyefPJJNm/ezIwZM7BaB/U1BhmADMPgsccew+12c/fdd5sdR85QZ2cnFRUVuFwus6OcFXaHEwwDv99ndpSzpq2tTWt7iIiInCMGdaGGIyMBCxcuZPPmzbz//vvMmDHD7EgivWr9+vV0dHQwefJkjWye46KioqioqGD+/Pk4HA6z45wV8TlTCAa8tFRsMjvKWRMIBCgtLSU6OtrsKCIiInISFkNzymhpaeHOO+8kJyeHBx98UPeXyoBy2223ERERwfe+9z2Sk5PNjiNnoKmpidWrV9PW1jZopgO/tjFIiAPmFA2e2UMWi4WoqCimTZumn1kREZF+btCPUAPExsZy9dVX8/LLL7NkyRIWLlxodiSRXrF8+XJaW1uZO3euPpgPAAkJCcyfP9/sGGdVQjU08wAAIABJREFUY0QVUeEObpk7OKa4i4iIyLll8FzyP4kFCxYwZcoU3nrrLbZv3252HJEztn37dl588UUuvfRSLrroIrPjiPRIR0cb7e2tZscQERER6ZYK9ScsFgvz588nJyeHxYsXU1tba3YkkR6rrq7mT3/6EykpKcyePVv3YoqIiIiI9AEV6s9JT0/noosuorOzk6eeeorOzk6zI4mctsOHD/Pyyy/jdru54YYbyMnJMTuSiIiIiMiApEL9BePHj2f+/Pls2bKFd955B6/Xa3YkkVPm9/t54403WLZsGffeey/Dhw83O5KIiIiIyIClRcm+wGazMWPGDNxuN08++STh4eFccMEFZscSOSWvv/46zz77LHfddRcFBQVmxxERERERGdBUqLsREhLCnDlzqK2t5YknniA8PJzJkyebHUvkhJYtW8Yrr7zCFVdcwZw5c8yOI9IrvN4ufPaA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"
}
},
"cell_type": "markdown",
"metadata": {},
"source": [
""
]
},
{
"cell_type": "code",
"execution_count": 14,
"metadata": {},
"outputs": [
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" end_unix | \n",
" ddur_1 | \n",
" ddur_2 | \n",
" ddur_3 | \n",
" ddur_4 | \n",
" ddur_5 | \n",
" ddur_6 | \n",
" ddur_7 | \n",
" ddur_8 | \n",
" cycle | \n",
" offset | \n",
" diff | \n",
"
\n",
" \n",
" \n",
" \n",
" 924 | \n",
" 175 | \n",
" 1704394830 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 0 | \n",
"
\n",
" \n",
" 933 | \n",
" 175 | \n",
" 1704394990 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 942 | \n",
" 175 | \n",
" 1704395150 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 953 | \n",
" 175 | \n",
" 1704395310 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 962 | \n",
" 175 | \n",
" 1704395470 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 971 | \n",
" 175 | \n",
" 1704395630 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 982 | \n",
" 175 | \n",
" 1704395790 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 993 | \n",
" 175 | \n",
" 1704395950 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 1002 | \n",
" 175 | \n",
" 1704396111 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 161 | \n",
"
\n",
" \n",
" 1014 | \n",
" 175 | \n",
" 1704396270 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 1023 | \n",
" 175 | \n",
" 1704396430 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 1033 | \n",
" 175 | \n",
" 1704396589 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 1046 | \n",
" 175 | \n",
" 1704396750 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 161 | \n",
"
\n",
" \n",
" 1055 | \n",
" 175 | \n",
" 1704396909 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 1082 | \n",
" 175 | \n",
" 1704397343 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 434 | \n",
"
\n",
" \n",
" 1093 | \n",
" 175 | \n",
" 1704397500 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 157 | \n",
"
\n",
" \n",
" 1102 | \n",
" 175 | \n",
" 1704397660 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 1114 | \n",
" 175 | \n",
" 1704397820 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 1124 | \n",
" 175 | \n",
" 1704397980 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 1133 | \n",
" 175 | \n",
" 1704398140 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 1146 | \n",
" 175 | \n",
" 1704398300 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
"924 175 1704394830 37 39 25 30 29 0 \n",
"933 175 1704394990 37 39 25 30 29 0 \n",
"942 175 1704395150 37 39 25 30 29 0 \n",
"953 175 1704395310 37 39 25 30 29 0 \n",
"962 175 1704395470 37 39 25 30 29 0 \n",
"971 175 1704395630 37 39 25 30 29 0 \n",
"982 175 1704395790 37 39 25 30 29 0 \n",
"993 175 1704395950 37 39 25 30 29 0 \n",
"1002 175 1704396111 37 39 25 30 29 0 \n",
"1014 175 1704396270 37 39 25 30 29 0 \n",
"1023 175 1704396430 37 39 25 30 29 0 \n",
"1033 175 1704396589 37 39 25 30 29 0 \n",
"1046 175 1704396750 37 39 25 30 29 0 \n",
"1055 175 1704396909 37 39 25 30 29 0 \n",
"1082 175 1704397343 37 39 25 30 29 0 \n",
"1093 175 1704397500 37 39 25 30 29 0 \n",
"1102 175 1704397660 37 39 25 30 29 0 \n",
"1114 175 1704397820 37 39 25 30 29 0 \n",
"1124 175 1704397980 37 39 25 30 29 0 \n",
"1133 175 1704398140 37 39 25 30 29 0 \n",
"1146 175 1704398300 37 39 25 30 29 0 \n",
"\n",
" ddur_7 ddur_8 cycle offset diff \n",
"924 0 0 160 57 0 \n",
"933 0 0 160 57 160 \n",
"942 0 0 160 57 160 \n",
"953 0 0 160 57 160 \n",
"962 0 0 160 57 160 \n",
"971 0 0 160 57 160 \n",
"982 0 0 160 57 160 \n",
"993 0 0 160 57 160 \n",
"1002 0 0 160 57 161 \n",
"1014 0 0 160 57 159 \n",
"1023 0 0 160 57 160 \n",
"1033 0 0 160 57 159 \n",
"1046 0 0 160 57 161 \n",
"1055 0 0 160 57 159 \n",
"1082 0 0 160 57 434 \n",
"1093 0 0 160 57 157 \n",
"1102 0 0 160 57 160 \n",
"1114 0 0 160 57 160 \n",
"1124 0 0 160 57 160 \n",
"1133 0 0 160 57 160 \n",
"1146 0 0 160 57 160 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" ddur_1 | \n",
" ddur_2 | \n",
" ddur_3 | \n",
" ddur_4 | \n",
" ddur_5 | \n",
" ddur_6 | \n",
" ddur_7 | \n",
" ddur_8 | \n",
" cycle | \n",
" offset | \n",
" end_unix | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 1704397069 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 ddur_7 ddur_8 \\\n",
"0 175 37 39 25 30 29 0 0 0 \n",
"\n",
" cycle offset end_unix \n",
"0 160 57 1704397069 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" ddur_1 | \n",
" ddur_2 | \n",
" ddur_3 | \n",
" ddur_4 | \n",
" ddur_5 | \n",
" ddur_6 | \n",
" ddur_7 | \n",
" ddur_8 | \n",
" cycle | \n",
" offset | \n",
" end_unix | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 1704397229 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 ddur_7 ddur_8 \\\n",
"0 175 37 39 25 30 29 0 0 0 \n",
"\n",
" cycle offset end_unix \n",
"0 160 57 1704397229 "
]
},
"metadata": {},
"output_type": "display_data"
},
{
"data": {
"text/html": [
"\n",
"\n",
"
\n",
" \n",
" \n",
" | \n",
" inter_no | \n",
" end_unix | \n",
" ddur_1 | \n",
" ddur_2 | \n",
" ddur_3 | \n",
" ddur_4 | \n",
" ddur_5 | \n",
" ddur_6 | \n",
" ddur_7 | \n",
" ddur_8 | \n",
" cycle | \n",
" offset | \n",
" diff | \n",
"
\n",
" \n",
" \n",
" \n",
" 0 | \n",
" 175 | \n",
" 1704394830 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 0 | \n",
"
\n",
" \n",
" 1 | \n",
" 175 | \n",
" 1704394990 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 2 | \n",
" 175 | \n",
" 1704395150 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 3 | \n",
" 175 | \n",
" 1704395310 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 4 | \n",
" 175 | \n",
" 1704395470 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 5 | \n",
" 175 | \n",
" 1704395630 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 6 | \n",
" 175 | \n",
" 1704395790 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 7 | \n",
" 175 | \n",
" 1704395950 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 8 | \n",
" 175 | \n",
" 1704396111 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 161 | \n",
"
\n",
" \n",
" 9 | \n",
" 175 | \n",
" 1704396270 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 10 | \n",
" 175 | \n",
" 1704396430 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 11 | \n",
" 175 | \n",
" 1704396589 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 12 | \n",
" 175 | \n",
" 1704396750 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 161 | \n",
"
\n",
" \n",
" 13 | \n",
" 175 | \n",
" 1704396909 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 159 | \n",
"
\n",
" \n",
" 0 | \n",
" 175 | \n",
" 1704397069 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 0 | \n",
" 175 | \n",
" 1704397229 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 14 | \n",
" 175 | \n",
" 1704397343 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 114 | \n",
"
\n",
" \n",
" 15 | \n",
" 175 | \n",
" 1704397500 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 157 | \n",
"
\n",
" \n",
" 16 | \n",
" 175 | \n",
" 1704397660 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 17 | \n",
" 175 | \n",
" 1704397820 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 18 | \n",
" 175 | \n",
" 1704397980 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 19 | \n",
" 175 | \n",
" 1704398140 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
" 20 | \n",
" 175 | \n",
" 1704398300 | \n",
" 37 | \n",
" 39 | \n",
" 25 | \n",
" 30 | \n",
" 29 | \n",
" 0 | \n",
" 0 | \n",
" 0 | \n",
" 160 | \n",
" 57 | \n",
" 160 | \n",
"
\n",
" \n",
"
\n",
"
"
],
"text/plain": [
" inter_no end_unix ddur_1 ddur_2 ddur_3 ddur_4 ddur_5 ddur_6 \\\n",
"0 175 1704394830 37 39 25 30 29 0 \n",
"1 175 1704394990 37 39 25 30 29 0 \n",
"2 175 1704395150 37 39 25 30 29 0 \n",
"3 175 1704395310 37 39 25 30 29 0 \n",
"4 175 1704395470 37 39 25 30 29 0 \n",
"5 175 1704395630 37 39 25 30 29 0 \n",
"6 175 1704395790 37 39 25 30 29 0 \n",
"7 175 1704395950 37 39 25 30 29 0 \n",
"8 175 1704396111 37 39 25 30 29 0 \n",
"9 175 1704396270 37 39 25 30 29 0 \n",
"10 175 1704396430 37 39 25 30 29 0 \n",
"11 175 1704396589 37 39 25 30 29 0 \n",
"12 175 1704396750 37 39 25 30 29 0 \n",
"13 175 1704396909 37 39 25 30 29 0 \n",
"0 175 1704397069 37 39 25 30 29 0 \n",
"0 175 1704397229 37 39 25 30 29 0 \n",
"14 175 1704397343 37 39 25 30 29 0 \n",
"15 175 1704397500 37 39 25 30 29 0 \n",
"16 175 1704397660 37 39 25 30 29 0 \n",
"17 175 1704397820 37 39 25 30 29 0 \n",
"18 175 1704397980 37 39 25 30 29 0 \n",
"19 175 1704398140 37 39 25 30 29 0 \n",
"20 175 1704398300 37 39 25 30 29 0 \n",
"\n",
" ddur_7 ddur_8 cycle offset diff \n",
"0 0 0 160 57 0 \n",
"1 0 0 160 57 160 \n",
"2 0 0 160 57 160 \n",
"3 0 0 160 57 160 \n",
"4 0 0 160 57 160 \n",
"5 0 0 160 57 160 \n",
"6 0 0 160 57 160 \n",
"7 0 0 160 57 160 \n",
"8 0 0 160 57 161 \n",
"9 0 0 160 57 159 \n",
"10 0 0 160 57 160 \n",
"11 0 0 160 57 159 \n",
"12 0 0 160 57 161 \n",
"13 0 0 160 57 159 \n",
"0 0 0 160 57 160 \n",
"0 0 0 160 57 160 \n",
"14 0 0 160 57 114 \n",
"15 0 0 160 57 157 \n",
"16 0 0 160 57 160 \n",
"17 0 0 160 57 160 \n",
"18 0 0 160 57 160 \n",
"19 0 0 160 57 160 \n",
"20 0 0 160 57 160 "
]
},
"metadata": {},
"output_type": "display_data"
}
],
"source": [
"fmins = range(midnight, next_day, 300) # fmins : unix time by Five MINuteS\n",
"m = 60 # ranges from 0 to 287, but 0 makes an error where 288 = 86400//300\n",
"present_time = fmins[m] # 현재시점\n",
"# - 5분마다 신호이력 데이터 수집해서 통합테이블 생성할때\n",
"# 1. 조회시점의 유닉스 타임을 기준으로 신호이력의 유닉스 타임이 1시간 이내인 데이터 수집\n",
"rhistory = history.copy() # recent history 1704393231\n",
"rhistory = rhistory[(rhistory.end_unix < present_time) & (rhistory.end_unix >= present_time - 3600)]\n",
"rhist = rhistory.copy()[rhistory.inter_no == 175]\n",
"rhist_diff = rhist.copy()\n",
"rhist_diff['diff'] = rhist_diff['end_unix'].diff().fillna(0).astype(int)\n",
"display(rhist_diff)\n",
"rhist = rhist.reset_index(drop=True)\n",
"new_rows = []\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",
" 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",
" # 1-1. 결측치 처리 : 인접한 두 end_unix의 차이가 계획된 주기의 두 배보다 크거나 같으면 결측이 일어났다고 판단\n",
" if next_unix - curr_unix >= 2 * cycle:\n",
" # 현재 unix를 계획된 주기만큼 늘려가면서 한 행씩 대체해나간다.\n",
" #(다음 unix와의 차이가 계획된 주기보다 작거나 같아질 때까지)\n",
" while next_unix - curr_unix > cycle:\n",
" curr_unix += cycle\n",
" # print(curr_unix)\n",
" prow = pland[(pland.inter_no==175) & (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",
" display(prow)\n",
" new_rows.append(prow)\n",
" # print(next_unix - curr_unix < 2 * cycle, next_unix - curr_unix)\n",
"rhist = pd.concat([rhist] + new_rows).sort_values(['end_unix'])\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": 18,
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"1704398300\n",
"1704398400\n"
]
}
],
"source": [
"print(rhist.end_unix.max())\n",
"print(present_time)"
]
}
],
"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
}