diff --git a/Analysis/0109_preprocess/0122_preprocess_9.ipynb b/Analysis/0109_preprocess/0122_preprocess_9.ipynb
index 347c4df3e..f965c317a 100644
--- a/Analysis/0109_preprocess/0122_preprocess_9.ipynb
+++ b/Analysis/0109_preprocess/0122_preprocess_9.ipynb
@@ -31,14 +31,14 @@
"name": "stderr",
"output_type": "stream",
"text": [
- " 0%| | 15/17280 [00:00<01:56, 148.29it/s]"
+ " 0%| | 0/17280 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
- "100%|██████████| 17280/17280 [01:11<00:00, 242.06it/s]\n"
+ "100%|██████████| 17280/17280 [00:13<00:00, 1294.28it/s]\n"
]
},
{
@@ -4728,14 +4728,14 @@
"name": "stderr",
"output_type": "stream",
"text": [
- " 0%| | 8/17280 [00:00<04:13, 68.11it/s]"
+ " 0%| | 0/17280 [00:00, ?it/s]"
]
},
{
"name": "stderr",
"output_type": "stream",
"text": [
- "100%|██████████| 17280/17280 [04:19<00:00, 66.61it/s]\n"
+ "100%|██████████| 17280/17280 [02:07<00:00, 135.82it/s]\n"
]
}
],
@@ -4923,72 +4923,9 @@
"name": "stdout",
"output_type": "stream",
"text": [
- "2024-01-05 16:40:00\n"
+ "2024-01-05 03:20:00\n"
]
- }
- ],
- "source": [
- "m = 200\n",
- "fmins = range(midnight, next_day, 300) # fmins : unix time by Five MINuteS\n",
- "present_time = fmins[m] # 현재시점\n",
- "print(datetime.fromtimestamp(present_time))\n",
- "\n",
- "# 1. 조회시점의 유닉스 타임 이전의 신호이력 수집\n",
- "rhistory = history.copy() # recent history\n",
- "rhistory = rhistory[(rhistory.end_unix < present_time)]\n",
- "# 2. 시작 유닉스 타임컬럼 생성 후 종류 유닉스 타임에서 현시별 현시기간 컬럼의 합을 뺀 값으로 입력\n",
- "# - 현시시간의 합을 뺀 시간의 +- 10초 이내에 이전 주기정보가 존재하면 그 유닉스 시간을 시작 유닉스시간 값으로 하고, 존재하지 않으면 현시시간의 합을 뺀 유닉스 시간을 시작 유닉스 시간으로 지정\n",
- "for i, row in rhistory.iterrows():\n",
- " inter_no = row.inter_no\n",
- " end_unix = row.end_unix\n",
- " elapsed_time = row[[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]].sum() // 2 # 현시시간 합\n",
- " # 이전 유닉스 존재하지 않음 : 현시시간 합의 차\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",
- " # 이전 유닉스 존재, abs < 10 : 이전 유닉스\n",
- " if abs(pre_unix - start_unix) < 10:\n",
- " start_unix = pre_unix\n",
- " # 이전 유닉스 존재, abs >=10 : 현시시간 합의 차\n",
- " else:\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",
- "rhistory[['inter_no', 'start_unix', 'cycle']][rhistory.inter_no==175]\n",
- "rhistory = rhistory[['inter_no', 'start_unix'] + [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)] + ['cycle']]\n",
- "inter_no = 201"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 14,
- "metadata": {},
- "outputs": [],
- "source": [
- "def calculate_DS(rhist, curr_unix):\n",
- " ghour_lt_curr_unix = hours[hours <= curr_unix].max() # the greatest hour less than (or equal to) curr_unix\n",
- " start_unixes = rhist.start_unix.unique()\n",
- " start_unixes_lt_ghour = np.sort(start_unixes[start_unixes < ghour_lt_curr_unix]) # start unixes less than ghour_lt_curr_unix\n",
- " # 기준유닉스(base_unix) : curr_unix보다 작은 hour 중에서 가장 큰 값으로부터 다섯 번째로 작은 start_unix\n",
- " if list(start_unixes_lt_ghour):\n",
- " base_unix = start_unixes_lt_ghour[-5]\n",
- " # start_unixes_lt_ghour가 비었을 경우에는 맨 앞 start_unix로 base_unix를 지정\n",
- " else:\n",
- " base_unix = rhist.start_unix.min()\n",
- " D_n = curr_unix - base_unix\n",
- " S_n_durs = rhist[(rhist.start_unix > base_unix) & (rhist.start_unix <= curr_unix)] \\\n",
- " [[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]]\n",
- " S_n = S_n_durs.values.sum() // 2\n",
- " return D_n, S_n"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 15,
- "metadata": {},
- "outputs": [
+ },
{
"data": {
"text/html": [
@@ -5012,273 +4949,501 @@
"
| \n",
" inter_no | \n",
" start_unix | \n",
+ " dura_A1 | \n",
+ " dura_A2 | \n",
+ " dura_A3 | \n",
+ " dura_A4 | \n",
+ " dura_A5 | \n",
+ " dura_A6 | \n",
+ " dura_A7 | \n",
+ " dura_A8 | \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",
- " D_n | \n",
- " S_n | \n",
- " diff | \n",
" \n",
" \n",
" \n",
" \n",
- " 65 | \n",
- " 202 | \n",
- " 1704389500 | \n",
+ " 60 | \n",
+ " 178 | \n",
+ " 1704388800 | \n",
+ " 38 | \n",
+ " 39 | \n",
+ " 40 | \n",
+ " 23 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 38 | \n",
+ " 39 | \n",
+ " 40 | \n",
+ " 23 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
" 140 | \n",
- " 2520 | \n",
- " 2520 | \n",
- " 140.0 | \n",
"
\n",
" \n",
- " 66 | \n",
- " 202 | \n",
- " 1704389640 | \n",
+ " 60 | \n",
+ " 201 | \n",
+ " 1704388800 | \n",
+ " 24 | \n",
+ " 24 | \n",
+ " 17 | \n",
+ " 58 | \n",
+ " 17 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 24 | \n",
+ " 24 | \n",
+ " 17 | \n",
+ " 58 | \n",
+ " 17 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
" 140 | \n",
- " 2660 | \n",
- " 2660 | \n",
- " 140.0 | \n",
"
\n",
" \n",
- " 67 | \n",
+ " 60 | \n",
" 202 | \n",
- " 1704389780 | \n",
+ " 1704388800 | \n",
+ " 39 | \n",
+ " 101 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 39 | \n",
+ " 101 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
" 140 | \n",
- " 2800 | \n",
- " 2800 | \n",
- " 140.0 | \n",
"
\n",
" \n",
- " 68 | \n",
- " 202 | \n",
- " 1704389920 | \n",
- " 140 | \n",
- " 2940 | \n",
- " 2940 | \n",
- " 140.0 | \n",
+ " 70 | \n",
+ " 206 | \n",
+ " 1704388800 | \n",
+ " 33 | \n",
+ " 35 | \n",
+ " 26 | \n",
+ " 26 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 33 | \n",
+ " 35 | \n",
+ " 26 | \n",
+ " 26 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 120 | \n",
"
\n",
" \n",
- " 69 | \n",
- " 202 | \n",
- " 1704390389 | \n",
- " 140 | \n",
- " 3409 | \n",
- " 3080 | \n",
- " 469.0 | \n",
+ " 56 | \n",
+ " 177 | \n",
+ " 1704388801 | \n",
+ " 36 | \n",
+ " 20 | \n",
+ " 68 | \n",
+ " 26 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 36 | \n",
+ " 20 | \n",
+ " 68 | \n",
+ " 26 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 150 | \n",
"
\n",
" \n",
- " 70 | \n",
- " 202 | \n",
- " 1704390529 | \n",
- " 140 | \n",
- " 3549 | \n",
- " 3220 | \n",
- " 140.0 | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
"
\n",
" \n",
- " 71 | \n",
- " 202 | \n",
- " 1704390670 | \n",
- " 140 | \n",
- " 3690 | \n",
- " 3360 | \n",
- " 141.0 | \n",
+ " 78 | \n",
+ " 210 | \n",
+ " 1704392159 | \n",
+ " 43 | \n",
+ " 29 | \n",
+ " 56 | \n",
+ " 22 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 24 | \n",
+ " 48 | \n",
+ " 56 | \n",
+ " 22 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 150 | \n",
"
\n",
" \n",
- " 72 | \n",
- " 202 | \n",
- " 1704390810 | \n",
+ " 84 | \n",
+ " 178 | \n",
+ " 1704392160 | \n",
+ " 38 | \n",
+ " 39 | \n",
+ " 40 | \n",
+ " 23 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 38 | \n",
+ " 39 | \n",
+ " 40 | \n",
+ " 23 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
" 140 | \n",
- " 3830 | \n",
- " 3500 | \n",
- " 140.0 | \n",
"
\n",
" \n",
- " 73 | \n",
- " 202 | \n",
- " 1704390950 | \n",
+ " 84 | \n",
+ " 201 | \n",
+ " 1704392160 | \n",
+ " 24 | \n",
+ " 24 | \n",
+ " 17 | \n",
+ " 58 | \n",
+ " 17 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 24 | \n",
+ " 24 | \n",
+ " 17 | \n",
+ " 58 | \n",
+ " 17 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
" 140 | \n",
- " 3970 | \n",
- " 3640 | \n",
- " 140.0 | \n",
"
\n",
" \n",
- " 74 | \n",
- " 202 | \n",
- " 1704391090 | \n",
- " 140 | \n",
- " 4110 | \n",
- " 3780 | \n",
- " 140.0 | \n",
- "
\n",
- " \n",
- " 75 | \n",
- " 202 | \n",
- " 1704391230 | \n",
- " 140 | \n",
- " 701 | \n",
- " 700 | \n",
- " 140.0 | \n",
- "
\n",
- " \n",
- " 76 | \n",
- " 202 | \n",
- " 1704391370 | \n",
- " 140 | \n",
- " 841 | \n",
- " 840 | \n",
- " 140.0 | \n",
- "
\n",
- " \n",
- " 77 | \n",
- " 202 | \n",
- " 1704391509 | \n",
- " 140 | \n",
- " 980 | \n",
- " 980 | \n",
- " 139.0 | \n",
- "
\n",
- " \n",
- " 78 | \n",
- " 202 | \n",
- " 1704391650 | \n",
- " 140 | \n",
- " 1121 | \n",
- " 1120 | \n",
- " 141.0 | \n",
- "
\n",
- " \n",
- " 79 | \n",
- " 202 | \n",
- " 1704391790 | \n",
- " 140 | \n",
- " 1261 | \n",
- " 1260 | \n",
- " 140.0 | \n",
- "
\n",
- " \n",
- " 80 | \n",
- " 202 | \n",
- " 1704391930 | \n",
- " 140 | \n",
- " 1401 | \n",
- " 1400 | \n",
- " 140.0 | \n",
- "
\n",
- " \n",
- " 81 | \n",
- " 202 | \n",
- " 1704392070 | \n",
- " 140 | \n",
- " 1541 | \n",
- " 1540 | \n",
- " 140.0 | \n",
- "
\n",
- " \n",
- " 82 | \n",
- " 202 | \n",
- " 1704392211 | \n",
- " 140 | \n",
- " 1682 | \n",
- " 1680 | \n",
- " 141.0 | \n",
- "
\n",
- " \n",
- " 83 | \n",
- " 202 | \n",
- " 1704392350 | \n",
- " 140 | \n",
- " 1821 | \n",
- " 1820 | \n",
- " 139.0 | \n",
+ " 98 | \n",
+ " 206 | \n",
+ " 1704392160 | \n",
+ " 33 | \n",
+ " 35 | \n",
+ " 26 | \n",
+ " 26 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 33 | \n",
+ " 35 | \n",
+ " 26 | \n",
+ " 26 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 120 | \n",
"
\n",
" \n",
" 84 | \n",
" 202 | \n",
- " 1704392490 | \n",
+ " 1704392211 | \n",
+ " 39 | \n",
+ " 101 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 39 | \n",
+ " 101 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
+ " 0 | \n",
" 140 | \n",
- " 1961 | \n",
- " 1960 | \n",
- " 140.0 | \n",
"
\n",
" \n",
"\n",
+ "194 rows × 19 columns
\n",
""
],
"text/plain": [
- " inter_no start_unix cycle D_n S_n diff\n",
- "65 202 1704389500 140 2520 2520 140.0\n",
- "66 202 1704389640 140 2660 2660 140.0\n",
- "67 202 1704389780 140 2800 2800 140.0\n",
- "68 202 1704389920 140 2940 2940 140.0\n",
- "69 202 1704390389 140 3409 3080 469.0\n",
- "70 202 1704390529 140 3549 3220 140.0\n",
- "71 202 1704390670 140 3690 3360 141.0\n",
- "72 202 1704390810 140 3830 3500 140.0\n",
- "73 202 1704390950 140 3970 3640 140.0\n",
- "74 202 1704391090 140 4110 3780 140.0\n",
- "75 202 1704391230 140 701 700 140.0\n",
- "76 202 1704391370 140 841 840 140.0\n",
- "77 202 1704391509 140 980 980 139.0\n",
- "78 202 1704391650 140 1121 1120 141.0\n",
- "79 202 1704391790 140 1261 1260 140.0\n",
- "80 202 1704391930 140 1401 1400 140.0\n",
- "81 202 1704392070 140 1541 1540 140.0\n",
- "82 202 1704392211 140 1682 1680 141.0\n",
- "83 202 1704392350 140 1821 1820 139.0\n",
- "84 202 1704392490 140 1961 1960 140.0"
+ " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 \\\n",
+ "60 178 1704388800 38 39 40 23 0 \n",
+ "60 201 1704388800 24 24 17 58 17 \n",
+ "60 202 1704388800 39 101 0 0 0 \n",
+ "70 206 1704388800 33 35 26 26 0 \n",
+ "56 177 1704388801 36 20 68 26 0 \n",
+ ".. ... ... ... ... ... ... ... \n",
+ "78 210 1704392159 43 29 56 22 0 \n",
+ "84 178 1704392160 38 39 40 23 0 \n",
+ "84 201 1704392160 24 24 17 58 17 \n",
+ "98 206 1704392160 33 35 26 26 0 \n",
+ "84 202 1704392211 39 101 0 0 0 \n",
+ "\n",
+ " dura_A6 dura_A7 dura_A8 dura_B1 dura_B2 dura_B3 dura_B4 dura_B5 \\\n",
+ "60 0 0 0 38 39 40 23 0 \n",
+ "60 0 0 0 24 24 17 58 17 \n",
+ "60 0 0 0 39 101 0 0 0 \n",
+ "70 0 0 0 33 35 26 26 0 \n",
+ "56 0 0 0 36 20 68 26 0 \n",
+ ".. ... ... ... ... ... ... ... ... \n",
+ "78 0 0 0 24 48 56 22 0 \n",
+ "84 0 0 0 38 39 40 23 0 \n",
+ "84 0 0 0 24 24 17 58 17 \n",
+ "98 0 0 0 33 35 26 26 0 \n",
+ "84 0 0 0 39 101 0 0 0 \n",
+ "\n",
+ " dura_B6 dura_B7 dura_B8 cycle \n",
+ "60 0 0 0 140 \n",
+ "60 0 0 0 140 \n",
+ "60 0 0 0 140 \n",
+ "70 0 0 0 120 \n",
+ "56 0 0 0 150 \n",
+ ".. ... ... ... ... \n",
+ "78 0 0 0 150 \n",
+ "84 0 0 0 140 \n",
+ "84 0 0 0 140 \n",
+ "98 0 0 0 120 \n",
+ "84 0 0 0 140 \n",
+ "\n",
+ "[194 rows x 19 columns]"
]
},
- "execution_count": 15,
+ "execution_count": 13,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "inter_no = 202\n",
+ "m = 40\n",
+ "fmins = range(midnight, next_day, 300) # fmins : unix time by Five MINuteS\n",
+ "present_time = fmins[m] # 현재시점\n",
+ "print(datetime.fromtimestamp(present_time))\n",
+ "\n",
+ "# 1. 조회시점의 유닉스 타임 이전의 신호이력 수집\n",
+ "rhistory = history.copy() # recent history\n",
+ "rhistory = rhistory[(rhistory.end_unix < present_time)]\n",
+ "# 2. 시작 유닉스 타임컬럼 생성 후 종류 유닉스 타임에서 현시별 현시기간 컬럼의 합을 뺀 값으로 입력\n",
+ "# - 현시시간의 합을 뺀 시간의 +- 10초 이내에 이전 주기정보가 존재하면 그 유닉스 시간을 시작 유닉스시간 값으로 하고, 존재하지 않으면 현시시간의 합을 뺀 유닉스 시간을 시작 유닉스 시간으로 지정\n",
+ "for i, row in rhistory.iterrows():\n",
+ " inter_no = row.inter_no\n",
+ " end_unix = row.end_unix\n",
+ " elapsed_time = row[[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]].sum() // 2 # 현시시간 합\n",
+ " # 이전 유닉스 존재하지 않음 : 현시시간 합의 차\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",
+ " # 이전 유닉스 존재, abs < 10 : 이전 유닉스\n",
+ " if abs(pre_unix - start_unix) < 10:\n",
+ " start_unix = pre_unix\n",
+ " # 이전 유닉스 존재, abs >=10 : 현시시간 합의 차\n",
+ " else:\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",
+ "rhistory[['inter_no', 'start_unix', 'cycle']][rhistory.inter_no==175]\n",
+ "rhistory = rhistory[['inter_no', 'start_unix'] + [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)] + ['cycle']]\n",
+ "rhistory\n",
+ "\n",
"# 2-1. 참값 판단 프로세스\n",
"hours = np.array(range(midnight, next_day + 1, 3600)) # 정각에 해당하는 시각들 목록\n",
"\n",
- "rhist = rhistory.copy()[rhistory.inter_no==inter_no]\n",
- "rhist = rhist.drop_duplicates(subset=['start_unix']).reset_index(drop=True)\n",
+ "def calculate_DS(rhist, curr_unix):\n",
+ " ghour_lt_curr_unix = hours[hours <= curr_unix].max() # the greatest hour less than (or equal to) curr_unix\n",
+ " start_unixes = rhist.start_unix.unique()\n",
+ " start_unixes_lt_ghour = np.sort(start_unixes[start_unixes < ghour_lt_curr_unix]) # start unixes less than ghour_lt_curr_unix\n",
+ " # 기준유닉스(base_unix) : curr_unix보다 작은 hour 중에서 가장 큰 값으로부터 다섯 번째로 작은 start_unix\n",
+ " if list(start_unixes_lt_ghour):\n",
+ " base_unix = start_unixes_lt_ghour[-5]\n",
+ " # start_unixes_lt_ghour가 비었을 경우에는 맨 앞 start_unix로 base_unix를 지정\n",
+ " else:\n",
+ " base_unix = rhist.start_unix.min()\n",
+ " D_n = curr_unix - base_unix\n",
+ " S_n_durs = rhist[(rhist.start_unix > base_unix) & (rhist.start_unix <= curr_unix)] \\\n",
+ " [[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]]\n",
+ " S_n = S_n_durs.values.sum() // 2\n",
+ " return D_n, S_n\n",
+ "\n",
+ "rhists = []\n",
+ "for inter_no in sorted(rhistory.inter_no.unique()):\n",
+ " rhist = rhistory.copy()[rhistory.inter_no==inter_no]\n",
+ " rhist = rhist.drop_duplicates(subset=['start_unix']).reset_index(drop=True)\n",
"\n",
- "# D_n 및 S_n 값 정의\n",
- "rhist['D_n'] = 0 # D_n : 시간차이\n",
- "rhist['S_n'] = 0 # S_n : 현시시간합\n",
- "for n in range(len(rhist)):\n",
- " curr_unix = rhist.iloc[n].start_unix # current start_unix\n",
- " rhist.loc[n, ['D_n', 'S_n']] = calculate_DS(rhist, curr_unix)\n",
+ " # D_n 및 S_n 값 정의\n",
+ " rhist['D_n'] = 0 # D_n : 시간차이\n",
+ " rhist['S_n'] = 0 # S_n : 현시시간합\n",
+ " for n in range(len(rhist)):\n",
+ " curr_unix = rhist.iloc[n].start_unix # current start_unix\n",
+ " rhist.loc[n, ['D_n', 'S_n']] = calculate_DS(rhist, curr_unix)\n",
+ "\n",
+ " # 이전시각, 현재시각\n",
+ " prev_unix = rhist.loc[0, 'start_unix'] # previous start_unix\n",
+ " curr_unix = rhist.loc[1, 'start_unix'] # current start_unix\n",
+ "\n",
+ " # rhist의 마지막 행에 도달할 때까지 반복\n",
+ " while True:\n",
+ " n = rhist[rhist.start_unix==curr_unix].index[0]\n",
+ " cycle = rhist.loc[n, 'cycle']\n",
+ " D_n = rhist.loc[n, 'D_n']\n",
+ " S_n = rhist.loc[n, 'S_n']\n",
+ " # 참값인 경우\n",
+ " if (abs(D_n - S_n) <= 5):\n",
+ " pass\n",
+ " # 참값이 아닌 경우\n",
+ " else:\n",
+ " # 2-1-1. 결측치 처리 : 인접한 두 start_unix의 차이가 계획된 주기의 두 배보다 크면 결측이 일어났다고 판단, 신호계획의 현시시간으로 \"대체\"\n",
+ " if curr_unix - prev_unix >= 2 * cycle:\n",
+ " # prev_unix를 계획된 주기만큼 늘려가면서 한 행씩 채워나간다.\n",
+ " # (curr_unix와의 차이가 계획된 주기보다 작거나 같아질 때까지)\n",
+ " new_rows = []\n",
+ " while curr_unix - prev_unix > cycle:\n",
+ " prev_unix += cycle\n",
+ " # 신호 계획(prow) 불러오기\n",
+ " start_seconds = np.array(timetable.start_seconds)\n",
+ " idx = (start_seconds <= prev_unix).sum() - 1\n",
+ " start_hour = timetable.iloc[idx].start_hour\n",
+ " start_minute = timetable.iloc[idx].start_minute\n",
+ " prow = plan.copy()[(plan.inter_no==inter_no) & (plan.start_hour==start_hour) & (plan.start_minute==start_minute)] # planned row\n",
+ " # prow에서 필요한 부분을 rhist에 추가\n",
+ " prow['start_unix'] = prev_unix\n",
+ " prow = prow.drop(['start_hour', 'start_minute', 'offset'], axis=1)\n",
+ " cycle = prow.iloc[0].cycle\n",
+ " rhist = pd.concat([rhist, prow])\n",
+ " rhist = rhist.sort_values(by='start_unix').reset_index(drop=True)\n",
+ " n += 1\n",
"\n",
- "# 결측 및 이상치 처리\n",
- "prev_unix = rhist.loc[0, 'start_unix'] # previous start_unix\n",
- "curr_unix = rhist.loc[1, 'start_unix'] # current start_unix\n",
- "fina_unix = rhist.start_unix.max() # final start_unix\n",
- "rhist_diff = rhist.copy()\n",
- "rhist_diff['diff'] = rhist['start_unix'].diff()\n",
- "rhist_diff[list(rhist_diff.columns)[:2]+list(rhist_diff.columns)[-4:]][65:85]"
+ " # 2-1-2. 이상치 처리 : 비율에 따라 해당 행을 \"삭제\"(R_n <= 0.5) 또는 \"조정\"(R_n > 0.5)한다\n",
+ " R_n = (curr_unix - prev_unix) / cycle # R_n : 비율\n",
+ " # R_n이 0.5보다 작거나 같으면 해당 행을 삭제\n",
+ " if R_n <= 0.5:\n",
+ " rhist = rhist.drop(index=n).reset_index(drop=True)\n",
+ " # 행삭제에 따른 curr_unix, R_n 재정의\n",
+ " curr_unix = rhist.loc[n, 'start_unix']\n",
+ " R_n = (curr_unix - prev_unix) / cycle # R_n : 비율\n",
+ "\n",
+ " # R_n이 0.5보다 크면 해당 행 조정 (비율을 유지한 채로 현시시간 대체)\n",
+ " if R_n > 0.5:\n",
+ " # 신호 계획(prow) 불러오기\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 = plan[(plan.inter_no==inter_no) & (plan.start_hour==start_hour) & (plan.start_minute==start_minute)] # planned row\n",
+ " # 조정된 현시시간 (prow에 R_n을 곱하고 정수로 바꿈)\n",
+ " adjusted_dur = prow.copy()[[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]] * R_n\n",
+ " int_parts = adjusted_dur.iloc[0].apply(lambda x: int(x))\n",
+ " frac_parts = adjusted_dur.iloc[0] - int_parts\n",
+ " difference = round(adjusted_dur.iloc[0].sum()) - int_parts.sum()\n",
+ " for _ in range(difference): # 소수 부분이 가장 큰 상위 '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에 조정된 현시시간을 반영\n",
+ " rhist.loc[n, [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]] = int_parts.values\n",
+ " rhist.loc[n, 'cycle'] = int_parts.sum().sum() // 2\n",
+ "\n",
+ " if n == rhist.index[-1]:\n",
+ " break\n",
+ " prev_unix = curr_unix\n",
+ " curr_unix = rhist.loc[n+1, 'start_unix']\n",
+ " # rhist['start_dt'] = rhist['start_unix'].map(lambda x:datetime.fromtimestamp(x))\n",
+ "\n",
+ " # 생략해도 무방할 코드\n",
+ " rhist = rhist.reset_index(drop=True)\n",
+ " rhist = rhist.sort_values(by=['start_unix'])\n",
+ "\n",
+ " # D_n 및 S_n 값 재정의\n",
+ " for n in range(len(rhist)):\n",
+ " curr_unix = rhist.iloc[n].start_unix # current start_unix\n",
+ " rhist.loc[n, ['D_n', 'S_n']] = calculate_DS(rhist, curr_unix)\n",
+ " rhists.append(rhist)\n",
+ "rhists = pd.concat(rhists).sort_values(by=['start_unix','inter_no'])\n",
+ "rhists = rhists[rhists.start_unix >= present_time - 3600]\n",
+ "rhists = rhists.drop(columns=['D_n', 'S_n'])\n",
+ "rhists"
]
},
{
"cell_type": "code",
- "execution_count": 16,
+ "execution_count": 34,
"metadata": {},
"outputs": [
{
- "data": {
- "text/plain": [
- "array([175, 176, 177, 178, 201, 202, 206, 210], dtype=int64)"
- ]
- },
- "execution_count": 16,
- "metadata": {},
- "output_type": "execute_result"
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ " 0%| | 0/17280 [00:00, ?it/s]"
+ ]
+ },
+ {
+ "name": "stderr",
+ "output_type": "stream",
+ "text": [
+ "100%|██████████| 17280/17280 [00:18<00:00, 929.46it/s] \n"
+ ]
}
],
"source": [
- "plan.inter_no.unique()"
+ "file_path = '../../Data/tables/movements/'\n",
+ "movements = [pd.read_csv(file_path + file, index_col=0) for file in tqdm(os.listdir(file_path))]\n",
+ "movements = pd.concat(movements).drop_duplicates()"
]
},
{
"cell_type": "code",
- "execution_count": 19,
+ "execution_count": 20,
"metadata": {},
"outputs": [
{
@@ -5302,65 +5467,86 @@
" \n",
" \n",
" | \n",
- " a | \n",
- " b | \n",
- " c | \n",
+ " inter_no | \n",
+ " phas_A | \n",
+ " phas_B | \n",
+ " move_A | \n",
+ " move_B | \n",
"
\n",
" \n",
" \n",
" \n",
- " 0 | \n",
+ " 8 | \n",
+ " 175 | \n",
+ " 1 | \n",
" 1 | \n",
- " 11 | \n",
- " 111 | \n",
+ " 8 | \n",
+ " 4 | \n",
"
\n",
" \n",
- " 1 | \n",
+ " 15 | \n",
+ " 175 | \n",
" 2 | \n",
- " 22 | \n",
- " 222 | \n",
+ " 2 | \n",
+ " 7 | \n",
+ " 3 | \n",
"
\n",
" \n",
- " 2 | \n",
+ " 20 | \n",
+ " 175 | \n",
" 3 | \n",
- " 33 | \n",
- " 333 | \n",
+ " 3 | \n",
+ " 6 | \n",
+ " 1 | \n",
+ "
\n",
+ " \n",
+ " 24 | \n",
+ " 175 | \n",
+ " 3 | \n",
+ " 4 | \n",
+ " 6 | \n",
+ " 2 | \n",
+ "
\n",
+ " \n",
+ " 26 | \n",
+ " 175 | \n",
+ " 4 | \n",
+ " 4 | \n",
+ " 5 | \n",
+ " 2 | \n",
"
\n",
" \n",
"\n",
""
],
"text/plain": [
- " a b c\n",
- "0 1 11 111\n",
- "1 2 22 222\n",
- "2 3 33 333"
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/plain": [
- "22"
+ " inter_no phas_A phas_B move_A move_B\n",
+ "8 175 1 1 8 4\n",
+ "15 175 2 2 7 3\n",
+ "20 175 3 3 6 1\n",
+ "24 175 3 4 6 2\n",
+ "26 175 4 4 5 2"
]
},
- "execution_count": 19,
+ "execution_count": 20,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "df = pd.DataFrame({'a':[1,2,3],'b':[11,22,33], 'c':[111,222,333]})\n",
- "display(df)\n",
- "# curr_unix = rhist.loc[n, 'start_unix']\n",
- "df.loc[1,'b']\n"
+ "movements_wo_start_unix_list = [] # movements without start_unix\n",
+ "for inter_no in sorted(movements.inter_no.unique()):\n",
+ " movements_wo_start_unix = movements[movements_wo_start_unix.inter_no==inter_no]\n",
+ " movements_wo_start_unix = movements_wo_start_unix[['inter_no', 'phas_A', 'phas_B', 'move_A', 'move_B']]\n",
+ " movements_wo_start_unix = movements_wo_start_unix.drop_duplicates().sort_values(by=['phas_A','phas_B'])\n",
+ " movements_wo_start_unix_list.append(movements_wo_start_unix)\n",
+ "movements_wo_start_unix = pd.concat(movements_wo_start_unix_list)\n",
+ "movements_wo_start_unix.head()"
]
},
{
"cell_type": "code",
- "execution_count": 91,
+ "execution_count": 67,
"metadata": {},
"outputs": [
{
@@ -5386,3295 +5572,456 @@
" | \n",
" inter_no | \n",
" start_unix | \n",
- " dura_A1 | \n",
- " dura_A2 | \n",
- " dura_A3 | \n",
- " dura_A4 | \n",
- " dura_A5 | \n",
- " cycle | \n",
- " D_n | \n",
- " S_n | \n",
- " diff | \n",
- " start_dt | \n",
+ " phas_A | \n",
+ " phas_B | \n",
+ " duration | \n",
" \n",
" \n",
" \n",
" \n",
- " 24 | \n",
- " 176 | \n",
- " 1704384054 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 804 | \n",
- " 750 | \n",
- " 204.0 | \n",
- " 2024-01-05 01:00:54 | \n",
+ " 0 | \n",
+ " 178 | \n",
+ " 1704388800 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 38 | \n",
"
\n",
" \n",
- " 81 | \n",
- " 176 | \n",
- " 1704392578 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2078 | \n",
- " 2100 | \n",
- " 128.0 | \n",
- " 2024-01-05 03:22:58 | \n",
+ " 1 | \n",
+ " 178 | \n",
+ " 1704388800 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 39 | \n",
"
\n",
" \n",
- " 143 | \n",
- " 176 | \n",
- " 1704402004 | \n",
- " 37 | \n",
- " 73 | \n",
+ " 2 | \n",
+ " 178 | \n",
+ " 1704388800 | \n",
+ " 3 | \n",
+ " 3 | \n",
" 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 874 | \n",
- " 750 | \n",
- " 274.0 | \n",
- " 2024-01-05 06:00:04 | \n",
"
\n",
" \n",
- " 144 | \n",
- " 176 | \n",
- " 1704402240 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1110 | \n",
- " 900 | \n",
- " 236.0 | \n",
- " 2024-01-05 06:04:00 | \n",
+ " 3 | \n",
+ " 178 | \n",
+ " 1704388800 | \n",
+ " 4 | \n",
+ " 4 | \n",
+ " 23 | \n",
"
\n",
" \n",
- " 167 | \n",
- " 176 | \n",
- " 1704405690 | \n",
- " 37 | \n",
- " 93 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 170 | \n",
- " 750 | \n",
- " 770 | \n",
- " 150.0 | \n",
- " 2024-01-05 07:01:30 | \n",
+ " 4 | \n",
+ " 201 | \n",
+ " 1704388800 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 24 | \n",
"
\n",
" \n",
- " 171 | \n",
- " 176 | \n",
- " 1704406231 | \n",
- " 37 | \n",
- " 93 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 170 | \n",
- " 1291 | \n",
- " 1450 | \n",
- " 31.0 | \n",
- " 2024-01-05 07:10:31 | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
"
\n",
" \n",
- " 210 | \n",
- " 176 | \n",
- " 1704412860 | \n",
- " 37 | \n",
- " 103 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 180 | \n",
- " 851 | \n",
- " 860 | \n",
- " 169.0 | \n",
- " 2024-01-05 09:01:00 | \n",
+ " 767 | \n",
+ " 206 | \n",
+ " 1704392160 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 35 | \n",
"
\n",
" \n",
- " 253 | \n",
- " 176 | \n",
- " 1704420442 | \n",
- " 37 | \n",
- " 103 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1283 | \n",
- " 1440 | \n",
- " 22.0 | \n",
- " 2024-01-05 11:07:22 | \n",
+ " 768 | \n",
+ " 206 | \n",
+ " 1704392160 | \n",
+ " 3 | \n",
+ " 3 | \n",
+ " 26 | \n",
"
\n",
" \n",
- " 277 | \n",
- " 176 | \n",
- " 1704424600 | \n",
- " 37 | \n",
- " 103 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1820 | \n",
- " 1980 | \n",
- " 20.0 | \n",
- " 2024-01-05 12:16:40 | \n",
+ " 769 | \n",
+ " 206 | \n",
+ " 1704392160 | \n",
+ " 4 | \n",
+ " 4 | \n",
+ " 26 | \n",
+ "
\n",
+ " \n",
+ " 770 | \n",
+ " 202 | \n",
+ " 1704392211 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 39 | \n",
+ "
\n",
+ " \n",
+ " 771 | \n",
+ " 202 | \n",
+ " 1704392211 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 101 | \n",
"
\n",
" \n",
"\n",
+ "772 rows × 5 columns
\n",
""
],
"text/plain": [
- " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 cycle \\\n",
- "24 176 1704384054 37 73 40 0 0 150 \n",
- "81 176 1704392578 37 73 40 0 0 150 \n",
- "143 176 1704402004 37 73 40 0 0 150 \n",
- "144 176 1704402240 37 73 40 0 0 150 \n",
- "167 176 1704405690 37 93 40 0 0 170 \n",
- "171 176 1704406231 37 93 40 0 0 170 \n",
- "210 176 1704412860 37 103 40 0 0 180 \n",
- "253 176 1704420442 37 103 40 0 0 180 \n",
- "277 176 1704424600 37 103 40 0 0 180 \n",
+ " inter_no start_unix phas_A phas_B duration\n",
+ "0 178 1704388800 1 1 38\n",
+ "1 178 1704388800 2 2 39\n",
+ "2 178 1704388800 3 3 40\n",
+ "3 178 1704388800 4 4 23\n",
+ "4 201 1704388800 1 1 24\n",
+ ".. ... ... ... ... ...\n",
+ "767 206 1704392160 2 2 35\n",
+ "768 206 1704392160 3 3 26\n",
+ "769 206 1704392160 4 4 26\n",
+ "770 202 1704392211 1 1 39\n",
+ "771 202 1704392211 2 2 101\n",
"\n",
- " D_n S_n diff start_dt \n",
- "24 804 750 204.0 2024-01-05 01:00:54 \n",
- "81 2078 2100 128.0 2024-01-05 03:22:58 \n",
- "143 874 750 274.0 2024-01-05 06:00:04 \n",
- "144 1110 900 236.0 2024-01-05 06:04:00 \n",
- "167 750 770 150.0 2024-01-05 07:01:30 \n",
- "171 1291 1450 31.0 2024-01-05 07:10:31 \n",
- "210 851 860 169.0 2024-01-05 09:01:00 \n",
- "253 1283 1440 22.0 2024-01-05 11:07:22 \n",
- "277 1820 1980 20.0 2024-01-05 12:16:40 "
+ "[772 rows x 5 columns]"
]
},
+ "execution_count": 67,
"metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " inter_no | \n",
- " start_unix | \n",
- " dura_A1 | \n",
- " dura_A2 | \n",
- " dura_A3 | \n",
- " dura_A4 | \n",
- " dura_A5 | \n",
- " cycle | \n",
- " D_n | \n",
- " S_n | \n",
- " diff | \n",
- " start_dt | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 70 | \n",
- " 176 | \n",
- " 1704390950 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 4050 | \n",
- " 4050 | \n",
- " 150.0 | \n",
- " 2024-01-05 02:55:50 | \n",
- "
\n",
- " \n",
- " 71 | \n",
- " 176 | \n",
- " 1704391100 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 4200 | \n",
- " 4200 | \n",
- " 150.0 | \n",
- " 2024-01-05 02:58:20 | \n",
- "
\n",
- " \n",
- " 72 | \n",
- " 176 | \n",
- " 1704391250 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 750 | \n",
- " 750 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:00:50 | \n",
- "
\n",
- " \n",
- " 73 | \n",
- " 176 | \n",
- " 1704391399 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 899 | \n",
- " 900 | \n",
- " 149.0 | \n",
- " 2024-01-05 03:03:19 | \n",
- "
\n",
- " \n",
- " 74 | \n",
- " 176 | \n",
- " 1704391550 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1050 | \n",
- " 1050 | \n",
- " 151.0 | \n",
- " 2024-01-05 03:05:50 | \n",
- "
\n",
- " \n",
- " 75 | \n",
- " 176 | \n",
- " 1704391700 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1200 | \n",
- " 1200 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:08:20 | \n",
- "
\n",
- " \n",
- " 76 | \n",
- " 176 | \n",
- " 1704391850 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1350 | \n",
- " 1350 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:10:50 | \n",
- "
\n",
- " \n",
- " 77 | \n",
- " 176 | \n",
- " 1704392000 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1500 | \n",
- " 1500 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:13:20 | \n",
- "
\n",
- " \n",
- " 78 | \n",
- " 176 | \n",
- " 1704392151 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1651 | \n",
- " 1650 | \n",
- " 151.0 | \n",
- " 2024-01-05 03:15:51 | \n",
- "
\n",
- " \n",
- " 79 | \n",
- " 176 | \n",
- " 1704392300 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1800 | \n",
- " 1800 | \n",
- " 149.0 | \n",
- " 2024-01-05 03:18:20 | \n",
- "
\n",
- " \n",
- " 80 | \n",
- " 176 | \n",
- " 1704392450 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1950 | \n",
- " 1950 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:20:50 | \n",
- "
\n",
- " \n",
- " 81 | \n",
- " 176 | \n",
- " 1704392578 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2078 | \n",
- " 2100 | \n",
- " 128.0 | \n",
- " 2024-01-05 03:22:58 | \n",
- "
\n",
- " \n",
- " 82 | \n",
- " 176 | \n",
- " 1704392728 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2228 | \n",
- " 2250 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:25:28 | \n",
- "
\n",
- " \n",
- " 83 | \n",
- " 176 | \n",
- " 1704392880 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2380 | \n",
- " 2400 | \n",
- " 152.0 | \n",
- " 2024-01-05 03:28:00 | \n",
- "
\n",
- " \n",
- " 84 | \n",
- " 176 | \n",
- " 1704393030 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2530 | \n",
- " 2550 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:30:30 | \n",
- "
\n",
- " \n",
- " 85 | \n",
- " 176 | \n",
- " 1704393180 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2680 | \n",
- " 2700 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:33:00 | \n",
- "
\n",
- " \n",
- " 86 | \n",
- " 176 | \n",
- " 1704393330 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2830 | \n",
- " 2850 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:35:30 | \n",
- "
\n",
- " \n",
- " 87 | \n",
- " 176 | \n",
- " 1704393480 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2980 | \n",
- " 3000 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:38:00 | \n",
- "
\n",
- " \n",
- " 88 | \n",
- " 176 | \n",
- " 1704393630 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 3130 | \n",
- " 3150 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:40:30 | \n",
- "
\n",
- " \n",
- " 89 | \n",
- " 176 | \n",
- " 1704393780 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 3280 | \n",
- " 3300 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:43:00 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 cycle \\\n",
- "70 176 1704390950 37 73 40 0 0 150 \n",
- "71 176 1704391100 37 73 40 0 0 150 \n",
- "72 176 1704391250 37 73 40 0 0 150 \n",
- "73 176 1704391399 37 73 40 0 0 150 \n",
- "74 176 1704391550 37 73 40 0 0 150 \n",
- "75 176 1704391700 37 73 40 0 0 150 \n",
- "76 176 1704391850 37 73 40 0 0 150 \n",
- "77 176 1704392000 37 73 40 0 0 150 \n",
- "78 176 1704392151 37 73 40 0 0 150 \n",
- "79 176 1704392300 37 73 40 0 0 150 \n",
- "80 176 1704392450 37 73 40 0 0 150 \n",
- "81 176 1704392578 37 73 40 0 0 150 \n",
- "82 176 1704392728 37 73 40 0 0 150 \n",
- "83 176 1704392880 37 73 40 0 0 150 \n",
- "84 176 1704393030 37 73 40 0 0 150 \n",
- "85 176 1704393180 37 73 40 0 0 150 \n",
- "86 176 1704393330 37 73 40 0 0 150 \n",
- "87 176 1704393480 37 73 40 0 0 150 \n",
- "88 176 1704393630 37 73 40 0 0 150 \n",
- "89 176 1704393780 37 73 40 0 0 150 \n",
- "\n",
- " D_n S_n diff start_dt \n",
- "70 4050 4050 150.0 2024-01-05 02:55:50 \n",
- "71 4200 4200 150.0 2024-01-05 02:58:20 \n",
- "72 750 750 150.0 2024-01-05 03:00:50 \n",
- "73 899 900 149.0 2024-01-05 03:03:19 \n",
- "74 1050 1050 151.0 2024-01-05 03:05:50 \n",
- "75 1200 1200 150.0 2024-01-05 03:08:20 \n",
- "76 1350 1350 150.0 2024-01-05 03:10:50 \n",
- "77 1500 1500 150.0 2024-01-05 03:13:20 \n",
- "78 1651 1650 151.0 2024-01-05 03:15:51 \n",
- "79 1800 1800 149.0 2024-01-05 03:18:20 \n",
- "80 1950 1950 150.0 2024-01-05 03:20:50 \n",
- "81 2078 2100 128.0 2024-01-05 03:22:58 \n",
- "82 2228 2250 150.0 2024-01-05 03:25:28 \n",
- "83 2380 2400 152.0 2024-01-05 03:28:00 \n",
- "84 2530 2550 150.0 2024-01-05 03:30:30 \n",
- "85 2680 2700 150.0 2024-01-05 03:33:00 \n",
- "86 2830 2850 150.0 2024-01-05 03:35:30 \n",
- "87 2980 3000 150.0 2024-01-05 03:38:00 \n",
- "88 3130 3150 150.0 2024-01-05 03:40:30 \n",
- "89 3280 3300 150.0 2024-01-05 03:43:00 "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- },
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " inter_no | \n",
- " start_unix | \n",
- " dura_A1 | \n",
- " dura_A2 | \n",
- " dura_A3 | \n",
- " dura_A4 | \n",
- " dura_A5 | \n",
- " cycle | \n",
- " D_n | \n",
- " S_n | \n",
- " diff | \n",
- " start_dt | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 70 | \n",
- " 176 | \n",
- " 1704390950 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 4050 | \n",
- " 4050 | \n",
- " 150.0 | \n",
- " 2024-01-05 02:55:50 | \n",
- "
\n",
- " \n",
- " 71 | \n",
- " 176 | \n",
- " 1704391100 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 4200 | \n",
- " 4200 | \n",
- " 150.0 | \n",
- " 2024-01-05 02:58:20 | \n",
- "
\n",
- " \n",
- " 72 | \n",
- " 176 | \n",
- " 1704391250 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 750 | \n",
- " 750 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:00:50 | \n",
- "
\n",
- " \n",
- " 73 | \n",
- " 176 | \n",
- " 1704391399 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 899 | \n",
- " 900 | \n",
- " 149.0 | \n",
- " 2024-01-05 03:03:19 | \n",
- "
\n",
- " \n",
- " 74 | \n",
- " 176 | \n",
- " 1704391550 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1050 | \n",
- " 1050 | \n",
- " 151.0 | \n",
- " 2024-01-05 03:05:50 | \n",
- "
\n",
- " \n",
- " 75 | \n",
- " 176 | \n",
- " 1704391700 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1200 | \n",
- " 1200 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:08:20 | \n",
- "
\n",
- " \n",
- " 76 | \n",
- " 176 | \n",
- " 1704391850 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1350 | \n",
- " 1350 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:10:50 | \n",
- "
\n",
- " \n",
- " 77 | \n",
- " 176 | \n",
- " 1704392000 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1500 | \n",
- " 1500 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:13:20 | \n",
- "
\n",
- " \n",
- " 78 | \n",
- " 176 | \n",
- " 1704392151 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1651 | \n",
- " 1650 | \n",
- " 151.0 | \n",
- " 2024-01-05 03:15:51 | \n",
- "
\n",
- " \n",
- " 79 | \n",
- " 176 | \n",
- " 1704392300 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1800 | \n",
- " 1800 | \n",
- " 149.0 | \n",
- " 2024-01-05 03:18:20 | \n",
- "
\n",
- " \n",
- " 80 | \n",
- " 176 | \n",
- " 1704392450 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 1950 | \n",
- " 1950 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:20:50 | \n",
- "
\n",
- " \n",
- " 81 | \n",
- " 176 | \n",
- " 1704392578 | \n",
- " 32 | \n",
- " 62 | \n",
- " 34 | \n",
- " 0 | \n",
- " 0 | \n",
- " 128 | \n",
- " 2078 | \n",
- " 2078 | \n",
- " 128.0 | \n",
- " 2024-01-05 03:22:58 | \n",
- "
\n",
- " \n",
- " 82 | \n",
- " 176 | \n",
- " 1704392728 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2228 | \n",
- " 2228 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:25:28 | \n",
- "
\n",
- " \n",
- " 83 | \n",
- " 176 | \n",
- " 1704392880 | \n",
- " 37 | \n",
- " 74 | \n",
- " 41 | \n",
- " 0 | \n",
- " 0 | \n",
- " 152 | \n",
- " 2380 | \n",
- " 2380 | \n",
- " 152.0 | \n",
- " 2024-01-05 03:28:00 | \n",
- "
\n",
- " \n",
- " 84 | \n",
- " 176 | \n",
- " 1704393030 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2530 | \n",
- " 2530 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:30:30 | \n",
- "
\n",
- " \n",
- " 85 | \n",
- " 176 | \n",
- " 1704393180 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2680 | \n",
- " 2680 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:33:00 | \n",
- "
\n",
- " \n",
- " 86 | \n",
- " 176 | \n",
- " 1704393330 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2830 | \n",
- " 2830 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:35:30 | \n",
- "
\n",
- " \n",
- " 87 | \n",
- " 176 | \n",
- " 1704393480 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2980 | \n",
- " 2980 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:38:00 | \n",
- "
\n",
- " \n",
- " 88 | \n",
- " 176 | \n",
- " 1704393630 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 3130 | \n",
- " 3130 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:40:30 | \n",
- "
\n",
- " \n",
- " 89 | \n",
- " 176 | \n",
- " 1704393780 | \n",
- " 37 | \n",
- " 73 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 3280 | \n",
- " 3280 | \n",
- " 150.0 | \n",
- " 2024-01-05 03:43:00 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 cycle \\\n",
- "70 176 1704390950 37 73 40 0 0 150 \n",
- "71 176 1704391100 37 73 40 0 0 150 \n",
- "72 176 1704391250 37 73 40 0 0 150 \n",
- "73 176 1704391399 37 73 40 0 0 150 \n",
- "74 176 1704391550 37 73 40 0 0 150 \n",
- "75 176 1704391700 37 73 40 0 0 150 \n",
- "76 176 1704391850 37 73 40 0 0 150 \n",
- "77 176 1704392000 37 73 40 0 0 150 \n",
- "78 176 1704392151 37 73 40 0 0 150 \n",
- "79 176 1704392300 37 73 40 0 0 150 \n",
- "80 176 1704392450 37 73 40 0 0 150 \n",
- "81 176 1704392578 32 62 34 0 0 128 \n",
- "82 176 1704392728 37 73 40 0 0 150 \n",
- "83 176 1704392880 37 74 41 0 0 152 \n",
- "84 176 1704393030 37 73 40 0 0 150 \n",
- "85 176 1704393180 37 73 40 0 0 150 \n",
- "86 176 1704393330 37 73 40 0 0 150 \n",
- "87 176 1704393480 37 73 40 0 0 150 \n",
- "88 176 1704393630 37 73 40 0 0 150 \n",
- "89 176 1704393780 37 73 40 0 0 150 \n",
- "\n",
- " D_n S_n diff start_dt \n",
- "70 4050 4050 150.0 2024-01-05 02:55:50 \n",
- "71 4200 4200 150.0 2024-01-05 02:58:20 \n",
- "72 750 750 150.0 2024-01-05 03:00:50 \n",
- "73 899 900 149.0 2024-01-05 03:03:19 \n",
- "74 1050 1050 151.0 2024-01-05 03:05:50 \n",
- "75 1200 1200 150.0 2024-01-05 03:08:20 \n",
- "76 1350 1350 150.0 2024-01-05 03:10:50 \n",
- "77 1500 1500 150.0 2024-01-05 03:13:20 \n",
- "78 1651 1650 151.0 2024-01-05 03:15:51 \n",
- "79 1800 1800 149.0 2024-01-05 03:18:20 \n",
- "80 1950 1950 150.0 2024-01-05 03:20:50 \n",
- "81 2078 2078 128.0 2024-01-05 03:22:58 \n",
- "82 2228 2228 150.0 2024-01-05 03:25:28 \n",
- "83 2380 2380 152.0 2024-01-05 03:28:00 \n",
- "84 2530 2530 150.0 2024-01-05 03:30:30 \n",
- "85 2680 2680 150.0 2024-01-05 03:33:00 \n",
- "86 2830 2830 150.0 2024-01-05 03:35:30 \n",
- "87 2980 2980 150.0 2024-01-05 03:38:00 \n",
- "88 3130 3130 150.0 2024-01-05 03:40:30 \n",
- "89 3280 3280 150.0 2024-01-05 03:43:00 "
- ]
- },
- "metadata": {},
- "output_type": "display_data"
- }
- ],
- "source": [
- "inter_no = 176\n",
- "a, b = 70, 90\n",
- "# 2-1. 참값 판단 프로세스\n",
- "hours = np.array(range(midnight, next_day + 1, 3600)) # 정각에 해당하는 시각들 목록\n",
- "\n",
- "rhist = rhistory.copy()[rhistory.inter_no==inter_no]\n",
- "rhist = rhist.drop_duplicates(subset=['start_unix']).reset_index(drop=True)\n",
- "\n",
- "# D_n 및 S_n 값 정의\n",
- "rhist['D_n'] = 0 # D_n : 시간차이\n",
- "rhist['S_n'] = 0 # S_n : 현시시간합\n",
- "for n in range(len(rhist)):\n",
- " curr_unix = rhist.iloc[n].start_unix # current start_unix\n",
- " rhist.loc[n, ['D_n', 'S_n']] = calculate_DS(rhist, curr_unix)\n",
- "\n",
- "rhist_diff = rhist.copy()\n",
- "rhist_diff['diff'] = rhist_diff['start_unix'].diff()\n",
- "rhist_diff = rhist_diff[list(rhist_diff.columns)[:7] + list(rhist_diff.columns)[-4:]]\n",
- "rhist_diff['start_dt'] = rhist_diff['start_unix'].map(lambda x:datetime.fromtimestamp(x))\n",
- "display(rhist_diff[abs(rhist_diff['diff'] - rhist_diff['cycle'])>10])\n",
- "display(rhist_diff[a:b])\n",
- "\n",
- "# 이전시각, 현재시각\n",
- "prev_unix = rhist.loc[0, 'start_unix'] # previous start_unix\n",
- "curr_unix = rhist.loc[1, 'start_unix'] # current start_unix\n",
- "\n",
- "# rhist의 마지막 행에 도달할 때까지 반복\n",
- "while True:\n",
- " n = rhist[rhist.start_unix==curr_unix].index[0]\n",
- " cycle = rhist.loc[n, 'cycle']\n",
- " D_n = rhist.loc[n, 'D_n']\n",
- " S_n = rhist.loc[n, 'S_n']\n",
- " # 참값인 경우\n",
- " if (abs(D_n - S_n) <= 5):\n",
- " pass\n",
- " # 참값이 아닌 경우\n",
- " else:\n",
- " # 2-1-1. 결측치 처리 : 인접한 두 start_unix의 차이가 계획된 주기의 두 배보다 크면 결측이 일어났다고 판단, 신호계획의 현시시간으로 \"대체\"\n",
- " if curr_unix - prev_unix >= 2 * cycle:\n",
- " # prev_unix를 계획된 주기만큼 늘려가면서 한 행씩 채워나간다.\n",
- " # (curr_unix와의 차이가 계획된 주기보다 작거나 같아질 때까지)\n",
- " new_rows = []\n",
- " while curr_unix - prev_unix > cycle:\n",
- " prev_unix += cycle\n",
- " # 신호 계획(prow) 불러오기\n",
- " start_seconds = np.array(timetable.start_seconds)\n",
- " idx = (start_seconds <= prev_unix).sum() - 1\n",
- " start_hour = timetable.iloc[idx].start_hour\n",
- " start_minute = timetable.iloc[idx].start_minute\n",
- " prow = plan.copy()[(plan.inter_no==inter_no) & (plan.start_hour==start_hour) & (plan.start_minute==start_minute)] # planned row\n",
- " # prow에서 필요한 부분을 rhist에 추가\n",
- " prow['start_unix'] = prev_unix\n",
- " prow = prow.drop(['start_hour', 'start_minute', 'offset'], axis=1)\n",
- " cycle = prow.iloc[0].cycle\n",
- " rhist = pd.concat([rhist, prow])\n",
- " rhist = rhist.sort_values(by='start_unix').reset_index(drop=True)\n",
- " n += 1\n",
- "\n",
- " # 2-1-2. 이상치 처리 : 비율에 따라 해당 행을 \"삭제\"(R_n <= 0.5) 또는 \"조정\"(R_n > 0.5)한다\n",
- " R_n = (curr_unix - prev_unix) / cycle # R_n : 비율\n",
- " # R_n이 0.5보다 작거나 같으면 해당 행을 삭제\n",
- " if R_n <= 0.5:\n",
- " rhist = rhist.drop(index=n).reset_index(drop=True)\n",
- " # 행삭제에 따른 curr_unix, R_n 재정의\n",
- " curr_unix = rhist.loc[n, 'start_unix']\n",
- " R_n = (curr_unix - prev_unix) / cycle # R_n : 비율\n",
- "\n",
- " # R_n이 0.5보다 크면 해당 행 조정 (비율을 유지한 채로 현시시간 대체)\n",
- " if R_n > 0.5:\n",
- " # 신호 계획(prow) 불러오기\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 = plan[(plan.inter_no==inter_no) & (plan.start_hour==start_hour) & (plan.start_minute==start_minute)] # planned row\n",
- " # 조정된 현시시간 (prow에 R_n을 곱하고 정수로 바꿈)\n",
- " adjusted_dur = prow.copy()[[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]] * R_n\n",
- " int_parts = adjusted_dur.iloc[0].apply(lambda x: int(x))\n",
- " frac_parts = adjusted_dur.iloc[0] - int_parts\n",
- " difference = round(adjusted_dur.iloc[0].sum()) - int_parts.sum()\n",
- " for _ in range(difference): # 소수 부분이 가장 큰 상위 '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에 조정된 현시시간을 반영\n",
- " rhist.loc[n, [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]] = int_parts.values\n",
- " rhist.loc[n, 'cycle'] = int_parts.sum().sum() // 2\n",
- "\n",
- " if n == rhist.index[-1]:\n",
- " break\n",
- " prev_unix = curr_unix\n",
- " curr_unix = rhist.loc[n+1, 'start_unix']\n",
- "# rhist['start_dt'] = rhist['start_unix'].map(lambda x:datetime.fromtimestamp(x))\n",
- "\n",
- "# 생략해도 무방할 코드\n",
- "rhist = rhist.reset_index(drop=True)\n",
- "rhist = rhist.sort_values(by=['start_unix'])\n",
- "\n",
- "# D_n 및 S_n 값 재정의\n",
- "for n in range(len(rhist)):\n",
- " curr_unix = rhist.iloc[n].start_unix # current start_unix\n",
- " rhist.loc[n, ['D_n', 'S_n']] = calculate_DS(rhist, curr_unix)\n",
- "\n",
- "rhist_diff = rhist.copy()\n",
- "rhist_diff['diff'] = rhist_diff['start_unix'].diff()\n",
- "rhist_diff = rhist_diff[list(rhist_diff.columns)[:7] + list(rhist_diff.columns)[-4:]]\n",
- "rhist_diff['start_dt'] = rhist_diff['start_unix'].map(lambda x:datetime.fromtimestamp(x))\n",
- "display(rhist_diff[a:b])"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 237,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " inter_no | \n",
- " start_unix | \n",
- " dura_A1 | \n",
- " dura_A2 | \n",
- " dura_A3 | \n",
- " dura_A4 | \n",
- " dura_A5 | \n",
- " cycle | \n",
- " D_n | \n",
- " S_n | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 260 | \n",
- " 177 | \n",
- " 1704421770 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2520 | \n",
- " 2520 | \n",
- "
\n",
- " \n",
- " 261 | \n",
- " 177 | \n",
- " 1704421950 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2700 | \n",
- " 2700 | \n",
- "
\n",
- " \n",
- " 262 | \n",
- " 177 | \n",
- " 1704422130 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2880 | \n",
- " 2880 | \n",
- "
\n",
- " \n",
- " 263 | \n",
- " 177 | \n",
- " 1704422310 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3060 | \n",
- " 3060 | \n",
- "
\n",
- " \n",
- " 264 | \n",
- " 177 | \n",
- " 1704422490 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3240 | \n",
- " 3240 | \n",
- "
\n",
- " \n",
- " 265 | \n",
- " 177 | \n",
- " 1704422670 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3420 | \n",
- " 3420 | \n",
- "
\n",
- " \n",
- " 266 | \n",
- " 177 | \n",
- " 1704422849 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3599 | \n",
- " 3600 | \n",
- "
\n",
- " \n",
- " 267 | \n",
- " 177 | \n",
- " 1704423030 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3780 | \n",
- " 3780 | \n",
- "
\n",
- " \n",
- " 268 | \n",
- " 177 | \n",
- " 1704423210 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3960 | \n",
- " 3960 | \n",
- "
\n",
- " \n",
- " 269 | \n",
- " 177 | \n",
- " 1704423390 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4140 | \n",
- " 4140 | \n",
- "
\n",
- " \n",
- " 270 | \n",
- " 177 | \n",
- " 1704423570 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4320 | \n",
- " 4320 | \n",
- "
\n",
- " \n",
- " 271 | \n",
- " 177 | \n",
- " 1704423750 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 901 | \n",
- " 900 | \n",
- "
\n",
- " \n",
- " 272 | \n",
- " 177 | \n",
- " 1704423929 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1080 | \n",
- " 1080 | \n",
- "
\n",
- " \n",
- " 273 | \n",
- " 177 | \n",
- " 1704424110 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1261 | \n",
- " 1260 | \n",
- "
\n",
- " \n",
- " 274 | \n",
- " 177 | \n",
- " 1704424290 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1441 | \n",
- " 1440 | \n",
- "
\n",
- " \n",
- " 275 | \n",
- " 177 | \n",
- " 1704424469 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1620 | \n",
- " 1620 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704424649 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1800 | \n",
- " 1620 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704424829 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1980 | \n",
- " 1800 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704425009 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2160 | \n",
- " 1980 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704425189 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2340 | \n",
- " 2160 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704425369 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2520 | \n",
- " 2340 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704425549 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2700 | \n",
- " 2520 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704425729 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2880 | \n",
- " 2700 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704425909 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3060 | \n",
- " 2880 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704426089 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3240 | \n",
- " 3060 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704426269 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3420 | \n",
- " 3240 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704426449 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3600 | \n",
- " 3420 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704426629 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3780 | \n",
- " 3600 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704426809 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3960 | \n",
- " 3780 | \n",
- "
\n",
- " \n",
- " 10 | \n",
- " 177 | \n",
- " 1704426989 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4140 | \n",
- " 3960 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 cycle \\\n",
- "260 177 1704421770 43 27 70 40 0 180 \n",
- "261 177 1704421950 43 27 70 40 0 180 \n",
- "262 177 1704422130 43 27 70 40 0 180 \n",
- "263 177 1704422310 43 27 70 40 0 180 \n",
- "264 177 1704422490 43 27 70 40 0 180 \n",
- "265 177 1704422670 43 27 70 40 0 180 \n",
- "266 177 1704422849 43 27 70 40 0 180 \n",
- "267 177 1704423030 43 27 70 40 0 180 \n",
- "268 177 1704423210 43 27 70 40 0 180 \n",
- "269 177 1704423390 43 27 70 40 0 180 \n",
- "270 177 1704423570 43 27 70 40 0 180 \n",
- "271 177 1704423750 43 27 70 40 0 180 \n",
- "272 177 1704423929 43 27 70 40 0 180 \n",
- "273 177 1704424110 43 27 70 40 0 180 \n",
- "274 177 1704424290 43 27 70 40 0 180 \n",
- "275 177 1704424469 43 27 70 40 0 180 \n",
- "10 177 1704424649 43 27 70 40 0 180 \n",
- "10 177 1704424829 43 27 70 40 0 180 \n",
- "10 177 1704425009 43 27 70 40 0 180 \n",
- "10 177 1704425189 43 27 70 40 0 180 \n",
- "10 177 1704425369 43 27 70 40 0 180 \n",
- "10 177 1704425549 43 27 70 40 0 180 \n",
- "10 177 1704425729 43 27 70 40 0 180 \n",
- "10 177 1704425909 43 27 70 40 0 180 \n",
- "10 177 1704426089 43 27 70 40 0 180 \n",
- "10 177 1704426269 43 27 70 40 0 180 \n",
- "10 177 1704426449 43 27 70 40 0 180 \n",
- "10 177 1704426629 43 27 70 40 0 180 \n",
- "10 177 1704426809 43 27 70 40 0 180 \n",
- "10 177 1704426989 43 27 70 40 0 180 \n",
- "\n",
- " D_n S_n \n",
- "260 2520 2520 \n",
- "261 2700 2700 \n",
- "262 2880 2880 \n",
- "263 3060 3060 \n",
- "264 3240 3240 \n",
- "265 3420 3420 \n",
- "266 3599 3600 \n",
- "267 3780 3780 \n",
- "268 3960 3960 \n",
- "269 4140 4140 \n",
- "270 4320 4320 \n",
- "271 901 900 \n",
- "272 1080 1080 \n",
- "273 1261 1260 \n",
- "274 1441 1440 \n",
- "275 1620 1620 \n",
- "10 1800 1620 \n",
- "10 1980 1800 \n",
- "10 2160 1980 \n",
- "10 2340 2160 \n",
- "10 2520 2340 \n",
- "10 2700 2520 \n",
- "10 2880 2700 \n",
- "10 3060 2880 \n",
- "10 3240 3060 \n",
- "10 3420 3240 \n",
- "10 3600 3420 \n",
- "10 3780 3600 \n",
- "10 3960 3780 \n",
- "10 4140 3960 "
- ]
- },
- "execution_count": 237,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "rhist[list(rhist.columns)[:7] + list(rhist.columns)[-3:]].sort_values(by=['start_unix'])[260:290]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 174,
- "metadata": {},
- "outputs": [
- {
- "name": "stdout",
- "output_type": "stream",
- "text": [
- "['inter_no', 'start_unix', 'dura_A1', 'dura_A2', 'dura_A3', 'dura_A4', 'dura_A5', 'dura_A6', 'dura_A7', 'dura_A8', 'dura_B1', 'dura_B2', 'dura_B3', 'dura_B4', 'dura_B5', 'dura_B6', 'dura_B7', 'dura_B8', 'cycle', 'D_n', 'S_n', 'offset']\n",
- "['inter_no', 'dura_A1', 'dura_A2', 'dura_A3', 'dura_A4', 'dura_A5', 'dura_A6', 'dura_A7', 'dura_A8', 'dura_B1', 'dura_B2', 'dura_B3', 'dura_B4', 'dura_B5', 'dura_B6', 'dura_B7', 'dura_B8', 'cycle', 'offset', 'start_unix']\n"
- ]
- }
- ],
- "source": [
- "print(list(rhist.columns))\n",
- "print(list(new_rows[0].columns))"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": [
- "# 2-1. 참값 판단 프로세스\n",
- "hours = np.array(range(midnight, next_day + 1, 3600)) # 정각에 해당하는 시각들 목록\n",
- "\n",
- "rhist = rhistory.copy()[rhistory.inter_no==inter_no].reset_index(drop=True)\n",
- "\n",
- "# D_n 및 S_n 정의\n",
- "rhist['D_n'] = 0 # D_n : 시간차이\n",
- "rhist['S_n'] = 0 # S_n : 현시시간합\n",
- "for n in range(len(rhist)):\n",
- " curr_unix = rhist.iloc[n].start_unix # current start_unix\n",
- " ghour_lt_curr_unix = hours[hours <= curr_unix].max() # the greatest hour less than (or equal to) curr_unix\n",
- " start_unixes = rhist.start_unix.unique()\n",
- " start_unixes_lt_ghour = np.sort(start_unixes[start_unixes < ghour_lt_curr_unix]) # start unixes less than ghour_lt_curr_unix\n",
- " # 기준유닉스(base_unix) : curr_unix보다 작은 hour 중에서 가장 큰 값으로부터 다섯 번째로 작은 start_unix\n",
- " if list(start_unixes_lt_ghour):\n",
- " base_unix = start_unixes_lt_ghour[-5]\n",
- " # start_unixes_lt_ghour가 비었을 경우에는 맨 앞 start_unix로 base_unix를 지정\n",
- " else:\n",
- " base_unix = rhist.start_unix.min()\n",
- " D_n = curr_unix - base_unix\n",
- " S_n_durs = rhist[(rhist.start_unix > base_unix) & (rhist.start_unix <= curr_unix)] \\\n",
- " [[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]]\n",
- " S_n = S_n_durs.values.sum() // 2\n",
- " rhist.loc[n, ['D_n', 'S_n']] = [D_n, S_n]\n",
- "rhist[list(rhist.columns[:10]) + list(rhist.columns[-2:])]\n",
- "\n",
- "new_rows = []\n",
- "# 결측 및 이상치 처리\n",
- "prev_unix = rhist.loc[0, 'start_unix'] # previous start_unix\n",
- "curr_unix = rhist.loc[1, 'start_unix'] # current start_unix\n",
- "fina_unix = rhist.loc[-1, 'start_unix'] # final start_unix\n",
- "n = rhist[rhist.start_unix==curr_unix].index\n",
- "print(n)\n",
- "while curr_unix <= fina_unix:\n",
- " prev_unix = rhist.loc[n-1, 'start_unix'] # current start_unix\n",
- " curr_unix = rhist.loc[n, 'start_unix'] # previous start_unix\n",
- " cycle = rhist.iloc[n].cycle\n",
- " R_n = (curr_unix - prev_unix) / cycle # R_n : 비율\n",
- " # 매 반복마다 D_n 및 S_n을 다시 정의\n",
- " ghour_lt_curr_unix = hours[hours <= curr_unix].max() # the greatest hour less than (or equal to) curr_unix\n",
- " start_unixes = rhist.start_unix.unique()\n",
- " start_unixes_lt_ghour = np.sort(start_unixes[start_unixes < ghour_lt_curr_unix]) # start unixes less than ghour_lt_curr_unix\n",
- " # 기준유닉스(base_unix) : curr_unix보다 작은 hour 중에서 가장 큰 값으로부터 다섯 번째로 작은 start_unix\n",
- " if list(start_unixes_lt_ghour):\n",
- " base_unix = start_unixes_lt_ghour[-5]\n",
- " # start_unixes_lt_ghour가 비었을 경우에는 맨 앞 start_unix로 base_unix를 지정\n",
- " else:\n",
- " base_unix = rhist.start_unix.min()\n",
- " D_n = curr_unix - base_unix\n",
- " S_n_durs = rhist[(rhist.start_unix > base_unix) & (rhist.start_unix <= curr_unix)] \\\n",
- " [[f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)]]\n",
- " S_n = S_n_durs.values.sum() // 2\n",
- "\n",
- " # 참값인 경우\n",
- " if (abs(D_n - S_n) <= 5):\n",
- " print(n, 'true', D_n, S_n, curr_unix - prev_unix)\n",
- " pass\n",
- "\n",
- " # 참값이 아닌 경우\n",
- " else:\n",
- " # print(n, 'false', D_n, S_n, curr_unix - prev_unix)\n",
- " # 2-1-1. 결측치 처리 : 인접한 두 end_unix의 차이가 계획된 주기의 두 배보다 크면 결측이 일어났다고 판단\n",
- " if curr_unix - prev_unix >= 2 * cycle:\n",
- " # 현재 unix를 계획된 주기만큼 늘려가면서 한 행씩 채워나간다.\n",
- " # (다음 unix와의 차이가 계획된 주기보다 작거나 같아질 때까지)\n",
- " while curr_unix - prev_unix > cycle:\n",
- " # print(n, 'missing_values', curr_unix - prev_unix)\n",
- " prev_unix += cycle\n",
- " # 계획된 현시시간(prow) 불러오기\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 = plan[(plan.inter_no==inter_no) & (plan.start_hour==start_hour) & (plan.start_minute==start_minute)] # planned row\n",
- " prow = prow.drop(['start_hour', 'start_minute'], axis=1)\n",
- " prow['start_unix'] = prev_unix\n",
- " cycle = prow.iloc[0].cycle\n",
- " new_rows.append(prow)\n",
- "\n",
- " n += 1\n",
- "new_rows = pd.concat(new_rows)\n",
- "new_rows[list(new_rows.columns)[:6] + list(new_rows.columns)[-2:]]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 117,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " inter_no | \n",
- " start_unix | \n",
- " dura_A1 | \n",
- " dura_A2 | \n",
- " dura_A3 | \n",
- " dura_A4 | \n",
- " dura_A5 | \n",
- " dura_A6 | \n",
- " dura_A7 | \n",
- " dura_A8 | \n",
- " ... | \n",
- " dura_B3 | \n",
- " dura_B4 | \n",
- " dura_B5 | \n",
- " dura_B6 | \n",
- " dura_B7 | \n",
- " dura_B8 | \n",
- " cycle | \n",
- " D_n | \n",
- " S_n | \n",
- " diff | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 155 | \n",
- " 177 | \n",
- " 1704403768 | \n",
- " 36 | \n",
- " 20 | \n",
- " 68 | \n",
- " 26 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " ... | \n",
- " 68 | \n",
- " 26 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 150 | \n",
- " 2518 | \n",
- " 2400 | \n",
- " 268.0 | \n",
- "
\n",
- " \n",
- " 276 | \n",
- " 177 | \n",
- " 1704432930 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " ... | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 0 | \n",
- " 180 | \n",
- " 9180 | \n",
- " 900 | \n",
- " 8461.0 | \n",
- "
\n",
- " \n",
- "
\n",
- "
2 rows × 22 columns
\n",
- "
"
- ],
- "text/plain": [
- " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 \\\n",
- "155 177 1704403768 36 20 68 26 0 \n",
- "276 177 1704432930 43 27 70 40 0 \n",
- "\n",
- " dura_A6 dura_A7 dura_A8 ... dura_B3 dura_B4 dura_B5 dura_B6 \\\n",
- "155 0 0 0 ... 68 26 0 0 \n",
- "276 0 0 0 ... 70 40 0 0 \n",
- "\n",
- " dura_B7 dura_B8 cycle D_n S_n diff \n",
- "155 0 0 150 2518 2400 268.0 \n",
- "276 0 0 180 9180 900 8461.0 \n",
- "\n",
- "[2 rows x 22 columns]"
- ]
- },
- "execution_count": 117,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "rhist_diff = rhist.copy()\n",
- "rhist_diff['diff'] = rhist_diff['start_unix'].diff()\n",
- "rhist_diff[rhist_diff['diff'] - rhist_diff['cycle'] > 10]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 130,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " inter_no | \n",
- " start_unix | \n",
- " dura_A1 | \n",
- " dura_A2 | \n",
- " dura_A3 | \n",
- " dura_A4 | \n",
- " dura_A5 | \n",
- " cycle | \n",
- " D_n | \n",
- " S_n | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 270 | \n",
- " 177 | \n",
- " 1704423570 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4320 | \n",
- " 4320 | \n",
- "
\n",
- " \n",
- " 271 | \n",
- " 177 | \n",
- " 1704423750 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 901 | \n",
- " 900 | \n",
- "
\n",
- " \n",
- " 272 | \n",
- " 177 | \n",
- " 1704423929 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1080 | \n",
- " 1080 | \n",
- "
\n",
- " \n",
- " 273 | \n",
- " 177 | \n",
- " 1704424110 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1261 | \n",
- " 1260 | \n",
- "
\n",
- " \n",
- " 274 | \n",
- " 177 | \n",
- " 1704424290 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1441 | \n",
- " 1440 | \n",
- "
\n",
- " \n",
- " 275 | \n",
- " 177 | \n",
- " 1704424469 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1620 | \n",
- " 1620 | \n",
- "
\n",
- " \n",
- " 276 | \n",
- " 177 | \n",
- " 1704432930 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 9180 | \n",
- " 900 | \n",
- "
\n",
- " \n",
- " 277 | \n",
- " 177 | \n",
- " 1704433110 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 9360 | \n",
- " 1080 | \n",
- "
\n",
- " \n",
- " 278 | \n",
- " 177 | \n",
- " 1704433290 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 9540 | \n",
- " 1260 | \n",
- "
\n",
- " \n",
- " 279 | \n",
- " 177 | \n",
- " 1704433470 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 9720 | \n",
- " 1440 | \n",
- "
\n",
- " \n",
- " 280 | \n",
- " 177 | \n",
- " 1704433650 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 9900 | \n",
- " 1620 | \n",
- "
\n",
- " \n",
- " 281 | \n",
- " 177 | \n",
- " 1704433830 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 10080 | \n",
- " 1800 | \n",
- "
\n",
- " \n",
- " 282 | \n",
- " 177 | \n",
- " 1704434011 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 10261 | \n",
- " 1980 | \n",
- "
\n",
- " \n",
- " 283 | \n",
- " 177 | \n",
- " 1704434190 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 10440 | \n",
- " 2160 | \n",
- "
\n",
- " \n",
- " 284 | \n",
- " 177 | \n",
- " 1704434370 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 10620 | \n",
- " 2340 | \n",
- "
\n",
- " \n",
- " 285 | \n",
- " 177 | \n",
- " 1704434550 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 900 | \n",
- " 900 | \n",
- "
\n",
- " \n",
- " 286 | \n",
- " 177 | \n",
- " 1704434729 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1079 | \n",
- " 1080 | \n",
- "
\n",
- " \n",
- " 287 | \n",
- " 177 | \n",
- " 1704434910 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1260 | \n",
- " 1260 | \n",
- "
\n",
- " \n",
- " 288 | \n",
- " 177 | \n",
- " 1704435090 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1440 | \n",
- " 1440 | \n",
- "
\n",
- " \n",
- " 289 | \n",
- " 177 | \n",
- " 1704435270 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1620 | \n",
- " 1620 | \n",
- "
\n",
- " \n",
- " 290 | \n",
- " 177 | \n",
- " 1704435450 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1800 | \n",
- " 1800 | \n",
- "
\n",
- " \n",
- " 291 | \n",
- " 177 | \n",
- " 1704435630 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1980 | \n",
- " 1980 | \n",
- "
\n",
- " \n",
- " 292 | \n",
- " 177 | \n",
- " 1704435810 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2160 | \n",
- " 2160 | \n",
- "
\n",
- " \n",
- " 293 | \n",
- " 177 | \n",
- " 1704435990 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2340 | \n",
- " 2340 | \n",
- "
\n",
- " \n",
- " 294 | \n",
- " 177 | \n",
- " 1704436170 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2520 | \n",
- " 2520 | \n",
- "
\n",
- " \n",
- " 295 | \n",
- " 177 | \n",
- " 1704436351 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2701 | \n",
- " 2700 | \n",
- "
\n",
- " \n",
- " 296 | \n",
- " 177 | \n",
- " 1704436530 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2880 | \n",
- " 2880 | \n",
- "
\n",
- " \n",
- " 297 | \n",
- " 177 | \n",
- " 1704436710 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3060 | \n",
- " 3060 | \n",
- "
\n",
- " \n",
- " 298 | \n",
- " 177 | \n",
- " 1704436890 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3240 | \n",
- " 3240 | \n",
- "
\n",
- " \n",
- " 299 | \n",
- " 177 | \n",
- " 1704437070 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3420 | \n",
- " 3420 | \n",
- "
\n",
- " \n",
- "
\n",
- "
"
- ],
- "text/plain": [
- " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 cycle \\\n",
- "270 177 1704423570 43 27 70 40 0 180 \n",
- "271 177 1704423750 43 27 70 40 0 180 \n",
- "272 177 1704423929 43 27 70 40 0 180 \n",
- "273 177 1704424110 43 27 70 40 0 180 \n",
- "274 177 1704424290 43 27 70 40 0 180 \n",
- "275 177 1704424469 43 27 70 40 0 180 \n",
- "276 177 1704432930 43 27 70 40 0 180 \n",
- "277 177 1704433110 43 27 70 40 0 180 \n",
- "278 177 1704433290 43 27 70 40 0 180 \n",
- "279 177 1704433470 43 27 70 40 0 180 \n",
- "280 177 1704433650 43 27 70 40 0 180 \n",
- "281 177 1704433830 43 27 70 40 0 180 \n",
- "282 177 1704434011 43 27 70 40 0 180 \n",
- "283 177 1704434190 43 27 70 40 0 180 \n",
- "284 177 1704434370 43 27 70 40 0 180 \n",
- "285 177 1704434550 43 27 70 40 0 180 \n",
- "286 177 1704434729 43 27 70 40 0 180 \n",
- "287 177 1704434910 43 27 70 40 0 180 \n",
- "288 177 1704435090 43 27 70 40 0 180 \n",
- "289 177 1704435270 43 27 70 40 0 180 \n",
- "290 177 1704435450 43 27 70 40 0 180 \n",
- "291 177 1704435630 43 27 70 40 0 180 \n",
- "292 177 1704435810 43 27 70 40 0 180 \n",
- "293 177 1704435990 43 27 70 40 0 180 \n",
- "294 177 1704436170 43 27 70 40 0 180 \n",
- "295 177 1704436351 43 27 70 40 0 180 \n",
- "296 177 1704436530 43 27 70 40 0 180 \n",
- "297 177 1704436710 43 27 70 40 0 180 \n",
- "298 177 1704436890 43 27 70 40 0 180 \n",
- "299 177 1704437070 43 27 70 40 0 180 \n",
- "\n",
- " D_n S_n \n",
- "270 4320 4320 \n",
- "271 901 900 \n",
- "272 1080 1080 \n",
- "273 1261 1260 \n",
- "274 1441 1440 \n",
- "275 1620 1620 \n",
- "276 9180 900 \n",
- "277 9360 1080 \n",
- "278 9540 1260 \n",
- "279 9720 1440 \n",
- "280 9900 1620 \n",
- "281 10080 1800 \n",
- "282 10261 1980 \n",
- "283 10440 2160 \n",
- "284 10620 2340 \n",
- "285 900 900 \n",
- "286 1079 1080 \n",
- "287 1260 1260 \n",
- "288 1440 1440 \n",
- "289 1620 1620 \n",
- "290 1800 1800 \n",
- "291 1980 1980 \n",
- "292 2160 2160 \n",
- "293 2340 2340 \n",
- "294 2520 2520 \n",
- "295 2701 2700 \n",
- "296 2880 2880 \n",
- "297 3060 3060 \n",
- "298 3240 3240 \n",
- "299 3420 3420 "
- ]
- },
- "execution_count": 130,
- "metadata": {},
- "output_type": "execute_result"
- }
- ],
- "source": [
- "rhist[list(rhist.columns)[:7] + list(rhist.columns)[-3:]][270:300]"
- ]
- },
- {
- "cell_type": "code",
- "execution_count": 109,
- "metadata": {},
- "outputs": [
- {
- "data": {
- "text/html": [
- "\n",
- "\n",
- "
\n",
- " \n",
- " \n",
- " | \n",
- " inter_no | \n",
- " start_unix | \n",
- " dura_A1 | \n",
- " dura_A2 | \n",
- " dura_A3 | \n",
- " dura_A4 | \n",
- " dura_A5 | \n",
- " cycle | \n",
- " D_n | \n",
- " S_n | \n",
- "
\n",
- " \n",
- " \n",
- " \n",
- " 210 | \n",
- " 177 | \n",
- " 1704412780 | \n",
- " 40 | \n",
- " 25 | \n",
- " 71 | \n",
- " 34 | \n",
- " 0 | \n",
- " 170 | \n",
- " 4420 | \n",
- " 4420 | \n",
- "
\n",
- " \n",
- " 211 | \n",
- " 177 | \n",
- " 1704412950 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 850 | \n",
- " 860 | \n",
- "
\n",
- " \n",
- " 212 | \n",
- " 177 | \n",
- " 1704413130 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1030 | \n",
- " 1040 | \n",
- "
\n",
- " \n",
- " 213 | \n",
- " 177 | \n",
- " 1704413310 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1210 | \n",
- " 1220 | \n",
- "
\n",
- " \n",
- " 214 | \n",
- " 177 | \n",
- " 1704413489 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1389 | \n",
- " 1400 | \n",
- "
\n",
- " \n",
- " 215 | \n",
- " 177 | \n",
- " 1704413670 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1570 | \n",
- " 1580 | \n",
- "
\n",
- " \n",
- " 216 | \n",
- " 177 | \n",
- " 1704413850 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1750 | \n",
- " 1760 | \n",
- "
\n",
- " \n",
- " 217 | \n",
- " 177 | \n",
- " 1704414030 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1930 | \n",
- " 1940 | \n",
- "
\n",
- " \n",
- " 218 | \n",
- " 177 | \n",
- " 1704414210 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2110 | \n",
- " 2120 | \n",
- "
\n",
- " \n",
- " 219 | \n",
- " 177 | \n",
- " 1704414390 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2290 | \n",
- " 2300 | \n",
- "
\n",
- " \n",
- " 220 | \n",
- " 177 | \n",
- " 1704414570 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2470 | \n",
- " 2480 | \n",
- "
\n",
- " \n",
- " 221 | \n",
- " 177 | \n",
- " 1704414750 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2650 | \n",
- " 2660 | \n",
- "
\n",
- " \n",
- " 222 | \n",
- " 177 | \n",
- " 1704414930 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2830 | \n",
- " 2840 | \n",
- "
\n",
- " \n",
- " 223 | \n",
- " 177 | \n",
- " 1704415110 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3010 | \n",
- " 3020 | \n",
- "
\n",
- " \n",
- " 224 | \n",
- " 177 | \n",
- " 1704415290 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3190 | \n",
- " 3200 | \n",
- "
\n",
- " \n",
- " 225 | \n",
- " 177 | \n",
- " 1704415470 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3370 | \n",
- " 3380 | \n",
- "
\n",
- " \n",
- " 226 | \n",
- " 177 | \n",
- " 1704415650 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3550 | \n",
- " 3560 | \n",
- "
\n",
- " \n",
- " 227 | \n",
- " 177 | \n",
- " 1704415830 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3730 | \n",
- " 3740 | \n",
- "
\n",
- " \n",
- " 228 | \n",
- " 177 | \n",
- " 1704416010 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3910 | \n",
- " 3920 | \n",
- "
\n",
- " \n",
- " 229 | \n",
- " 177 | \n",
- " 1704416190 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4090 | \n",
- " 4100 | \n",
- "
\n",
- " \n",
- " 230 | \n",
- " 177 | \n",
- " 1704416370 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4270 | \n",
- " 4280 | \n",
- "
\n",
- " \n",
- " 231 | \n",
- " 177 | \n",
- " 1704416551 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 901 | \n",
- " 900 | \n",
- "
\n",
- " \n",
- " 232 | \n",
- " 177 | \n",
- " 1704416730 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1080 | \n",
- " 1080 | \n",
- "
\n",
- " \n",
- " 233 | \n",
- " 177 | \n",
- " 1704416911 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1261 | \n",
- " 1260 | \n",
- "
\n",
- " \n",
- " 234 | \n",
- " 177 | \n",
- " 1704417090 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1440 | \n",
- " 1440 | \n",
- "
\n",
- " \n",
- " 235 | \n",
- " 177 | \n",
- " 1704417270 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1620 | \n",
- " 1620 | \n",
- "
\n",
- " \n",
- " 236 | \n",
- " 177 | \n",
- " 1704417449 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1799 | \n",
- " 1800 | \n",
- "
\n",
- " \n",
- " 237 | \n",
- " 177 | \n",
- " 1704417630 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1980 | \n",
- " 1980 | \n",
- "
\n",
- " \n",
- " 238 | \n",
- " 177 | \n",
- " 1704417810 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2160 | \n",
- " 2160 | \n",
- "
\n",
- " \n",
- " 239 | \n",
- " 177 | \n",
- " 1704417990 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2340 | \n",
- " 2340 | \n",
- "
\n",
- " \n",
- " 240 | \n",
- " 177 | \n",
- " 1704418169 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2519 | \n",
- " 2520 | \n",
- "
\n",
- " \n",
- " 241 | \n",
- " 177 | \n",
- " 1704418350 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2700 | \n",
- " 2700 | \n",
- "
\n",
- " \n",
- " 242 | \n",
- " 177 | \n",
- " 1704418530 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2880 | \n",
- " 2880 | \n",
- "
\n",
- " \n",
- " 243 | \n",
- " 177 | \n",
- " 1704418710 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3060 | \n",
- " 3060 | \n",
- "
\n",
- " \n",
- " 244 | \n",
- " 177 | \n",
- " 1704418890 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3240 | \n",
- " 3240 | \n",
- "
\n",
- " \n",
- " 245 | \n",
- " 177 | \n",
- " 1704419070 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3420 | \n",
- " 3420 | \n",
- "
\n",
- " \n",
- " 246 | \n",
- " 177 | \n",
- " 1704419250 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3600 | \n",
- " 3600 | \n",
- "
\n",
- " \n",
- " 247 | \n",
- " 177 | \n",
- " 1704419430 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3780 | \n",
- " 3780 | \n",
- "
\n",
- " \n",
- " 248 | \n",
- " 177 | \n",
- " 1704419610 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3960 | \n",
- " 3960 | \n",
- "
\n",
- " \n",
- " 249 | \n",
- " 177 | \n",
- " 1704419790 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4140 | \n",
- " 4140 | \n",
- "
\n",
- " \n",
- " 250 | \n",
- " 177 | \n",
- " 1704419969 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4319 | \n",
- " 4320 | \n",
- "
\n",
- " \n",
- " 251 | \n",
- " 177 | \n",
- " 1704420150 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 900 | \n",
- " 900 | \n",
- "
\n",
- " \n",
- " 252 | \n",
- " 177 | \n",
- " 1704420330 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1080 | \n",
- " 1080 | \n",
- "
\n",
- " \n",
- " 253 | \n",
- " 177 | \n",
- " 1704420510 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1260 | \n",
- " 1260 | \n",
- "
\n",
- " \n",
- " 254 | \n",
- " 177 | \n",
- " 1704420690 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1440 | \n",
- " 1440 | \n",
- "
\n",
- " \n",
- " 255 | \n",
- " 177 | \n",
- " 1704420870 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1620 | \n",
- " 1620 | \n",
- "
\n",
- " \n",
- " 256 | \n",
- " 177 | \n",
- " 1704421050 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1800 | \n",
- " 1800 | \n",
- "
\n",
- " \n",
- " 257 | \n",
- " 177 | \n",
- " 1704421230 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 1980 | \n",
- " 1980 | \n",
- "
\n",
- " \n",
- " 258 | \n",
- " 177 | \n",
- " 1704421411 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2161 | \n",
- " 2160 | \n",
+ "output_type": "execute_result"
+ }
+ ],
+ "source": [
+ "# 계층화된 형태로 변환\n",
+ "hrhists = [] # hierarchied recent history\n",
+ "for i, row in rhists.iterrows():\n",
+ " inter_no = row.inter_no\n",
+ " start_unix = row.start_unix\n",
+ "\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",
+ " phas_As = [isplit[j][0] for j in isplit.keys()]\n",
+ " phas_Bs = [isplit[j][1] for j in isplit.keys()]\n",
+ " durs_A = row[[f'dura_A{j}' for j in range(1,9)]]\n",
+ " durs_B = row[[f'dura_B{j}' for j in range(1,9)]]\n",
+ " durations = []\n",
+ " for j in range(1, len(isplit)+1):\n",
+ " ja = isplit[j][0]\n",
+ " jb = isplit[j][1]\n",
+ " if ja == jb:\n",
+ " durations.append(min(durs_A[ja-1], durs_B[jb-1]))\n",
+ " else:\n",
+ " durations.append(abs(durs_A[ja-1] - durs_B[ja-1]))\n",
+ " new_rows = pd.DataFrame({'inter_no':[inter_no] * len(durations), 'start_unix':[start_unix] * len(durations),\n",
+ " 'phas_A':phas_As, 'phas_B':phas_Bs, 'duration':durations})\n",
+ " hrhists.append(new_rows)\n",
+ "hrhists = pd.concat(hrhists)\n",
+ "hrhists = hrhists.sort_values(by = ['start_unix', 'inter_no', 'phas_A', 'phas_B']).reset_index(drop=True)\n",
+ "hrhists"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 133,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "movement = time2movement[present_time]"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 138,
+ "metadata": {},
+ "outputs": [],
+ "source": [
+ "# 중복을 제거하고 (inter_no, start_unix) 쌍을 만듭니다.\n",
+ "hrhists_inter_unix = set(hrhists[['inter_no', 'start_unix']].drop_duplicates().itertuples(index=False, name=None))\n",
+ "movement_inter_unix = set(movement[['inter_no', 'start_unix']].drop_duplicates().itertuples(index=False, name=None))\n",
+ "\n",
+ "# hrhists에는 있지만 movement에는 없는 (inter_no, start_unix) 쌍을 찾습니다.\n",
+ "missing_in_movement = hrhists_inter_unix - movement_inter_unix\n",
+ "\n",
+ "# 새로운 행들을 생성합니다.\n",
+ "new_rows = []\n",
+ "for inter_no, start_unix in missing_in_movement:\n",
+ " # movements_wo_start_unix에서 해당 inter_no의 데이터를 찾습니다.\n",
+ " new_row = movements_wo_start_unix[movements_wo_start_unix['inter_no'] == inter_no].copy()\n",
+ " # start_unix 값을 설정합니다.\n",
+ " new_row['start_unix'] = start_unix\n",
+ " new_rows.append(new_row)\n",
+ "\n",
+ "# 새로운 데이터프레임을 생성하고 기존 movement 데이터프레임과 합칩니다.\n",
+ "new_movement = pd.concat(new_rows, ignore_index=True)\n",
+ "movement_updated = pd.concat([movement, new_movement], ignore_index=True)"
+ ]
+ },
+ {
+ "cell_type": "code",
+ "execution_count": 143,
+ "metadata": {},
+ "outputs": [
+ {
+ "data": {
+ "text/html": [
+ "\n",
+ "\n",
+ "
\n",
+ " \n",
+ " \n",
+ " | \n",
+ " inter_no | \n",
+ " node_id | \n",
+ " start_unix | \n",
+ " phas_A | \n",
+ " phas_B | \n",
+ " duration | \n",
+ " inc_edge_A | \n",
+ " out_edge_A | \n",
+ " inc_edge_B | \n",
+ " out_edge_B | \n",
"
\n",
+ " \n",
+ " \n",
" \n",
- " 259 | \n",
+ " 0 | \n",
" 177 | \n",
- " 1704421590 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2340 | \n",
- " 2340 | \n",
+ " i2 | \n",
+ " 1704388801 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 36 | \n",
+ " -571542809_01 | \n",
+ " 571542811_01 | \n",
+ " 571542811_02 | \n",
+ " 571542809_01 | \n",
"
\n",
" \n",
- " 260 | \n",
+ " 1 | \n",
" 177 | \n",
- " 1704421770 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2520 | \n",
- " 2520 | \n",
+ " i2 | \n",
+ " 1704388801 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 20 | \n",
+ " 571542811_02 | \n",
+ " 571542107_01 | \n",
+ " -571542809_01 | \n",
+ " 571542809_01 | \n",
"
\n",
" \n",
- " 261 | \n",
+ " 2 | \n",
" 177 | \n",
- " 1704421950 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2700 | \n",
- " 2700 | \n",
+ " i2 | \n",
+ " 1704388801 | \n",
+ " 3 | \n",
+ " 3 | \n",
+ " 68 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
"
\n",
" \n",
- " 262 | \n",
+ " 3 | \n",
" 177 | \n",
- " 1704422130 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 2880 | \n",
- " 2880 | \n",
+ " i2 | \n",
+ " 1704388801 | \n",
+ " 4 | \n",
+ " 4 | \n",
+ " 26 | \n",
+ " -571542809_01 | \n",
+ " 571542811_01 | \n",
+ " 571542107_02 | \n",
+ " 571542809_01 | \n",
"
\n",
" \n",
- " 263 | \n",
- " 177 | \n",
- " 1704422310 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3060 | \n",
- " 3060 | \n",
+ " 4 | \n",
+ " 176 | \n",
+ " i1 | \n",
+ " 1704388850 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 37 | \n",
+ " -571542810_01 | \n",
+ " -571542797_02.99 | \n",
+ " 571542797_02.99 | \n",
+ " 571542810_01 | \n",
"
\n",
" \n",
- " 264 | \n",
- " 177 | \n",
- " 1704422490 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3240 | \n",
- " 3240 | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
+ " ... | \n",
"
\n",
" \n",
- " 265 | \n",
- " 177 | \n",
- " 1704422670 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3420 | \n",
- " 3420 | \n",
+ " 748 | \n",
+ " 206 | \n",
+ " i7 | \n",
+ " 1704392160 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 35 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
"
\n",
" \n",
- " 266 | \n",
- " 177 | \n",
- " 1704422849 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3599 | \n",
- " 3600 | \n",
+ " 749 | \n",
+ " 206 | \n",
+ " i7 | \n",
+ " 1704392160 | \n",
+ " 3 | \n",
+ " 3 | \n",
+ " 26 | \n",
+ " -571511538_02 | \n",
+ " 571542073_02 | \n",
+ " 571542073_01 | \n",
+ " 571511538_02 | \n",
"
\n",
" \n",
- " 267 | \n",
- " 177 | \n",
- " 1704423030 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3780 | \n",
- " 3780 | \n",
+ " 750 | \n",
+ " 206 | \n",
+ " i7 | \n",
+ " 1704392160 | \n",
+ " 4 | \n",
+ " 4 | \n",
+ " 26 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
"
\n",
" \n",
- " 268 | \n",
- " 177 | \n",
- " 1704423210 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 3960 | \n",
- " 3960 | \n",
+ " 751 | \n",
+ " 202 | \n",
+ " i9 | \n",
+ " 1704392211 | \n",
+ " 1 | \n",
+ " 1 | \n",
+ " 39 | \n",
+ " 571510152_02 | \n",
+ " -571510152_01 | \n",
+ " 571510152_01 | \n",
+ " 571510152_01.65 | \n",
"
\n",
" \n",
- " 269 | \n",
- " 177 | \n",
- " 1704423390 | \n",
- " 43 | \n",
- " 27 | \n",
- " 70 | \n",
- " 40 | \n",
- " 0 | \n",
- " 180 | \n",
- " 4140 | \n",
- " 4140 | \n",
+ " 752 | \n",
+ " 202 | \n",
+ " i9 | \n",
+ " 1704392211 | \n",
+ " 2 | \n",
+ " 2 | \n",
+ " 101 | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
+ " NaN | \n",
"
\n",
" \n",
"
\n",
+ "
757 rows × 10 columns
\n",
"
"
],
"text/plain": [
- " inter_no start_unix dura_A1 dura_A2 dura_A3 dura_A4 dura_A5 cycle \\\n",
- "210 177 1704412780 40 25 71 34 0 170 \n",
- "211 177 1704412950 43 27 70 40 0 180 \n",
- "212 177 1704413130 43 27 70 40 0 180 \n",
- "213 177 1704413310 43 27 70 40 0 180 \n",
- "214 177 1704413489 43 27 70 40 0 180 \n",
- "215 177 1704413670 43 27 70 40 0 180 \n",
- "216 177 1704413850 43 27 70 40 0 180 \n",
- "217 177 1704414030 43 27 70 40 0 180 \n",
- "218 177 1704414210 43 27 70 40 0 180 \n",
- "219 177 1704414390 43 27 70 40 0 180 \n",
- "220 177 1704414570 43 27 70 40 0 180 \n",
- "221 177 1704414750 43 27 70 40 0 180 \n",
- "222 177 1704414930 43 27 70 40 0 180 \n",
- "223 177 1704415110 43 27 70 40 0 180 \n",
- "224 177 1704415290 43 27 70 40 0 180 \n",
- "225 177 1704415470 43 27 70 40 0 180 \n",
- "226 177 1704415650 43 27 70 40 0 180 \n",
- "227 177 1704415830 43 27 70 40 0 180 \n",
- "228 177 1704416010 43 27 70 40 0 180 \n",
- "229 177 1704416190 43 27 70 40 0 180 \n",
- "230 177 1704416370 43 27 70 40 0 180 \n",
- "231 177 1704416551 43 27 70 40 0 180 \n",
- "232 177 1704416730 43 27 70 40 0 180 \n",
- "233 177 1704416911 43 27 70 40 0 180 \n",
- "234 177 1704417090 43 27 70 40 0 180 \n",
- "235 177 1704417270 43 27 70 40 0 180 \n",
- "236 177 1704417449 43 27 70 40 0 180 \n",
- "237 177 1704417630 43 27 70 40 0 180 \n",
- "238 177 1704417810 43 27 70 40 0 180 \n",
- "239 177 1704417990 43 27 70 40 0 180 \n",
- "240 177 1704418169 43 27 70 40 0 180 \n",
- "241 177 1704418350 43 27 70 40 0 180 \n",
- "242 177 1704418530 43 27 70 40 0 180 \n",
- "243 177 1704418710 43 27 70 40 0 180 \n",
- "244 177 1704418890 43 27 70 40 0 180 \n",
- "245 177 1704419070 43 27 70 40 0 180 \n",
- "246 177 1704419250 43 27 70 40 0 180 \n",
- "247 177 1704419430 43 27 70 40 0 180 \n",
- "248 177 1704419610 43 27 70 40 0 180 \n",
- "249 177 1704419790 43 27 70 40 0 180 \n",
- "250 177 1704419969 43 27 70 40 0 180 \n",
- "251 177 1704420150 43 27 70 40 0 180 \n",
- "252 177 1704420330 43 27 70 40 0 180 \n",
- "253 177 1704420510 43 27 70 40 0 180 \n",
- "254 177 1704420690 43 27 70 40 0 180 \n",
- "255 177 1704420870 43 27 70 40 0 180 \n",
- "256 177 1704421050 43 27 70 40 0 180 \n",
- "257 177 1704421230 43 27 70 40 0 180 \n",
- "258 177 1704421411 43 27 70 40 0 180 \n",
- "259 177 1704421590 43 27 70 40 0 180 \n",
- "260 177 1704421770 43 27 70 40 0 180 \n",
- "261 177 1704421950 43 27 70 40 0 180 \n",
- "262 177 1704422130 43 27 70 40 0 180 \n",
- "263 177 1704422310 43 27 70 40 0 180 \n",
- "264 177 1704422490 43 27 70 40 0 180 \n",
- "265 177 1704422670 43 27 70 40 0 180 \n",
- "266 177 1704422849 43 27 70 40 0 180 \n",
- "267 177 1704423030 43 27 70 40 0 180 \n",
- "268 177 1704423210 43 27 70 40 0 180 \n",
- "269 177 1704423390 43 27 70 40 0 180 \n",
+ " inter_no node_id start_unix phas_A phas_B duration inc_edge_A \\\n",
+ "0 177 i2 1704388801 1 1 36 -571542809_01 \n",
+ "1 177 i2 1704388801 2 2 20 571542811_02 \n",
+ "2 177 i2 1704388801 3 3 68 NaN \n",
+ "3 177 i2 1704388801 4 4 26 -571542809_01 \n",
+ "4 176 i1 1704388850 1 1 37 -571542810_01 \n",
+ ".. ... ... ... ... ... ... ... \n",
+ "748 206 i7 1704392160 2 2 35 NaN \n",
+ "749 206 i7 1704392160 3 3 26 -571511538_02 \n",
+ "750 206 i7 1704392160 4 4 26 NaN \n",
+ "751 202 i9 1704392211 1 1 39 571510152_02 \n",
+ "752 202 i9 1704392211 2 2 101 NaN \n",
"\n",
- " D_n S_n \n",
- "210 4420 4420 \n",
- "211 850 860 \n",
- "212 1030 1040 \n",
- "213 1210 1220 \n",
- "214 1389 1400 \n",
- "215 1570 1580 \n",
- "216 1750 1760 \n",
- "217 1930 1940 \n",
- "218 2110 2120 \n",
- "219 2290 2300 \n",
- "220 2470 2480 \n",
- "221 2650 2660 \n",
- "222 2830 2840 \n",
- "223 3010 3020 \n",
- "224 3190 3200 \n",
- "225 3370 3380 \n",
- "226 3550 3560 \n",
- "227 3730 3740 \n",
- "228 3910 3920 \n",
- "229 4090 4100 \n",
- "230 4270 4280 \n",
- "231 901 900 \n",
- "232 1080 1080 \n",
- "233 1261 1260 \n",
- "234 1440 1440 \n",
- "235 1620 1620 \n",
- "236 1799 1800 \n",
- "237 1980 1980 \n",
- "238 2160 2160 \n",
- "239 2340 2340 \n",
- "240 2519 2520 \n",
- "241 2700 2700 \n",
- "242 2880 2880 \n",
- "243 3060 3060 \n",
- "244 3240 3240 \n",
- "245 3420 3420 \n",
- "246 3600 3600 \n",
- "247 3780 3780 \n",
- "248 3960 3960 \n",
- "249 4140 4140 \n",
- "250 4319 4320 \n",
- "251 900 900 \n",
- "252 1080 1080 \n",
- "253 1260 1260 \n",
- "254 1440 1440 \n",
- "255 1620 1620 \n",
- "256 1800 1800 \n",
- "257 1980 1980 \n",
- "258 2161 2160 \n",
- "259 2340 2340 \n",
- "260 2520 2520 \n",
- "261 2700 2700 \n",
- "262 2880 2880 \n",
- "263 3060 3060 \n",
- "264 3240 3240 \n",
- "265 3420 3420 \n",
- "266 3599 3600 \n",
- "267 3780 3780 \n",
- "268 3960 3960 \n",
- "269 4140 4140 "
+ " out_edge_A inc_edge_B out_edge_B \n",
+ "0 571542811_01 571542811_02 571542809_01 \n",
+ "1 571542107_01 -571542809_01 571542809_01 \n",
+ "2 NaN NaN NaN \n",
+ "3 571542811_01 571542107_02 571542809_01 \n",
+ "4 -571542797_02.99 571542797_02.99 571542810_01 \n",
+ ".. ... ... ... \n",
+ "748 NaN NaN NaN \n",
+ "749 571542073_02 571542073_01 571511538_02 \n",
+ "750 NaN NaN NaN \n",
+ "751 -571510152_01 571510152_01 571510152_01.65 \n",
+ "752 NaN NaN NaN \n",
+ "\n",
+ "[757 rows x 10 columns]"
]
},
- "execution_count": 109,
+ "execution_count": 143,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
- "rhist[210:210+60][list(rhist.columns)[:7] + list(rhist.columns)[-3:]]"
+ "movedur = pd.merge(movement_updated, hrhists, how='inner', on=['inter_no', 'start_unix', 'phas_A', 'phas_B']) # 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",
+ "\n",
+ "# 이동류 매칭 테이블에서 진입id, 진출id를 가져와서 붙임.\n",
+ "for i, row in movedur.iterrows():\n",
+ " inter_no = row.inter_no\n",
+ " start_unix = row.start_unix\n",
+ " # incoming and outgoing edges A\n",
+ " move_A = row.move_A\n",
+ " if move_A in [17, 18]:\n",
+ " inc_edge_A = np.nan\n",
+ " out_edge_A = np.nan\n",
+ " else:\n",
+ " match_A = matching[(matching.inter_no == inter_no) & (matching.move_no == move_A)].iloc[0]\n",
+ " inc_edge_A = match_A.inc_edge\n",
+ " out_edge_A = match_A.out_edge\n",
+ " movedur.loc[i, ['inc_edge_A', 'out_edge_A']] = [inc_edge_A, out_edge_A]\n",
+ " # incoming and outgoing edges B\n",
+ " move_B = row.move_B\n",
+ " if move_B in [17, 18]:\n",
+ " inc_edge_B = np.nan\n",
+ " out_edge_B = np.nan\n",
+ " else:\n",
+ " match_B = matching[(matching.inter_no == inter_no) & (matching.move_no == move_B)].iloc[0]\n",
+ " inc_edge_B = match_B.inc_edge\n",
+ " out_edge_B = match_B.out_edge\n",
+ " movedur.loc[i, ['inc_edge_B', 'out_edge_B']] = [inc_edge_B, out_edge_B]\n",
+ "\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",
+ "histid['node_id'] = histid['inter_no'].map(inter2node)\n",
+ "histid = histid[['inter_no', 'node_id', 'start_unix', 'phas_A', 'phas_B', 'duration', 'inc_edge_A', 'out_edge_A', 'inc_edge_B', 'out_edge_B']]\n",
+ "histid = histid[histid.start_unix > present_time - 3600]\n",
+ "histid"
]
},
- {
- "cell_type": "code",
- "execution_count": null,
- "metadata": {},
- "outputs": [],
- "source": []
- },
{
"cell_type": "code",
"execution_count": 71,
@@ -9042,7 +6389,7 @@
"rhistory = rhistory[['inter_no', 'start_unix'] + [f'dura_{alph}{j}' for alph in ['A', 'B'] for j in range(1,9)] + ['cycle']]\n",
"\n",
"# 계층화된 형태로 변환\n",
- "hrhistory = [] # hierarchied recent history\n",
+ "hrhistory = [] # hierarchized recent history\n",
"for i, row in rhistory.iterrows():\n",
" inter_no = row.inter_no\n",
" start_unix = row.start_unix\n",
diff --git a/Analysis/0109_preprocess/0125/hrhists.csv b/Analysis/0109_preprocess/0125/hrhists.csv
new file mode 100644
index 000000000..bcb6a6140
--- /dev/null
+++ b/Analysis/0109_preprocess/0125/hrhists.csv
@@ -0,0 +1,773 @@
+,inter_no,start_unix,phas_A,phas_B,duration
+0,178,1704388800,1,1,38
+1,178,1704388800,2,2,39
+2,178,1704388800,3,3,40
+3,178,1704388800,4,4,23
+4,201,1704388800,1,1,24
+5,201,1704388800,2,2,24
+6,201,1704388800,3,3,17
+7,201,1704388800,4,4,58
+8,201,1704388800,5,5,17
+9,202,1704388800,1,1,39
+10,202,1704388800,2,2,101
+11,206,1704388800,1,1,33
+12,206,1704388800,2,2,35
+13,206,1704388800,3,3,26
+14,206,1704388800,4,4,26
+15,177,1704388801,1,1,36
+16,177,1704388801,2,2,20
+17,177,1704388801,3,3,68
+18,177,1704388801,4,4,26
+19,176,1704388850,1,1,37
+20,176,1704388850,2,2,73
+21,176,1704388850,3,3,40
+22,210,1704388860,1,1,24
+23,210,1704388860,1,2,19
+24,210,1704388860,2,2,29
+25,210,1704388860,3,3,56
+26,210,1704388860,4,4,22
+27,175,1704388880,1,1,37
+28,175,1704388880,2,2,39
+29,175,1704388880,3,3,25
+30,175,1704388880,3,4,30
+31,175,1704388880,4,4,29
+32,206,1704388920,1,1,33
+33,206,1704388920,2,2,35
+34,206,1704388920,3,3,26
+35,206,1704388920,4,4,26
+36,202,1704388939,1,1,39
+37,202,1704388939,2,2,101
+38,178,1704388940,1,1,38
+39,178,1704388940,2,2,39
+40,178,1704388940,3,3,40
+41,178,1704388940,4,4,23
+42,201,1704388940,1,1,24
+43,201,1704388940,2,2,24
+44,201,1704388940,3,3,17
+45,201,1704388940,4,4,58
+46,201,1704388940,5,5,17
+47,177,1704388950,1,1,36
+48,177,1704388950,2,2,20
+49,177,1704388950,3,3,68
+50,177,1704388950,4,4,26
+51,176,1704389000,1,1,37
+52,176,1704389000,2,2,73
+53,176,1704389000,3,3,40
+54,210,1704389010,1,1,24
+55,210,1704389010,1,2,19
+56,210,1704389010,2,2,29
+57,210,1704389010,3,3,56
+58,210,1704389010,4,4,22
+59,175,1704389040,1,1,37
+60,175,1704389040,2,2,39
+61,175,1704389040,3,3,25
+62,175,1704389040,3,4,30
+63,175,1704389040,4,4,29
+64,206,1704389040,1,1,33
+65,206,1704389040,2,2,35
+66,206,1704389040,3,3,26
+67,206,1704389040,4,4,26
+68,201,1704389080,1,1,24
+69,201,1704389080,2,2,24
+70,201,1704389080,3,3,17
+71,201,1704389080,4,4,58
+72,201,1704389080,5,5,17
+73,202,1704389080,1,1,39
+74,202,1704389080,2,2,101
+75,178,1704389081,1,1,38
+76,178,1704389081,2,2,39
+77,178,1704389081,3,3,40
+78,178,1704389081,4,4,23
+79,177,1704389100,1,1,36
+80,177,1704389100,2,2,20
+81,177,1704389100,3,3,68
+82,177,1704389100,4,4,26
+83,176,1704389150,1,1,37
+84,176,1704389150,2,2,73
+85,176,1704389150,3,3,40
+86,206,1704389160,1,1,33
+87,206,1704389160,2,2,35
+88,206,1704389160,3,3,26
+89,206,1704389160,4,4,26
+90,210,1704389160,1,1,24
+91,210,1704389160,1,2,19
+92,210,1704389160,2,2,29
+93,210,1704389160,3,3,56
+94,210,1704389160,4,4,22
+95,175,1704389200,1,1,37
+96,175,1704389200,2,2,39
+97,175,1704389200,3,3,25
+98,175,1704389200,3,4,30
+99,175,1704389200,4,4,29
+100,178,1704389220,1,1,38
+101,178,1704389220,2,2,39
+102,178,1704389220,3,3,40
+103,178,1704389220,4,4,23
+104,201,1704389220,1,1,24
+105,201,1704389220,2,2,24
+106,201,1704389220,3,3,17
+107,201,1704389220,4,4,58
+108,201,1704389220,5,5,17
+109,202,1704389220,1,1,39
+110,202,1704389220,2,2,101
+111,177,1704389250,1,1,36
+112,177,1704389250,2,2,20
+113,177,1704389250,3,3,68
+114,177,1704389250,4,4,26
+115,206,1704389280,1,1,33
+116,206,1704389280,2,2,35
+117,206,1704389280,3,3,26
+118,206,1704389280,4,4,26
+119,176,1704389300,1,1,37
+120,176,1704389300,2,2,73
+121,176,1704389300,3,3,40
+122,210,1704389310,1,1,24
+123,210,1704389310,1,2,19
+124,210,1704389310,2,2,29
+125,210,1704389310,3,3,56
+126,210,1704389310,4,4,22
+127,201,1704389359,1,1,24
+128,201,1704389359,2,2,24
+129,201,1704389359,3,3,17
+130,201,1704389359,4,4,58
+131,201,1704389359,5,5,17
+132,175,1704389360,1,1,37
+133,175,1704389360,2,2,39
+134,175,1704389360,3,3,25
+135,175,1704389360,3,4,30
+136,175,1704389360,4,4,29
+137,178,1704389360,1,1,38
+138,178,1704389360,2,2,39
+139,178,1704389360,3,3,40
+140,178,1704389360,4,4,23
+141,202,1704389360,1,1,39
+142,202,1704389360,2,2,101
+143,177,1704389400,1,1,36
+144,177,1704389400,2,2,20
+145,177,1704389400,3,3,68
+146,177,1704389400,4,4,26
+147,206,1704389400,1,1,33
+148,206,1704389400,2,2,35
+149,206,1704389400,3,3,26
+150,206,1704389400,4,4,26
+151,176,1704389450,1,1,37
+152,176,1704389450,2,2,73
+153,176,1704389450,3,3,40
+154,210,1704389460,1,1,24
+155,210,1704389460,1,2,19
+156,210,1704389460,2,2,29
+157,210,1704389460,3,3,56
+158,210,1704389460,4,4,22
+159,178,1704389500,1,1,38
+160,178,1704389500,2,2,39
+161,178,1704389500,3,3,40
+162,178,1704389500,4,4,23
+163,201,1704389500,1,1,24
+164,201,1704389500,2,2,24
+165,201,1704389500,3,3,17
+166,201,1704389500,4,4,58
+167,201,1704389500,5,5,17
+168,202,1704389500,1,1,39
+169,202,1704389500,2,2,101
+170,175,1704389520,1,1,37
+171,175,1704389520,2,2,39
+172,175,1704389520,3,3,25
+173,175,1704389520,3,4,30
+174,175,1704389520,4,4,29
+175,206,1704389520,1,1,33
+176,206,1704389520,2,2,35
+177,206,1704389520,3,3,26
+178,206,1704389520,4,4,26
+179,177,1704389551,1,1,36
+180,177,1704389551,2,2,20
+181,177,1704389551,3,3,68
+182,177,1704389551,4,4,26
+183,176,1704389599,1,1,37
+184,176,1704389599,2,2,73
+185,176,1704389599,3,3,40
+186,210,1704389610,1,1,24
+187,210,1704389610,1,2,19
+188,210,1704389610,2,2,29
+189,210,1704389610,3,3,56
+190,210,1704389610,4,4,22
+191,178,1704389640,1,1,38
+192,178,1704389640,2,2,39
+193,178,1704389640,3,3,40
+194,178,1704389640,4,4,23
+195,201,1704389640,1,1,24
+196,201,1704389640,2,2,24
+197,201,1704389640,3,3,17
+198,201,1704389640,4,4,58
+199,201,1704389640,5,5,17
+200,202,1704389640,1,1,39
+201,202,1704389640,2,2,101
+202,206,1704389640,1,1,33
+203,206,1704389640,2,2,35
+204,206,1704389640,3,3,26
+205,206,1704389640,4,4,26
+206,175,1704389680,1,1,37
+207,175,1704389680,2,2,39
+208,175,1704389680,3,3,25
+209,175,1704389680,3,4,30
+210,175,1704389680,4,4,29
+211,177,1704389700,1,1,36
+212,177,1704389700,2,2,20
+213,177,1704389700,3,3,68
+214,177,1704389700,4,4,26
+215,176,1704389750,1,1,37
+216,176,1704389750,2,2,73
+217,176,1704389750,3,3,40
+218,210,1704389759,1,1,24
+219,210,1704389759,1,2,19
+220,210,1704389759,2,2,29
+221,210,1704389759,3,3,56
+222,210,1704389759,4,4,22
+223,206,1704389760,1,1,33
+224,206,1704389760,2,2,35
+225,206,1704389760,3,3,26
+226,206,1704389760,4,4,26
+227,201,1704389779,1,1,24
+228,201,1704389779,2,2,24
+229,201,1704389779,3,3,17
+230,201,1704389779,4,4,58
+231,201,1704389779,5,5,17
+232,178,1704389780,1,1,38
+233,178,1704389780,2,2,39
+234,178,1704389780,3,3,40
+235,178,1704389780,4,4,23
+236,202,1704389780,1,1,39
+237,202,1704389780,2,2,101
+238,175,1704389839,1,1,37
+239,175,1704389839,2,2,39
+240,175,1704389839,3,3,25
+241,175,1704389839,3,4,30
+242,175,1704389839,4,4,29
+243,177,1704389850,1,1,36
+244,177,1704389850,2,2,20
+245,177,1704389850,3,3,68
+246,177,1704389850,4,4,26
+247,206,1704389880,1,1,33
+248,206,1704389880,2,2,35
+249,206,1704389880,3,3,26
+250,206,1704389880,4,4,26
+251,176,1704389900,1,1,37
+252,176,1704389900,2,2,73
+253,176,1704389900,3,3,40
+254,210,1704389910,1,1,24
+255,210,1704389910,1,2,19
+256,210,1704389910,2,2,29
+257,210,1704389910,3,3,56
+258,210,1704389910,4,4,22
+259,178,1704389920,1,1,38
+260,178,1704389920,2,2,39
+261,178,1704389920,3,3,40
+262,178,1704389920,4,4,23
+263,201,1704389920,1,1,24
+264,201,1704389920,2,2,24
+265,201,1704389920,3,3,17
+266,201,1704389920,4,4,58
+267,201,1704389920,5,5,17
+268,202,1704389920,1,1,39
+269,202,1704389920,2,2,101
+270,175,1704390000,1,1,37
+271,175,1704390000,2,2,39
+272,175,1704390000,3,3,25
+273,175,1704390000,3,4,30
+274,175,1704390000,4,4,29
+275,177,1704390000,1,1,36
+276,177,1704390000,2,2,20
+277,177,1704390000,3,3,68
+278,177,1704390000,4,4,26
+279,206,1704390000,1,1,33
+280,206,1704390000,2,2,35
+281,206,1704390000,3,3,26
+282,206,1704390000,4,4,26
+283,176,1704390050,1,1,37
+284,176,1704390050,2,2,73
+285,176,1704390050,3,3,40
+286,178,1704390060,1,1,38
+287,178,1704390060,2,2,39
+288,178,1704390060,3,3,40
+289,178,1704390060,4,4,23
+290,201,1704390060,1,1,24
+291,201,1704390060,2,2,24
+292,201,1704390060,3,3,17
+293,201,1704390060,4,4,58
+294,201,1704390060,5,5,17
+295,202,1704390060,1,1,39
+296,202,1704390060,2,2,101
+297,210,1704390060,1,1,24
+298,210,1704390060,1,2,19
+299,210,1704390060,2,2,29
+300,210,1704390060,3,3,56
+301,210,1704390060,4,4,22
+302,206,1704390120,1,1,33
+303,206,1704390120,2,2,35
+304,206,1704390120,3,3,26
+305,206,1704390120,4,4,26
+306,177,1704390150,1,1,36
+307,177,1704390150,2,2,20
+308,177,1704390150,3,3,68
+309,177,1704390150,4,4,26
+310,175,1704390160,1,1,37
+311,175,1704390160,2,2,39
+312,175,1704390160,3,3,25
+313,175,1704390160,3,4,30
+314,175,1704390160,4,4,29
+315,176,1704390200,1,1,37
+316,176,1704390200,2,2,73
+317,176,1704390200,3,3,40
+318,201,1704390200,1,1,24
+319,201,1704390200,2,2,24
+320,201,1704390200,3,3,17
+321,201,1704390200,4,4,58
+322,201,1704390200,5,5,17
+323,202,1704390200,1,1,39
+324,202,1704390200,2,2,101
+325,178,1704390201,1,1,38
+326,178,1704390201,2,2,39
+327,178,1704390201,3,3,40
+328,178,1704390201,4,4,23
+329,210,1704390210,1,1,24
+330,210,1704390210,1,2,19
+331,210,1704390210,2,2,29
+332,210,1704390210,3,3,56
+333,210,1704390210,4,4,22
+334,206,1704390240,1,1,33
+335,206,1704390240,2,2,35
+336,206,1704390240,3,3,26
+337,206,1704390240,4,4,26
+338,177,1704390300,1,1,36
+339,177,1704390300,2,2,20
+340,177,1704390300,3,3,68
+341,177,1704390300,4,4,26
+342,175,1704390320,1,1,37
+343,175,1704390320,2,2,39
+344,175,1704390320,3,3,25
+345,175,1704390320,3,4,30
+346,175,1704390320,4,4,29
+347,178,1704390340,1,1,38
+348,178,1704390340,2,2,39
+349,178,1704390340,3,3,40
+350,178,1704390340,4,4,23
+351,201,1704390340,1,1,24
+352,201,1704390340,2,2,24
+353,201,1704390340,3,3,17
+354,201,1704390340,4,4,58
+355,201,1704390340,5,5,17
+356,202,1704390340,1,1,39
+357,202,1704390340,2,2,101
+358,176,1704390349,1,1,37
+359,176,1704390349,2,2,73
+360,176,1704390349,3,3,40
+361,206,1704390359,1,1,33
+362,206,1704390359,2,2,35
+363,206,1704390359,3,3,26
+364,206,1704390359,4,4,26
+365,210,1704390360,1,1,24
+366,210,1704390360,1,2,19
+367,210,1704390360,2,2,29
+368,210,1704390360,3,3,56
+369,210,1704390360,4,4,22
+370,177,1704390450,1,1,36
+371,177,1704390450,2,2,20
+372,177,1704390450,3,3,68
+373,177,1704390450,4,4,26
+374,175,1704390480,1,1,37
+375,175,1704390480,2,2,39
+376,175,1704390480,3,3,25
+377,175,1704390480,3,4,30
+378,175,1704390480,4,4,29
+379,178,1704390480,1,1,38
+380,178,1704390480,2,2,39
+381,178,1704390480,3,3,40
+382,178,1704390480,4,4,23
+383,201,1704390480,1,1,24
+384,201,1704390480,2,2,24
+385,201,1704390480,3,3,17
+386,201,1704390480,4,4,58
+387,201,1704390480,5,5,17
+388,206,1704390480,1,1,33
+389,206,1704390480,2,2,35
+390,206,1704390480,3,3,26
+391,206,1704390480,4,4,26
+392,176,1704390500,1,1,37
+393,176,1704390500,2,2,73
+394,176,1704390500,3,3,40
+395,210,1704390510,1,1,24
+396,210,1704390510,1,2,19
+397,210,1704390510,2,2,29
+398,210,1704390510,3,3,56
+399,210,1704390510,4,4,22
+400,202,1704390529,1,1,53
+401,202,1704390529,2,2,136
+402,177,1704390599,1,1,36
+403,177,1704390599,2,2,20
+404,177,1704390599,3,3,68
+405,177,1704390599,4,4,26
+406,206,1704390600,1,1,33
+407,206,1704390600,2,2,35
+408,206,1704390600,3,3,26
+409,206,1704390600,4,4,26
+410,178,1704390620,1,1,38
+411,178,1704390620,2,2,39
+412,178,1704390620,3,3,40
+413,178,1704390620,4,4,23
+414,201,1704390620,1,1,24
+415,201,1704390620,2,2,24
+416,201,1704390620,3,3,17
+417,201,1704390620,4,4,58
+418,201,1704390620,5,5,17
+419,175,1704390640,1,1,37
+420,175,1704390640,2,2,39
+421,175,1704390640,3,3,25
+422,175,1704390640,3,4,30
+423,175,1704390640,4,4,29
+424,176,1704390650,1,1,37
+425,176,1704390650,2,2,73
+426,176,1704390650,3,3,40
+427,210,1704390660,1,1,24
+428,210,1704390660,1,2,19
+429,210,1704390660,2,2,29
+430,210,1704390660,3,3,56
+431,210,1704390660,4,4,22
+432,202,1704390670,1,1,39
+433,202,1704390670,2,2,102
+434,206,1704390720,1,1,33
+435,206,1704390720,2,2,35
+436,206,1704390720,3,3,26
+437,206,1704390720,4,4,26
+438,177,1704390750,1,1,36
+439,177,1704390750,2,2,20
+440,177,1704390750,3,3,68
+441,177,1704390750,4,4,26
+442,201,1704390760,1,1,24
+443,201,1704390760,2,2,24
+444,201,1704390760,3,3,17
+445,201,1704390760,4,4,58
+446,201,1704390760,5,5,17
+447,178,1704390761,1,1,38
+448,178,1704390761,2,2,39
+449,178,1704390761,3,3,40
+450,178,1704390761,4,4,23
+451,175,1704390800,1,1,37
+452,175,1704390800,2,2,39
+453,175,1704390800,3,3,25
+454,175,1704390800,3,4,30
+455,175,1704390800,4,4,29
+456,176,1704390800,1,1,37
+457,176,1704390800,2,2,73
+458,176,1704390800,3,3,40
+459,210,1704390809,1,1,24
+460,210,1704390809,1,2,19
+461,210,1704390809,2,2,29
+462,210,1704390809,3,3,56
+463,210,1704390809,4,4,22
+464,202,1704390810,1,1,39
+465,202,1704390810,2,2,101
+466,206,1704390840,1,1,33
+467,206,1704390840,2,2,35
+468,206,1704390840,3,3,26
+469,206,1704390840,4,4,26
+470,177,1704390900,1,1,36
+471,177,1704390900,2,2,20
+472,177,1704390900,3,3,68
+473,177,1704390900,4,4,26
+474,178,1704390900,1,1,38
+475,178,1704390900,2,2,39
+476,178,1704390900,3,3,40
+477,178,1704390900,4,4,23
+478,201,1704390900,1,1,24
+479,201,1704390900,2,2,24
+480,201,1704390900,3,3,17
+481,201,1704390900,4,4,58
+482,201,1704390900,5,5,17
+483,176,1704390950,1,1,37
+484,176,1704390950,2,2,73
+485,176,1704390950,3,3,40
+486,202,1704390950,1,1,39
+487,202,1704390950,2,2,101
+488,175,1704390960,1,1,37
+489,175,1704390960,2,2,39
+490,175,1704390960,3,3,25
+491,175,1704390960,3,4,30
+492,175,1704390960,4,4,29
+493,206,1704390960,1,1,33
+494,206,1704390960,2,2,35
+495,206,1704390960,3,3,26
+496,206,1704390960,4,4,26
+497,210,1704390960,1,1,24
+498,210,1704390960,1,2,19
+499,210,1704390960,2,2,29
+500,210,1704390960,3,3,56
+501,210,1704390960,4,4,22
+502,201,1704391040,1,1,24
+503,201,1704391040,2,2,24
+504,201,1704391040,3,3,17
+505,201,1704391040,4,4,58
+506,201,1704391040,5,5,17
+507,178,1704391041,1,1,38
+508,178,1704391041,2,2,39
+509,178,1704391041,3,3,40
+510,178,1704391041,4,4,23
+511,177,1704391050,1,1,36
+512,177,1704391050,2,2,20
+513,177,1704391050,3,3,68
+514,177,1704391050,4,4,26
+515,206,1704391080,1,1,33
+516,206,1704391080,2,2,35
+517,206,1704391080,3,3,26
+518,206,1704391080,4,4,26
+519,202,1704391090,1,1,39
+520,202,1704391090,2,2,101
+521,176,1704391100,1,1,37
+522,176,1704391100,2,2,73
+523,176,1704391100,3,3,40
+524,210,1704391110,1,1,24
+525,210,1704391110,1,2,19
+526,210,1704391110,2,2,29
+527,210,1704391110,3,3,56
+528,210,1704391110,4,4,22
+529,175,1704391119,1,1,37
+530,175,1704391119,2,2,39
+531,175,1704391119,3,3,25
+532,175,1704391119,3,4,30
+533,175,1704391119,4,4,29
+534,178,1704391180,1,1,38
+535,178,1704391180,2,2,39
+536,178,1704391180,3,3,40
+537,178,1704391180,4,4,23
+538,201,1704391180,1,1,24
+539,201,1704391180,2,2,24
+540,201,1704391180,3,3,17
+541,201,1704391180,4,4,58
+542,201,1704391180,5,5,17
+543,206,1704391200,1,1,33
+544,206,1704391200,2,2,35
+545,206,1704391200,3,3,26
+546,206,1704391200,4,4,26
+547,177,1704391201,1,1,36
+548,177,1704391201,2,2,20
+549,177,1704391201,3,3,68
+550,177,1704391201,4,4,26
+551,202,1704391230,1,1,39
+552,202,1704391230,2,2,101
+553,176,1704391250,1,1,37
+554,176,1704391250,2,2,73
+555,176,1704391250,3,3,40
+556,210,1704391260,1,1,24
+557,210,1704391260,1,2,19
+558,210,1704391260,2,2,29
+559,210,1704391260,3,3,56
+560,210,1704391260,4,4,22
+561,175,1704391280,1,1,37
+562,175,1704391280,2,2,39
+563,175,1704391280,3,3,25
+564,175,1704391280,3,4,30
+565,175,1704391280,4,4,29
+566,178,1704391320,1,1,38
+567,178,1704391320,2,2,39
+568,178,1704391320,3,3,40
+569,178,1704391320,4,4,23
+570,201,1704391320,1,1,24
+571,201,1704391320,2,2,24
+572,201,1704391320,3,3,17
+573,201,1704391320,4,4,58
+574,201,1704391320,5,5,17
+575,206,1704391320,1,1,33
+576,206,1704391320,2,2,35
+577,206,1704391320,3,3,26
+578,206,1704391320,4,4,26
+579,177,1704391350,1,1,36
+580,177,1704391350,2,2,20
+581,177,1704391350,3,3,68
+582,177,1704391350,4,4,26
+583,202,1704391370,1,1,39
+584,202,1704391370,2,2,101
+585,176,1704391399,1,1,37
+586,176,1704391399,2,2,73
+587,176,1704391399,3,3,40
+588,210,1704391410,1,1,24
+589,210,1704391410,1,2,19
+590,210,1704391410,2,2,29
+591,210,1704391410,3,3,56
+592,210,1704391410,4,4,22
+593,175,1704391440,1,1,37
+594,175,1704391440,2,2,39
+595,175,1704391440,3,3,25
+596,175,1704391440,3,4,30
+597,175,1704391440,4,4,29
+598,206,1704391440,1,1,33
+599,206,1704391440,2,2,35
+600,206,1704391440,3,3,26
+601,206,1704391440,4,4,26
+602,201,1704391460,1,1,24
+603,201,1704391460,2,2,24
+604,201,1704391460,3,3,17
+605,201,1704391460,4,4,58
+606,201,1704391460,5,5,17
+607,178,1704391461,1,1,38
+608,178,1704391461,2,2,39
+609,178,1704391461,3,3,40
+610,178,1704391461,4,4,23
+611,177,1704391500,1,1,36
+612,177,1704391500,2,2,20
+613,177,1704391500,3,3,68
+614,177,1704391500,4,4,26
+615,202,1704391509,1,1,39
+616,202,1704391509,2,2,101
+617,176,1704391550,1,1,37
+618,176,1704391550,2,2,73
+619,176,1704391550,3,3,40
+620,206,1704391560,1,1,33
+621,206,1704391560,2,2,35
+622,206,1704391560,3,3,26
+623,206,1704391560,4,4,26
+624,210,1704391560,1,1,24
+625,210,1704391560,1,2,19
+626,210,1704391560,2,2,29
+627,210,1704391560,3,3,56
+628,210,1704391560,4,4,22
+629,175,1704391600,1,1,37
+630,175,1704391600,2,2,39
+631,175,1704391600,3,3,25
+632,175,1704391600,3,4,30
+633,175,1704391600,4,4,29
+634,178,1704391600,1,1,38
+635,178,1704391600,2,2,39
+636,178,1704391600,3,3,40
+637,178,1704391600,4,4,23
+638,201,1704391600,1,1,24
+639,201,1704391600,2,2,24
+640,201,1704391600,3,3,17
+641,201,1704391600,4,4,58
+642,201,1704391600,5,5,17
+643,177,1704391650,1,1,36
+644,177,1704391650,2,2,20
+645,177,1704391650,3,3,68
+646,177,1704391650,4,4,26
+647,202,1704391650,1,1,39
+648,202,1704391650,2,2,101
+649,206,1704391680,1,1,33
+650,206,1704391680,2,2,35
+651,206,1704391680,3,3,26
+652,206,1704391680,4,4,26
+653,176,1704391700,1,1,37
+654,176,1704391700,2,2,73
+655,176,1704391700,3,3,40
+656,210,1704391710,1,1,24
+657,210,1704391710,1,2,19
+658,210,1704391710,2,2,29
+659,210,1704391710,3,3,56
+660,210,1704391710,4,4,22
+661,201,1704391740,1,1,24
+662,201,1704391740,2,2,24
+663,201,1704391740,3,3,17
+664,201,1704391740,4,4,58
+665,201,1704391740,5,5,17
+666,178,1704391741,1,1,38
+667,178,1704391741,2,2,39
+668,178,1704391741,3,3,40
+669,178,1704391741,4,4,23
+670,175,1704391760,1,1,37
+671,175,1704391760,2,2,39
+672,175,1704391760,3,3,25
+673,175,1704391760,3,4,30
+674,175,1704391760,4,4,29
+675,202,1704391790,1,1,39
+676,202,1704391790,2,2,101
+677,177,1704391800,1,1,36
+678,177,1704391800,2,2,20
+679,177,1704391800,3,3,68
+680,177,1704391800,4,4,26
+681,206,1704391801,1,1,33
+682,206,1704391801,2,2,35
+683,206,1704391801,3,3,26
+684,206,1704391801,4,4,26
+685,176,1704391850,1,1,37
+686,176,1704391850,2,2,73
+687,176,1704391850,3,3,40
+688,210,1704391859,1,1,24
+689,210,1704391859,1,2,19
+690,210,1704391859,2,2,29
+691,210,1704391859,3,3,56
+692,210,1704391859,4,4,22
+693,178,1704391880,1,1,38
+694,178,1704391880,2,2,39
+695,178,1704391880,3,3,40
+696,178,1704391880,4,4,23
+697,201,1704391880,1,1,24
+698,201,1704391880,2,2,24
+699,201,1704391880,3,3,17
+700,201,1704391880,4,4,58
+701,201,1704391880,5,5,17
+702,175,1704391920,1,1,37
+703,175,1704391920,2,2,39
+704,175,1704391920,3,3,25
+705,175,1704391920,3,4,30
+706,175,1704391920,4,4,29
+707,206,1704391920,1,1,33
+708,206,1704391920,2,2,35
+709,206,1704391920,3,3,26
+710,206,1704391920,4,4,26
+711,202,1704391930,1,1,39
+712,202,1704391930,2,2,101
+713,177,1704391950,1,1,36
+714,177,1704391950,2,2,20
+715,177,1704391950,3,3,68
+716,177,1704391950,4,4,26
+717,176,1704392000,1,1,37
+718,176,1704392000,2,2,73
+719,176,1704392000,3,3,40
+720,210,1704392010,1,1,24
+721,210,1704392010,1,2,19
+722,210,1704392010,2,2,29
+723,210,1704392010,3,3,56
+724,210,1704392010,4,4,22
+725,178,1704392020,1,1,38
+726,178,1704392020,2,2,39
+727,178,1704392020,3,3,40
+728,178,1704392020,4,4,23
+729,201,1704392020,1,1,24
+730,201,1704392020,2,2,24
+731,201,1704392020,3,3,17
+732,201,1704392020,4,4,58
+733,201,1704392020,5,5,17
+734,206,1704392040,1,1,33
+735,206,1704392040,2,2,35
+736,206,1704392040,3,3,26
+737,206,1704392040,4,4,26
+738,202,1704392070,1,1,39
+739,202,1704392070,2,2,101
+740,175,1704392080,1,1,37
+741,175,1704392080,2,2,39
+742,175,1704392080,3,3,25
+743,175,1704392080,3,4,30
+744,175,1704392080,4,4,29
+745,177,1704392100,1,1,36
+746,177,1704392100,2,2,20
+747,177,1704392100,3,3,68
+748,177,1704392100,4,4,26
+749,176,1704392151,1,1,37
+750,176,1704392151,2,2,73
+751,176,1704392151,3,3,40
+752,210,1704392159,1,1,24
+753,210,1704392159,1,2,19
+754,210,1704392159,2,2,29
+755,210,1704392159,3,3,56
+756,210,1704392159,4,4,22
+757,178,1704392160,1,1,38
+758,178,1704392160,2,2,39
+759,178,1704392160,3,3,40
+760,178,1704392160,4,4,23
+761,201,1704392160,1,1,24
+762,201,1704392160,2,2,24
+763,201,1704392160,3,3,17
+764,201,1704392160,4,4,58
+765,201,1704392160,5,5,17
+766,206,1704392160,1,1,33
+767,206,1704392160,2,2,35
+768,206,1704392160,3,3,26
+769,206,1704392160,4,4,26
+770,202,1704392211,1,1,39
+771,202,1704392211,2,2,101
diff --git a/Analysis/0109_preprocess/0125/movement.csv b/Analysis/0109_preprocess/0125/movement.csv
new file mode 100644
index 000000000..9e4bee0b6
--- /dev/null
+++ b/Analysis/0109_preprocess/0125/movement.csv
@@ -0,0 +1,814 @@
+,inter_no,phas_A,phas_B,move_A,move_B,start_unix
+0,177,1,1,8,4,1704388801
+1,177,2,2,7,3,1704388801
+2,177,3,3,17,18,1704388801
+3,177,4,4,5,1,1704388801
+4,176,1,1,8,4,1704388850
+5,176,2,2,8,3,1704388850
+6,176,3,3,5,18,1704388850
+7,210,1,1,6,18,1704388860
+8,210,1,2,6,2,1704388860
+9,210,2,2,5,2,1704388860
+10,210,3,3,7,4,1704388860
+11,210,4,4,8,3,1704388860
+12,175,1,1,8,4,1704388880
+13,175,2,2,7,3,1704388880
+14,175,3,3,6,1,1704388880
+15,175,3,4,6,2,1704388880
+16,175,4,4,5,2,1704388880
+17,206,1,1,8,4,1704388920
+18,206,2,2,17,18,1704388920
+19,206,3,3,8,4,1704388920
+20,206,4,4,17,18,1704388920
+21,202,1,1,6,2,1704388939
+22,202,2,2,17,18,1704388939
+23,178,1,1,8,4,1704388940
+24,178,2,2,7,3,1704388940
+25,178,3,3,5,2,1704388940
+26,178,4,4,6,1,1704388940
+27,201,1,1,8,3,1704388940
+28,201,2,2,5,2,1704388940
+29,201,3,3,6,2,1704388940
+30,201,4,4,6,1,1704388940
+31,201,5,5,7,4,1704388940
+32,177,1,1,8,4,1704388950
+33,177,2,2,7,3,1704388950
+34,177,3,3,17,18,1704388950
+35,177,4,4,5,1,1704388950
+36,176,1,1,8,4,1704389000
+37,176,2,2,8,3,1704389000
+38,176,3,3,5,18,1704389000
+39,210,1,1,6,18,1704389010
+40,210,1,2,6,2,1704389010
+41,210,2,2,5,2,1704389010
+42,210,3,3,7,4,1704389010
+43,210,4,4,8,3,1704389010
+44,175,1,1,8,4,1704389040
+45,175,2,2,7,3,1704389040
+46,175,3,3,6,1,1704389040
+47,175,3,4,6,2,1704389040
+48,175,4,4,5,2,1704389040
+49,206,1,1,8,4,1704389040
+50,206,2,2,17,18,1704389040
+51,206,3,3,8,4,1704389040
+52,206,4,4,17,18,1704389040
+53,201,1,1,8,3,1704389080
+54,201,2,2,5,2,1704389080
+55,201,3,3,6,2,1704389080
+56,201,4,4,6,1,1704389080
+57,201,5,5,7,4,1704389080
+58,202,1,1,6,2,1704389080
+59,202,2,2,17,18,1704389080
+60,178,1,1,8,4,1704389081
+61,178,2,2,7,3,1704389081
+62,178,3,3,5,2,1704389081
+63,178,4,4,6,1,1704389081
+64,177,1,1,8,4,1704389100
+65,177,2,2,7,3,1704389100
+66,177,3,3,17,18,1704389100
+67,177,4,4,5,1,1704389100
+68,176,1,1,8,4,1704389150
+69,176,2,2,8,3,1704389150
+70,176,3,3,5,18,1704389150
+71,206,1,1,8,4,1704389160
+72,206,2,2,17,18,1704389160
+73,206,3,3,8,4,1704389160
+74,206,4,4,17,18,1704389160
+75,210,1,1,6,18,1704389160
+76,210,1,2,6,2,1704389160
+77,210,2,2,5,2,1704389160
+78,210,3,3,7,4,1704389160
+79,210,4,4,8,3,1704389160
+80,175,1,1,8,4,1704389200
+81,175,2,2,7,3,1704389200
+82,175,3,3,6,1,1704389200
+83,175,3,4,6,2,1704389200
+84,175,4,4,5,2,1704389200
+85,178,1,1,8,4,1704389220
+86,178,2,2,7,3,1704389220
+87,178,3,3,5,2,1704389220
+88,178,4,4,6,1,1704389220
+89,201,1,1,8,3,1704389220
+90,201,2,2,5,2,1704389220
+91,201,3,3,6,2,1704389220
+92,201,4,4,6,1,1704389220
+93,201,5,5,7,4,1704389220
+94,202,1,1,6,2,1704389220
+95,202,2,2,17,18,1704389220
+96,177,1,1,8,4,1704389250
+97,177,2,2,7,3,1704389250
+98,177,3,3,17,18,1704389250
+99,177,4,4,5,1,1704389250
+100,206,1,1,8,4,1704389280
+101,206,2,2,17,18,1704389280
+102,206,3,3,8,4,1704389280
+103,206,4,4,17,18,1704389280
+104,176,1,1,8,4,1704389300
+105,176,2,2,8,3,1704389300
+106,176,3,3,5,18,1704389300
+107,210,1,1,6,18,1704389310
+108,210,1,2,6,2,1704389310
+109,210,2,2,5,2,1704389310
+110,210,3,3,7,4,1704389310
+111,210,4,4,8,3,1704389310
+112,201,1,1,8,3,1704389359
+113,201,2,2,5,2,1704389359
+114,201,3,3,6,2,1704389359
+115,201,4,4,6,1,1704389359
+116,201,5,5,7,4,1704389359
+117,175,1,1,8,4,1704389360
+118,175,2,2,7,3,1704389360
+119,175,3,3,6,1,1704389360
+120,175,3,4,6,2,1704389360
+121,175,4,4,5,2,1704389360
+122,178,1,1,8,4,1704389360
+123,178,2,2,7,3,1704389360
+124,178,3,3,5,2,1704389360
+125,178,4,4,6,1,1704389360
+126,202,1,1,6,2,1704389360
+127,202,2,2,17,18,1704389360
+128,177,1,1,8,4,1704389400
+129,177,2,2,7,3,1704389400
+130,177,3,3,17,18,1704389400
+131,177,4,4,5,1,1704389400
+132,206,1,1,8,4,1704389400
+133,206,2,2,17,18,1704389400
+134,206,3,3,8,4,1704389400
+135,206,4,4,17,18,1704389400
+136,176,1,1,8,4,1704389450
+137,176,2,2,8,3,1704389450
+138,176,3,3,5,18,1704389450
+139,210,1,1,6,18,1704389460
+140,210,1,2,6,2,1704389460
+141,210,2,2,5,2,1704389460
+142,210,3,3,7,4,1704389460
+143,210,4,4,8,3,1704389460
+144,178,1,1,8,4,1704389500
+145,178,2,2,7,3,1704389500
+146,178,3,3,5,2,1704389500
+147,178,4,4,6,1,1704389500
+148,201,1,1,8,3,1704389500
+149,201,2,2,5,2,1704389500
+150,201,3,3,6,2,1704389500
+151,201,4,4,6,1,1704389500
+152,201,5,5,7,4,1704389500
+153,202,1,1,6,2,1704389500
+154,202,2,2,17,18,1704389500
+155,175,1,1,8,4,1704389520
+156,175,2,2,7,3,1704389520
+157,175,3,3,6,1,1704389520
+158,175,3,4,6,2,1704389520
+159,175,4,4,5,2,1704389520
+160,206,1,1,8,4,1704389520
+161,206,2,2,17,18,1704389520
+162,206,3,3,8,4,1704389520
+163,206,4,4,17,18,1704389520
+164,177,1,1,8,4,1704389551
+165,177,2,2,7,3,1704389551
+166,177,3,3,17,18,1704389551
+167,177,4,4,5,1,1704389551
+168,176,1,1,8,4,1704389599
+169,176,2,2,8,3,1704389599
+170,176,3,3,5,18,1704389599
+171,210,1,1,6,18,1704389610
+172,210,1,2,6,2,1704389610
+173,210,2,2,5,2,1704389610
+174,210,3,3,7,4,1704389610
+175,210,4,4,8,3,1704389610
+176,178,1,1,8,4,1704389640
+177,178,2,2,7,3,1704389640
+178,178,3,3,5,2,1704389640
+179,178,4,4,6,1,1704389640
+180,201,1,1,8,3,1704389640
+181,201,2,2,5,2,1704389640
+182,201,3,3,6,2,1704389640
+183,201,4,4,6,1,1704389640
+184,201,5,5,7,4,1704389640
+185,202,1,1,6,2,1704389640
+186,202,2,2,17,18,1704389640
+187,206,1,1,8,4,1704389640
+188,206,2,2,17,18,1704389640
+189,206,3,3,8,4,1704389640
+190,206,4,4,17,18,1704389640
+191,175,1,1,8,4,1704389680
+192,175,2,2,7,3,1704389680
+193,175,3,3,6,1,1704389680
+194,175,3,4,6,2,1704389680
+195,175,4,4,5,2,1704389680
+196,177,1,1,8,4,1704389700
+197,177,2,2,7,3,1704389700
+198,177,3,3,17,18,1704389700
+199,177,4,4,5,1,1704389700
+200,176,1,1,8,4,1704389750
+201,176,2,2,8,3,1704389750
+202,176,3,3,5,18,1704389750
+203,210,1,1,6,18,1704389759
+204,210,1,2,6,2,1704389759
+205,210,2,2,5,2,1704389759
+206,210,3,3,7,4,1704389759
+207,210,4,4,8,3,1704389759
+208,206,1,1,8,4,1704389760
+209,206,2,2,17,18,1704389760
+210,206,3,3,8,4,1704389760
+211,206,4,4,17,18,1704389760
+212,201,1,1,8,3,1704389779
+213,201,2,2,5,2,1704389779
+214,201,3,3,6,2,1704389779
+215,201,4,4,6,1,1704389779
+216,201,5,5,7,4,1704389779
+217,178,1,1,8,4,1704389780
+218,178,2,2,7,3,1704389780
+219,178,3,3,5,2,1704389780
+220,178,4,4,6,1,1704389780
+221,202,1,1,6,2,1704389780
+222,202,2,2,17,18,1704389780
+223,175,1,1,8,4,1704389839
+224,175,2,2,7,3,1704389839
+225,175,3,3,6,1,1704389839
+226,175,3,4,6,2,1704389839
+227,175,4,4,5,2,1704389839
+228,177,1,1,8,4,1704389850
+229,177,2,2,7,3,1704389850
+230,177,3,3,17,18,1704389850
+231,177,4,4,5,1,1704389850
+232,206,1,1,8,4,1704389880
+233,206,2,2,17,18,1704389880
+234,206,3,3,8,4,1704389880
+235,206,4,4,17,18,1704389880
+236,176,1,1,8,4,1704389900
+237,176,2,2,8,3,1704389900
+238,176,3,3,5,18,1704389900
+239,210,1,1,6,18,1704389910
+240,210,1,2,6,2,1704389910
+241,210,2,2,5,2,1704389910
+242,210,3,3,7,4,1704389910
+243,210,4,4,8,3,1704389910
+244,178,1,1,8,4,1704389920
+245,178,2,2,7,3,1704389920
+246,178,3,3,5,2,1704389920
+247,178,4,4,6,1,1704389920
+248,201,1,1,8,3,1704389920
+249,201,2,2,5,2,1704389920
+250,201,3,3,6,2,1704389920
+251,201,4,4,6,1,1704389920
+252,201,5,5,7,4,1704389920
+253,202,1,1,6,2,1704389920
+254,202,2,2,17,18,1704389920
+255,175,1,1,8,4,1704390000
+256,175,2,2,7,3,1704390000
+257,175,3,3,6,1,1704390000
+258,175,3,4,6,2,1704390000
+259,175,4,4,5,2,1704390000
+260,177,1,1,8,4,1704390000
+261,177,2,2,7,3,1704390000
+262,177,3,3,17,18,1704390000
+263,177,4,4,5,1,1704390000
+264,206,1,1,8,4,1704390000
+265,206,2,2,17,18,1704390000
+266,206,3,3,8,4,1704390000
+267,206,4,4,17,18,1704390000
+268,176,1,1,8,4,1704390050
+269,176,2,2,8,3,1704390050
+270,176,3,3,5,18,1704390050
+271,178,1,1,8,4,1704390060
+272,178,2,2,7,3,1704390060
+273,178,3,3,5,2,1704390060
+274,178,4,4,6,1,1704390060
+275,201,1,1,8,3,1704390060
+276,201,2,2,5,2,1704390060
+277,201,3,3,6,2,1704390060
+278,201,4,4,6,1,1704390060
+279,201,5,5,7,4,1704390060
+280,202,1,1,6,2,1704390060
+281,202,2,2,17,18,1704390060
+282,210,1,1,6,18,1704390060
+283,210,1,2,6,2,1704390060
+284,210,2,2,5,2,1704390060
+285,210,3,3,7,4,1704390060
+286,210,4,4,8,3,1704390060
+287,206,1,1,8,4,1704390120
+288,206,2,2,17,18,1704390120
+289,206,3,3,8,4,1704390120
+290,206,4,4,17,18,1704390120
+291,177,1,1,8,4,1704390150
+292,177,2,2,7,3,1704390150
+293,177,3,3,17,18,1704390150
+294,177,4,4,5,1,1704390150
+295,175,1,1,8,4,1704390160
+296,175,2,2,7,3,1704390160
+297,175,3,3,6,1,1704390160
+298,175,3,4,6,2,1704390160
+299,175,4,4,5,2,1704390160
+300,176,1,1,8,4,1704390200
+301,176,2,2,8,3,1704390200
+302,176,3,3,5,18,1704390200
+303,201,1,1,8,3,1704390200
+304,201,2,2,5,2,1704390200
+305,201,3,3,6,2,1704390200
+306,201,4,4,6,1,1704390200
+307,201,5,5,7,4,1704390200
+308,178,1,1,8,4,1704390201
+309,178,2,2,7,3,1704390201
+310,178,3,3,5,2,1704390201
+311,178,4,4,6,1,1704390201
+312,210,1,1,6,18,1704390210
+313,210,1,2,6,2,1704390210
+314,210,2,2,5,2,1704390210
+315,210,3,3,7,4,1704390210
+316,210,4,4,8,3,1704390210
+317,206,1,1,8,4,1704390240
+318,206,2,2,17,18,1704390240
+319,206,3,3,8,4,1704390240
+320,206,4,4,17,18,1704390240
+321,177,1,1,8,4,1704390300
+322,177,2,2,7,3,1704390300
+323,177,3,3,17,18,1704390300
+324,177,4,4,5,1,1704390300
+325,175,1,1,8,4,1704390320
+326,175,2,2,7,3,1704390320
+327,175,3,3,6,1,1704390320
+328,175,3,4,6,2,1704390320
+329,175,4,4,5,2,1704390320
+330,178,1,1,8,4,1704390340
+331,178,2,2,7,3,1704390340
+332,178,3,3,5,2,1704390340
+333,178,4,4,6,1,1704390340
+334,201,1,1,8,3,1704390340
+335,201,2,2,5,2,1704390340
+336,201,3,3,6,2,1704390340
+337,201,4,4,6,1,1704390340
+338,201,5,5,7,4,1704390340
+339,176,1,1,8,4,1704390349
+340,176,2,2,8,3,1704390349
+341,176,3,3,5,18,1704390349
+342,206,1,1,8,4,1704390359
+343,206,2,2,17,18,1704390359
+344,206,3,3,8,4,1704390359
+345,206,4,4,17,18,1704390359
+346,210,1,1,6,18,1704390360
+347,210,1,2,6,2,1704390360
+348,210,2,2,5,2,1704390360
+349,210,3,3,7,4,1704390360
+350,210,4,4,8,3,1704390360
+351,177,1,1,8,4,1704390450
+352,177,2,2,7,3,1704390450
+353,177,3,3,17,18,1704390450
+354,177,4,4,5,1,1704390450
+355,175,1,1,8,4,1704390480
+356,175,2,2,7,3,1704390480
+357,175,3,3,6,1,1704390480
+358,175,3,4,6,2,1704390480
+359,175,4,4,5,2,1704390480
+360,178,1,1,8,4,1704390480
+361,178,2,2,7,3,1704390480
+362,178,3,3,5,2,1704390480
+363,178,4,4,6,1,1704390480
+364,201,1,1,8,3,1704390480
+365,201,2,2,5,2,1704390480
+366,201,3,3,6,2,1704390480
+367,201,4,4,6,1,1704390480
+368,201,5,5,7,4,1704390480
+369,206,1,1,8,4,1704390480
+370,206,2,2,17,18,1704390480
+371,206,3,3,8,4,1704390480
+372,206,4,4,17,18,1704390480
+373,176,1,1,8,4,1704390500
+374,176,2,2,8,3,1704390500
+375,176,3,3,5,18,1704390500
+376,210,1,1,6,18,1704390510
+377,210,1,2,6,2,1704390510
+378,210,2,2,5,2,1704390510
+379,210,3,3,7,4,1704390510
+380,210,4,4,8,3,1704390510
+381,202,1,1,6,2,1704390529
+382,202,2,2,17,18,1704390529
+383,177,1,1,8,4,1704390599
+384,177,2,2,7,3,1704390599
+385,177,3,3,17,18,1704390599
+386,177,4,4,5,1,1704390599
+387,206,1,1,8,4,1704390600
+388,206,2,2,17,18,1704390600
+389,206,3,3,8,4,1704390600
+390,206,4,4,17,18,1704390600
+391,178,1,1,8,4,1704390620
+392,178,2,2,7,3,1704390620
+393,178,3,3,5,2,1704390620
+394,178,4,4,6,1,1704390620
+395,201,1,1,8,3,1704390620
+396,201,2,2,5,2,1704390620
+397,201,3,3,6,2,1704390620
+398,201,4,4,6,1,1704390620
+399,201,5,5,7,4,1704390620
+400,175,1,1,8,4,1704390640
+401,175,2,2,7,3,1704390640
+402,175,3,3,6,1,1704390640
+403,175,3,4,6,2,1704390640
+404,175,4,4,5,2,1704390640
+405,176,1,1,8,4,1704390650
+406,176,2,2,8,3,1704390650
+407,176,3,3,5,18,1704390650
+408,210,1,1,6,18,1704390660
+409,210,1,2,6,2,1704390660
+410,210,2,2,5,2,1704390660
+411,210,3,3,7,4,1704390660
+412,210,4,4,8,3,1704390660
+413,202,1,1,6,2,1704390670
+414,202,2,2,17,18,1704390670
+415,206,1,1,8,4,1704390720
+416,206,2,2,17,18,1704390720
+417,206,3,3,8,4,1704390720
+418,206,4,4,17,18,1704390720
+419,177,1,1,8,4,1704390750
+420,177,2,2,7,3,1704390750
+421,177,3,3,17,18,1704390750
+422,177,4,4,5,1,1704390750
+423,201,1,1,8,3,1704390760
+424,201,2,2,5,2,1704390760
+425,201,3,3,6,2,1704390760
+426,201,4,4,6,1,1704390760
+427,201,5,5,7,4,1704390760
+428,178,1,1,8,4,1704390761
+429,178,2,2,7,3,1704390761
+430,178,3,3,5,2,1704390761
+431,178,4,4,6,1,1704390761
+432,175,1,1,8,4,1704390800
+433,175,2,2,7,3,1704390800
+434,175,3,3,6,1,1704390800
+435,175,3,4,6,2,1704390800
+436,175,4,4,5,2,1704390800
+437,176,1,1,8,4,1704390800
+438,176,2,2,8,3,1704390800
+439,176,3,3,5,18,1704390800
+440,210,1,1,6,18,1704390809
+441,210,1,2,6,2,1704390809
+442,210,2,2,5,2,1704390809
+443,210,3,3,7,4,1704390809
+444,210,4,4,8,3,1704390809
+445,202,1,1,6,2,1704390810
+446,202,2,2,17,18,1704390810
+447,206,1,1,8,4,1704390840
+448,206,2,2,17,18,1704390840
+449,206,3,3,8,4,1704390840
+450,206,4,4,17,18,1704390840
+451,177,1,1,8,4,1704390900
+452,177,2,2,7,3,1704390900
+453,177,3,3,17,18,1704390900
+454,177,4,4,5,1,1704390900
+455,178,1,1,8,4,1704390900
+456,178,2,2,7,3,1704390900
+457,178,3,3,5,2,1704390900
+458,178,4,4,6,1,1704390900
+459,201,1,1,8,3,1704390900
+460,201,2,2,5,2,1704390900
+461,201,3,3,6,2,1704390900
+462,201,4,4,6,1,1704390900
+463,201,5,5,7,4,1704390900
+464,176,1,1,8,4,1704390950
+465,176,2,2,8,3,1704390950
+466,176,3,3,5,18,1704390950
+467,202,1,1,6,2,1704390950
+468,202,2,2,17,18,1704390950
+469,175,1,1,8,4,1704390960
+470,175,2,2,7,3,1704390960
+471,175,3,3,6,1,1704390960
+472,175,3,4,6,2,1704390960
+473,175,4,4,5,2,1704390960
+474,206,1,1,8,4,1704390960
+475,206,2,2,17,18,1704390960
+476,206,3,3,8,4,1704390960
+477,206,4,4,17,18,1704390960
+478,210,1,1,6,18,1704390960
+479,210,1,2,6,2,1704390960
+480,210,2,2,5,2,1704390960
+481,210,3,3,7,4,1704390960
+482,210,4,4,8,3,1704390960
+483,201,1,1,8,3,1704391040
+484,201,2,2,5,2,1704391040
+485,201,3,3,6,2,1704391040
+486,201,4,4,6,1,1704391040
+487,201,5,5,7,4,1704391040
+488,178,1,1,8,4,1704391041
+489,178,2,2,7,3,1704391041
+490,178,3,3,5,2,1704391041
+491,178,4,4,6,1,1704391041
+492,177,1,1,8,4,1704391050
+493,177,2,2,7,3,1704391050
+494,177,3,3,17,18,1704391050
+495,177,4,4,5,1,1704391050
+496,206,1,1,8,4,1704391080
+497,206,2,2,17,18,1704391080
+498,206,3,3,8,4,1704391080
+499,206,4,4,17,18,1704391080
+500,202,1,1,6,2,1704391090
+501,202,2,2,17,18,1704391090
+502,176,1,1,8,4,1704391100
+503,176,2,2,8,3,1704391100
+504,176,3,3,5,18,1704391100
+505,210,1,1,6,18,1704391110
+506,210,1,2,6,2,1704391110
+507,210,2,2,5,2,1704391110
+508,210,3,3,7,4,1704391110
+509,210,4,4,8,3,1704391110
+510,175,1,1,8,4,1704391119
+511,175,2,2,7,3,1704391119
+512,175,3,3,6,1,1704391119
+513,175,3,4,6,2,1704391119
+514,175,4,4,5,2,1704391119
+515,178,1,1,8,4,1704391180
+516,178,2,2,7,3,1704391180
+517,178,3,3,5,2,1704391180
+518,178,4,4,6,1,1704391180
+519,201,1,1,8,3,1704391180
+520,201,2,2,5,2,1704391180
+521,201,3,3,6,2,1704391180
+522,201,4,4,6,1,1704391180
+523,201,5,5,7,4,1704391180
+524,206,1,1,8,4,1704391200
+525,206,2,2,17,18,1704391200
+526,206,3,3,8,4,1704391200
+527,206,4,4,17,18,1704391200
+528,177,1,1,8,4,1704391201
+529,177,2,2,7,3,1704391201
+530,177,3,3,17,18,1704391201
+531,177,4,4,5,1,1704391201
+532,202,1,1,6,2,1704391230
+533,202,2,2,17,18,1704391230
+534,176,1,1,8,4,1704391250
+535,176,2,2,8,3,1704391250
+536,176,3,3,5,18,1704391250
+537,210,1,1,6,18,1704391260
+538,210,1,2,6,2,1704391260
+539,210,2,2,5,2,1704391260
+540,210,3,3,7,4,1704391260
+541,210,4,4,8,3,1704391260
+542,175,1,1,8,4,1704391280
+543,175,2,2,7,3,1704391280
+544,175,3,3,6,1,1704391280
+545,175,3,4,6,2,1704391280
+546,175,4,4,5,2,1704391280
+547,178,1,1,8,4,1704391320
+548,178,2,2,7,3,1704391320
+549,178,3,3,5,2,1704391320
+550,178,4,4,6,1,1704391320
+551,201,1,1,8,3,1704391320
+552,201,2,2,5,2,1704391320
+553,201,3,3,6,2,1704391320
+554,201,4,4,6,1,1704391320
+555,201,5,5,7,4,1704391320
+556,206,1,1,8,4,1704391320
+557,206,2,2,17,18,1704391320
+558,206,3,3,8,4,1704391320
+559,206,4,4,17,18,1704391320
+560,177,1,1,8,4,1704391350
+561,177,2,2,7,3,1704391350
+562,177,3,3,17,18,1704391350
+563,177,4,4,5,1,1704391350
+564,202,1,1,6,2,1704391370
+565,202,2,2,17,18,1704391370
+566,176,1,1,8,4,1704391399
+567,176,2,2,8,3,1704391399
+568,176,3,3,5,18,1704391399
+569,210,1,1,6,18,1704391410
+570,210,1,2,6,2,1704391410
+571,210,2,2,5,2,1704391410
+572,210,3,3,7,4,1704391410
+573,210,4,4,8,3,1704391410
+574,175,1,1,8,4,1704391440
+575,175,2,2,7,3,1704391440
+576,175,3,3,6,1,1704391440
+577,175,3,4,6,2,1704391440
+578,175,4,4,5,2,1704391440
+579,206,1,1,8,4,1704391440
+580,206,2,2,17,18,1704391440
+581,206,3,3,8,4,1704391440
+582,206,4,4,17,18,1704391440
+583,201,1,1,8,3,1704391460
+584,201,2,2,5,2,1704391460
+585,201,3,3,6,2,1704391460
+586,201,4,4,6,1,1704391460
+587,201,5,5,7,4,1704391460
+588,178,1,1,8,4,1704391461
+589,178,2,2,7,3,1704391461
+590,178,3,3,5,2,1704391461
+591,178,4,4,6,1,1704391461
+592,177,1,1,8,4,1704391500
+593,177,2,2,7,3,1704391500
+594,177,3,3,17,18,1704391500
+595,177,4,4,5,1,1704391500
+596,202,1,1,6,2,1704391509
+597,202,2,2,17,18,1704391509
+598,176,1,1,8,4,1704391550
+599,176,2,2,8,3,1704391550
+600,176,3,3,5,18,1704391550
+601,206,1,1,8,4,1704391560
+602,206,2,2,17,18,1704391560
+603,206,3,3,8,4,1704391560
+604,206,4,4,17,18,1704391560
+605,210,1,1,6,18,1704391560
+606,210,1,2,6,2,1704391560
+607,210,2,2,5,2,1704391560
+608,210,3,3,7,4,1704391560
+609,210,4,4,8,3,1704391560
+610,175,1,1,8,4,1704391600
+611,175,2,2,7,3,1704391600
+612,175,3,3,6,1,1704391600
+613,175,3,4,6,2,1704391600
+614,175,4,4,5,2,1704391600
+615,178,1,1,8,4,1704391600
+616,178,2,2,7,3,1704391600
+617,178,3,3,5,2,1704391600
+618,178,4,4,6,1,1704391600
+619,201,1,1,8,3,1704391600
+620,201,2,2,5,2,1704391600
+621,201,3,3,6,2,1704391600
+622,201,4,4,6,1,1704391600
+623,201,5,5,7,4,1704391600
+624,177,1,1,8,4,1704391650
+625,177,2,2,7,3,1704391650
+626,177,3,3,17,18,1704391650
+627,177,4,4,5,1,1704391650
+628,202,1,1,6,2,1704391650
+629,202,2,2,17,18,1704391650
+630,206,1,1,8,4,1704391680
+631,206,2,2,17,18,1704391680
+632,206,3,3,8,4,1704391680
+633,206,4,4,17,18,1704391680
+634,176,1,1,8,4,1704391700
+635,176,2,2,8,3,1704391700
+636,176,3,3,5,18,1704391700
+637,210,1,1,6,18,1704391710
+638,210,1,2,6,2,1704391710
+639,210,2,2,5,2,1704391710
+640,210,3,3,7,4,1704391710
+641,210,4,4,8,3,1704391710
+642,201,1,1,8,3,1704391740
+643,201,2,2,5,2,1704391740
+644,201,3,3,6,2,1704391740
+645,201,4,4,6,1,1704391740
+646,201,5,5,7,4,1704391740
+647,178,1,1,8,4,1704391741
+648,178,2,2,7,3,1704391741
+649,178,3,3,5,2,1704391741
+650,178,4,4,6,1,1704391741
+651,175,1,1,8,4,1704391760
+652,175,2,2,7,3,1704391760
+653,175,3,3,6,1,1704391760
+654,175,3,4,6,2,1704391760
+655,175,4,4,5,2,1704391760
+656,202,1,1,6,2,1704391790
+657,202,2,2,17,18,1704391790
+658,177,1,1,8,4,1704391800
+659,177,2,2,7,3,1704391800
+660,177,3,3,17,18,1704391800
+661,177,4,4,5,1,1704391800
+662,206,1,1,8,4,1704391801
+663,206,2,2,17,18,1704391801
+664,206,3,3,8,4,1704391801
+665,206,4,4,17,18,1704391801
+666,176,1,1,8,4,1704391850
+667,176,2,2,8,3,1704391850
+668,176,3,3,5,18,1704391850
+669,210,1,1,6,18,1704391859
+670,210,1,2,6,2,1704391859
+671,210,2,2,5,2,1704391859
+672,210,3,3,7,4,1704391859
+673,210,4,4,8,3,1704391859
+674,178,1,1,8,4,1704391880
+675,178,2,2,7,3,1704391880
+676,178,3,3,5,2,1704391880
+677,178,4,4,6,1,1704391880
+678,201,1,1,8,3,1704391880
+679,201,2,2,5,2,1704391880
+680,201,3,3,6,2,1704391880
+681,201,4,4,6,1,1704391880
+682,201,5,5,7,4,1704391880
+683,175,1,1,8,4,1704391920
+684,175,2,2,7,3,1704391920
+685,175,3,3,6,1,1704391920
+686,175,3,4,6,2,1704391920
+687,175,4,4,5,2,1704391920
+688,206,1,1,8,4,1704391920
+689,206,2,2,17,18,1704391920
+690,206,3,3,8,4,1704391920
+691,206,4,4,17,18,1704391920
+692,202,1,1,6,2,1704391930
+693,202,2,2,17,18,1704391930
+694,177,1,1,8,4,1704391950
+695,177,2,2,7,3,1704391950
+696,177,3,3,17,18,1704391950
+697,177,4,4,5,1,1704391950
+698,176,1,1,8,4,1704392000
+699,176,2,2,8,3,1704392000
+700,176,3,3,5,18,1704392000
+701,210,1,1,6,18,1704392010
+702,210,1,2,6,2,1704392010
+703,210,2,2,5,2,1704392010
+704,210,3,3,7,4,1704392010
+705,210,4,4,8,3,1704392010
+706,178,1,1,8,4,1704392020
+707,178,2,2,7,3,1704392020
+708,178,3,3,5,2,1704392020
+709,178,4,4,6,1,1704392020
+710,201,1,1,8,3,1704392020
+711,201,2,2,5,2,1704392020
+712,201,3,3,6,2,1704392020
+713,201,4,4,6,1,1704392020
+714,201,5,5,7,4,1704392020
+715,206,1,1,8,4,1704392040
+716,206,2,2,17,18,1704392040
+717,206,3,3,8,4,1704392040
+718,206,4,4,17,18,1704392040
+719,202,1,1,6,2,1704392070
+720,202,2,2,17,18,1704392070
+721,175,1,1,8,4,1704392080
+722,175,2,2,7,3,1704392080
+723,175,3,3,6,1,1704392080
+724,175,3,4,6,2,1704392080
+725,175,4,4,5,2,1704392080
+726,177,1,1,8,4,1704392100
+727,177,2,2,7,3,1704392100
+728,177,3,3,17,18,1704392100
+729,177,4,4,5,1,1704392100
+730,176,1,1,8,4,1704392151
+731,176,2,2,8,3,1704392151
+732,176,3,3,5,18,1704392151
+733,210,1,1,6,18,1704392159
+734,210,1,2,6,2,1704392159
+735,210,2,2,5,2,1704392159
+736,210,3,3,7,4,1704392159
+737,210,4,4,8,3,1704392159
+738,178,1,1,8,4,1704392160
+739,178,2,2,7,3,1704392160
+740,178,3,3,5,2,1704392160
+741,178,4,4,6,1,1704392160
+742,201,1,1,8,3,1704392160
+743,201,2,2,5,2,1704392160
+744,201,3,3,6,2,1704392160
+745,201,4,4,6,1,1704392160
+746,201,5,5,7,4,1704392160
+747,206,1,1,8,4,1704392160
+748,206,2,2,17,18,1704392160
+749,206,3,3,8,4,1704392160
+750,206,4,4,17,18,1704392160
+751,202,1,1,6,2,1704392211
+752,202,2,2,17,18,1704392211
+753,175,1,1,8,4,1704392240
+754,175,2,2,7,3,1704392240
+755,175,3,3,6,1,1704392240
+756,175,3,4,6,2,1704392240
+757,175,4,4,5,2,1704392240
+758,177,1,1,8,4,1704392250
+759,177,2,2,7,3,1704392250
+760,177,3,3,17,18,1704392250
+761,177,4,4,5,1,1704392250
+762,206,1,1,8,4,1704392280
+763,206,2,2,17,18,1704392280
+764,206,3,3,8,4,1704392280
+765,206,4,4,17,18,1704392280
+766,176,1,1,8,4,1704392300
+767,176,2,2,8,3,1704392300
+768,176,3,3,5,18,1704392300
+769,178,1,1,8,4,1704392300
+770,178,2,2,7,3,1704392300
+771,178,3,3,5,2,1704392300
+772,201,1,1,8,3,1704392301
+773,201,2,2,5,2,1704392301
+774,201,3,3,6,2,1704392301
+775,201,4,4,6,1,1704392301
+776,210,1,1,6,18,1704392310
+777,210,2,2,5,2,1704392310
+778,210,3,3,7,4,1704392310
+779,210,4,4,8,3,1704392310
+780,202,2,2,17,18,1704392350
+781,176,1,1,8,4,1704392300
+782,176,2,2,8,3,1704392300
+783,176,3,3,5,18,1704392300
+784,210,1,1,6,18,1704392310
+785,210,1,2,6,2,1704392310
+786,210,2,2,5,2,1704392310
+787,210,3,3,7,4,1704392310
+788,210,4,4,8,3,1704392310
+789,178,1,1,8,4,1704392300
+790,178,2,2,7,3,1704392300
+791,178,3,3,5,2,1704392300
+792,178,4,4,6,1,1704392300
+793,206,1,1,8,4,1704392280
+794,206,2,2,17,18,1704392280
+795,206,3,3,8,4,1704392280
+796,206,4,4,17,18,1704392280
+797,177,1,1,8,4,1704392250
+798,177,2,2,7,3,1704392250
+799,177,3,3,17,18,1704392250
+800,177,4,4,5,1,1704392250
+801,201,1,1,8,3,1704392301
+802,201,2,2,5,2,1704392301
+803,201,3,3,6,2,1704392301
+804,201,4,4,6,1,1704392301
+805,201,5,5,7,4,1704392301
+806,175,1,1,8,4,1704392240
+807,175,2,2,7,3,1704392240
+808,175,3,3,6,1,1704392240
+809,175,3,4,6,2,1704392240
+810,175,4,4,5,2,1704392240
+811,202,1,1,6,2,1704392350
+812,202,2,2,17,18,1704392350
diff --git a/Analysis/0109_preprocess/0125/movements_wo_start_unix.csv b/Analysis/0109_preprocess/0125/movements_wo_start_unix.csv
new file mode 100644
index 000000000..7e4b23c66
--- /dev/null
+++ b/Analysis/0109_preprocess/0125/movements_wo_start_unix.csv
@@ -0,0 +1,33 @@
+,inter_no,phas_A,phas_B,move_A,move_B
+8,175,1,1,8,4
+15,175,2,2,7,3
+20,175,3,3,6,1
+24,175,3,4,6,2
+26,175,4,4,5,2
+5,176,1,1,8,4
+11,176,2,2,8,3
+16,176,3,3,5,18
+6,177,1,1,8,4
+13,177,2,2,7,3
+15,177,3,3,17,18
+21,177,4,4,5,1
+1,178,1,1,8,4
+3,178,2,2,7,3
+6,178,3,3,5,2
+7,178,4,4,6,1
+2,201,1,1,8,3
+4,201,2,2,5,2
+7,201,3,3,6,2
+8,201,4,4,6,1
+12,201,5,5,7,4
+3,202,1,1,6,2
+7,202,2,2,17,18
+0,206,1,1,8,4
+1,206,2,2,17,18
+2,206,3,3,8,4
+3,206,4,4,17,18
+27,210,1,1,6,18
+28,210,1,2,6,2
+18,210,2,2,5,2
+21,210,3,3,7,4
+28,210,4,4,8,3
diff --git a/Documents/1127_table_definition/table_definition_v0.8.4.xlsx b/Documents/1127_table_definition/table_definition_v0.8.4.xlsx
index cbcb7eee6..997e2b01d 100644
Binary files a/Documents/1127_table_definition/table_definition_v0.8.4.xlsx and b/Documents/1127_table_definition/table_definition_v0.8.4.xlsx differ