From 4e566b2b808f3745ae227c770cf1076f60050337 Mon Sep 17 00:00:00 2001 From: kicap Date: Tue, 21 May 2024 19:24:53 +0800 Subject: [PATCH] remove the green drawer --- .DS_Store | Bin 6148 -> 6148 bytes .../Pengujian baru-checkpoint.ipynb | 380 +++++++----- Pengujian baru.ipynb | 550 +++++++++++++++++- app.py | 45 +- main3.py | 13 +- templates/index.html | 6 +- 6 files changed, 800 insertions(+), 194 deletions(-) diff --git a/.DS_Store b/.DS_Store index c474d2330b718e87917975dec443bb8bfef5ccc0..e13a220cb808e68d4ed485b34c0b524d8294e408 100644 GIT binary patch delta 32 ocmZoMXfc@J&nU1lU^g?Pz-As6Zl=wlY?~M-HrQ=u=lIJH0H9$B*8l(j delta 77 zcmZoMXfc@J&nUPtU^g?P;AS2cZYF(xh5&|ChCGIJhEj$shD?S;AX^Ve7cf);SxKHb d`N>H+`AG~63<3-cjNO|#*bXvoX6N|J4* 265\u001b[0m k \u001b[38;5;241m=\u001b[39m \u001b[43mcv2\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mwaitKey\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mint\u001b[39;49m\u001b[43m(\u001b[49m\u001b[38;5;241;43m1000\u001b[39;49m\u001b[38;5;241;43m/\u001b[39;49m\u001b[43mfps\u001b[49m\u001b[43m)\u001b[49m\u001b[43m)\u001b[49m \u001b[38;5;241m&\u001b[39m \u001b[38;5;241m0xff\u001b[39m \u001b[38;5;66;03m# int(1000/fps) is normal speed since waitkey is in ms\u001b[39;00m\n\u001b[1;32m 266\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m k \u001b[38;5;241m==\u001b[39m \u001b[38;5;241m27\u001b[39m:\n\u001b[1;32m 267\u001b[0m \u001b[38;5;28;01mbreak\u001b[39;00m\n", - "\u001b[0;31mKeyboardInterrupt\u001b[0m: " - ] - } - ], + "outputs": [], + "source": [ + "## Proses Video " + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "1c53be2e-1fc0-46af-b8dd-84cd6b1dffdb", + "metadata": {}, + "outputs": [], "source": [ "while True:\n", "\n", - " ret, frame = cap.read() # mengimpor gambar\n", + " ret, frame = cap.read() # impor gambar\n", "\n", - " if ret: # jika ada frame lanjutkan dengan kode\n", + " if ret: # jika ada frame lanjutkan kode\n", "\n", - " image = cv2.resize(frame, (0, 0), None, ratio, ratio) # mengubah ukuran gambar\n", + " image = cv2.resize(frame, (0, 0), None, ratio, ratio) # ubah ukuran gambar\n", "\n", - " gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # mengubah gambar ke hitam putih\n", + " gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY) # konversi gambar ke warna abu-abu\n", "\n", - " fgmask = fgbg.apply(gray) # menggunakan pengambil gambar latar belakang\n", + " fgmask = fgbg.apply(gray) # menggunakan pengurangan latar belakang MOG2\n", "\n", - " # menerapkan berbagai batasan pada fgmask untuk menyaring mobil\n", - " # perlu bermain dengan setelan tersebut hingga mobil dapat diidentifikasi dengan mudah\n", - " kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) # kernel untuk dilakukan pada morphology\n", + " # menerapkan tingkat kesulitan pada fgmask untuk mencoba mengisolasi mobil\n", + " # perlu mencoba berbagai pengaturan hingga mobil mudah diidentifikasi\n", + " kernel = cv2.getStructuringElement(cv2.MORPH_ELLIPSE, (5, 5)) # membuat kernel untuk operasi morfologi\n", " closing = cv2.morphologyEx(fgmask, cv2.MORPH_CLOSE, kernel)\n", " opening = cv2.morphologyEx(closing, cv2.MORPH_OPEN, kernel)\n", " dilation = cv2.dilate(opening, kernel)\n", @@ -98,37 +119,38 @@ " # membuat kontur\n", " contours, hierarchy = cv2.findContours(bins, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)[-2:]\n", "\n", - " # menggunakan konveks hull untuk membuat poligon di sekitar kontur\n", + " # menggunakan konveks hull untuk membuat poligon kait dengan kontur\n", " hull = [cv2.convexHull(c) for c in contours]\n", "\n", " # menggambar kontur\n", " cv2.drawContours(image, hull, -1, (0, 255, 0), 3)\n", "\n", - " # garis dibuat untuk menghentikan menghitung kontur, perlu dilakukan karena mobil yang jauh akan menjadi satu kontur besar\n", - " lineypos = 225\n", + " # garis dibuat untuk menghentikan penghitungan kontur, diperlukan karena mobil jauh menjadi kontur satu\n", + " lineypos = 100\n", " cv2.line(image, (0, lineypos), (width, lineypos), (255, 0, 0), 5)\n", "\n", - " # garis y pos dibuat untuk menghitung kontur\n", - " lineypos2 = 250\n", + " # garis y posisi dibuat untuk menghitung kontur\n", + " lineypos2 = 125\n", " cv2.line(image, (0, lineypos2), (width, lineypos2), (0, 255, 0), 5)\n", "\n", - " # minimum area untuk kontur\n", - " minarea = 300\n", + " # area minimal untuk kontur agar tidak dihitung sebagai rumit\n", + " minarea = 400\n", "\n", - " # maksimum area untuk kontur\n", - " maxarea = 50000\n", + " # area maksimal untuk kontur, dapat cukup besar untuk bus\n", + " maxarea = 40000\n", "\n", - " # vektor untuk x dan y lokasi centroid di frame saat ini\n", + " # vektor untuk x dan y lokasi tengah kontur dalam frame saat ini\n", " cxx = np.zeros(len(contours))\n", " cyy = np.zeros(len(contours))\n", "\n", - " for i in range(len(contours)): # mengulangi seluruh kontur dalam frame saat ini\n", + " for i in range(len(contours)): # melakukan iterasi pada semua kontur dalam frame saat ini\n", "\n", - " if hierarchy[0, i, 3] == -1: # menggunakan hierarchy untuk hanya menghitung kontur induk (tidak termasuk dalam kontur lain)\n", + " # menggunakan hierarki untuk hanya menghitung kontur induk (kontur yang tidak berada dalam kontur lain)\n", + " if hierarchy[0, i, 3] == -1:\n", "\n", - " area = cv2.contourArea(contours[i]) # menghitung area kontur\n", + " area = cv2.contourArea(contours[i]) # menghitung luas kontur\n", "\n", - " if minarea < area < maxarea: # area threshold untuk kontur\n", + " if minarea < area < maxarea: # menggunakan area sebagai garis pembatas untuk kontur\n", "\n", " # menghitung centroid dari kontur\n", " cnt = contours[i]\n", @@ -136,129 +158,152 @@ " cx = int(M['m10'] / M['m00'])\n", " cy = int(M['m01'] / M['m00'])\n", "\n", - " if cy > lineypos: # menghapus kontur yang di atas garis\n", + " if cy > lineypos: # menghapus kontur yang berada di atas garis (y dimulai dari atas)\n", "\n", - " # mengambil titik teratas, kiri, dan lebar dari kontur untuk membuat kotak\n", - " # x,y adalah kiri atas dan w,h adalah lebar dan tinggi\n", + " # mengambil titik koordinat untuk membuat kotak lingkaran\n", " x, y, w, h = cv2.boundingRect(cnt)\n", "\n", - " # membuat kotak di sekitar kontur\n", + " # membuat kotak lingkaran dari kontur\n", " cv2.rectangle(image, (x, y), (x + w, y + h), (255, 0, 0), 2)\n", "\n", - " # Menuliskan teks centroid untuk memastikan kembali nanti\n", + " # Menambahkan teks centroid untuk memverifikasi pada tahap selanjutnya\n", " cv2.putText(image, str(cx) + \",\" + str(cy), (cx + 10, cy + 10), cv2.FONT_HERSHEY_SIMPLEX,\n", - " .3, (0, 0, 255), 1)\n", + " 0.3, (0, 0, 255), 1)\n", "\n", " cv2.drawMarker(image, (cx, cy), (0, 0, 255), cv2.MARKER_STAR, markerSize=5, thickness=1,\n", " line_type=cv2.LINE_AA)\n", "\n", - " # menambahkan centroid yang lulus pada kriteria ke dalam list centroid\n", + " # menambahkan centroid yang telah memenuhi kriteria ke dalam list centroid\n", " cxx[i] = cx\n", " cyy[i] = cy\n", "\n", - " # menghapus entri 0 dari list centroid\n", + " # menghapus nol dalam vector centroid yang tidak dihitung (centroid yang tidak dikirim ke dataframe)\n", " cxx = cxx[cxx != 0]\n", " cyy = cyy[cyy != 0]\n", "\n", - " # list kosong untuk nanti menyimpan indices centroid yang di tambahkan ke dataframe\n", + " # list kosong untuk nanti mencatat indeks centroid yang dikirim ke dataframe\n", " minx_index2 = []\n", " miny_index2 = []\n", "\n", - " # batas maksimum untuk radius dari centroid dari frame saat ini untuk dianggap sama dengan centroid dari frame sebelumnya\n", + " # jumlah maksimum yang diizinkan untuk centroid dalam frame saat ini untuk dikaitkan dengan centroid dari frame sebelumnya\n", " maxrad = 25\n", "\n", - " # Bagian ini mengelola centroid dan menetapkan mereka untuk carid lama atau carid baru\n", + " # bagian berikut mengelola centroid dan mengasignasinya ke id mobil lama atau id mobil baru\n", "\n", + " # jika terdapat centroid dalam area yang ditentukan\n", " if len(cxx): # jika ada centroid dalam area yang ditentukan\n", "\n", - " if not carids: # jika carids kosong\n", + " if not carids: # jika daftar carids kosong\n", "\n", - " for i in range(len(cxx)): # melalui semua centroid\n", + " for i in range(len(cxx)): # melakukan loop sebanyak centroid yang ada\n", "\n", - " carids.append(i) # menambahkan car id ke list carids kosong\n", - " df[str(carids[i])] = \"\" # menambahkan kolom ke dataframe sesuai carid\n", + " carids.append(i) # menambahkan id mobil ke dalam daftar kosong\n", + " df[str(carids[i])] = \"\" # menambahkan kolom ke dalam dataframe berdasarkan id mobil\n", "\n", - " # menetapkan nilai centroid ke frame (baris) dan carid (kolom) yang sesuai\n", + " # mengisi nilai centroid pada frame saat ini dan id mobil yang sesuai\n", " df.at[int(framenumber), str(carids[i])] = [cxx[i], cyy[i]]\n", "\n", - " totalcars = carids[i] + 1 # menambahkan count car\n", + " totalcars = carids[i] + 1 # menambahkan 1 pada jumlah mobil\n", "\n", - " else: # jika carids sudah ada\n", + " else: # jika sudah ada id mobil\n", "\n", - " dx = np.zeros((len(cxx), len(carids))) # array baru untuk menghitung deltas\n", - " dy = np.zeros((len(cyy), len(carids))) # array baru untuk menghitung deltas\n", + " dx = np.zeros((len(cxx), len(carids))) # array untuk menghitung deltanya\n", + " dy = np.zeros((len(cyy), len(carids))) # array untuk menghitung deltanya\n", "\n", - " for i in range(len(cxx)): # melalui semua centroid\n", + " for i in range(len(cxx)): # melakukan loop sebanyak centroid yang ada\n", "\n", - " for j in range(len(carids)): # melalui semua car id yang sudah ada\n", + " for j in range(len(carids)): # melakukan loop sebanyak id mobil yang ada\n", "\n", - " # mengambil centroid dari frame sebelumnya untuk carid tertentu\n", + " # mengambil centroid dari frame sebelumnya untuk id mobil tertentu\n", " oldcxcy = df.iloc[int(framenumber - 1)][str(carids[j])]\n", "\n", - " # mengambil centroid dari frame saat ini yang tidak selalu sesuai dengan centroid frame sebelumnya\n", + " # mengambil centroid dari frame sekarang yang tidak selalu sesuai dengan centroid dari frame sebelumnya\n", " curcxcy = np.array([cxx[i], cyy[i]])\n", "\n", - " if not oldcxcy: # periksa apakah centroid sebelumnya kosong jika arah sudah tidak ada di layar\n", + " if not oldcxcy: # jika centroid dari frame sebelumnya kosong karena mobil keluar layar\n", "\n", - " continue # lanjutkan ke carid berikutnya\n", + " continue # lanjutkan ke id mobil selanjutnya\n", "\n", - " else: # hitung delta centroid untuk membandingkan dengan centroid frame saat ini\n", + " else: # hitung deltanya untuk dibandingkan dengan centroid dari frame sekarang\n", "\n", " dx[i, j] = oldcxcy[0] - curcxcy[0]\n", " dy[i, j] = oldcxcy[1] - curcxcy[1]\n", "\n", - " for j in range(len(carids)): # melalui semua car id saat ini\n", + " for j in range(len(carids)): # melakukan loop sebanyak id mobil yang ada\n", "\n", - " sumsum = np.abs(dx[:, j]) + np.abs(dy[:, j]) # menghitung delta wrt car id\n", + " jumlahjumlah = np.abs(dx[:, j]) + np.abs(dy[:, j]) # menghitung jumlah delta wrt id mobil tertentu\n", "\n", - " # mengambil indeks centroid yang memiliki nilai delta minimum dan ini indeks benar\n", - " correctindextrue = np.argmin(np.abs(sumsum))\n", - " minx_index = correctindextrue\n", - " miny_index = correctindextrue\n", + " # mencari indeks id mobil yang memiliki nilai minimum dan ini indeks yang tepat\n", + " indeksindextrue = np.argmin(np.abs(jumlahjumlah))\n", + " minx_index = indeksindextrue\n", + " miny_index = indeksindextrue\n", "\n", - " # mengambil delta nilai minimum untuk dibandingkan dengan radius\n", - " mindx = dx[minx_index, j]\n", - " mindy = dy[miny_index, j]\n", + " # mengambil nilai delta untuk id mobil yang dipilih\n", + " deltadeltadx = dx[minx_index, j]\n", + " deltadeltady = dy[miny_index, j]\n", "\n", - " if mindx == 0 and mindy == 0 and np.all(dx[:, j] == 0) and np.all(dy[:, j] == 0):\n", - " # periksa apakah minimum nilai adalah 0 dan semua delta adalah nol\n", - " # delta dapat berupa nol jika centroid tidak bergerak\n", + " if deltadeltadx == 0 and deltadeltady == 0 and np.all(dx[:, j] == 0) and np.all(dy[:, j] == 0):\n", + " # periksa apakah nilai minimum adalah 0 dan periksa apakah semua delta adalah nol karena ini adalah kumpulan kosong\n", + " # delta dapat berupa nol jika centroid tidak berpindah\n", "\n", - " continue # lanjutkan ke carid berikutnya\n", + " continue # lanjutkan ke id mobil selanjutnya\n", "\n", " else:\n", "\n", - " # jika delta nilai adalah kurang dari maksimal radius maka tambahkan centroid ke carid sebelumnya\n", - " if np.abs(mindx) < maxrad and np.abs(mindy) < maxrad:\n", + " # jika nilai delta kurang dari radius maksimum maka tambahkan centroid ke id mobil yang sesuai\n", + " if np.abs(deltadeltadx) < maxrad and np.abs(deltadeltady) < maxrad:\n", "\n", - " # tambahkan centroid ke carid yang sudah ada\n", + " # menambahkan centroid ke id mobil yang sudah ada\n", " df.at[int(framenumber), str(carids[j])] = [cxx[minx_index], cyy[miny_index]]\n", - " minx_index2.append(minx_index) # tambahkan semua indeks yang ditambahkan ke carid ke list\n", + " minx_index2.append(minx_index) # menambahkan indeks centroid yang sudah ditambahkan ke id mobil lain\n", " miny_index2.append(miny_index)\n", "\n", - " currentcars = 0 # current cars on screen\n", - " currentcarsindex = [] # current cars on screen carid index\n", + " for i in range(len(cxx)): # melakukan loop sebanyak centroid yang ada\n", "\n", - " for i in range(len(carids)): # loops through all carids\n", + " # jika centroid tidak ada dalam list minindex maka mobil baru perlu ditambahkan\n", + " if i not in minx_index2 and miny_index2:\n", "\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + " totalcars = totalcars + 1 # menambahkan jumlah mobil yang tercatat\n", + " t = totalcars - 1 # t adalah placeholder untuk jumlah mobil\n", + " carids.append(t) # menambahkan id mobil ke list id mobil\n", + " df.at[int(framenumber), str(t)] = [cxx[i], cyy[i]] # menambahkan centroid ke mobil yang sudah ada\n", + "\n", + " elif curcxcy[0] and not oldcxcy and not minx_index2 and not miny_index2:\n", + " # jika centroid saat ini ada namun centroid sebelumnya tidak ada\n", + " # mobil baru perlu ditambahkan jika minindex2 kosong\n", + "\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + " totalcars = totalcars + 1 # menambahkan jumlah mobil yang tercatat\n", + " t = totalcars - 1 # t adalah placeholder untuk jumlah mobil\n", + " carids.append(t) # menambahkan id mobil ke list id mobil\n", + " df.at[int(framenumber), str(t)] = [cxx[i], cyy[i]] # menambahkan centroid ke mobil yang sudah ada\n", + "\n", + " # Bagian di bawah menglabel centroid yang ada di layar\n", + "\n", + " currentcars = 0 # mobil yang ada di layar\n", + " currentcarsindex = [] # indeks id mobil yang ada di layar\n", + "\n", + " for i in range(len(carids)): # melakukan loops sebanyak jumlah id mobil\n", + "\n", + " # memeriksa frame saat ini untuk mengetahui id mobil yang sedang aktif\n", + " # dengan memeriksa adanya centroid pada frame saat ini untuk id mobil tertentu\n", " if df.at[int(framenumber), str(carids[i])] != '':\n", - " # checks the current frame to see which car ids are active\n", - " # by checking in centroid exists on current frame for certain car id\n", "\n", - " currentcars = currentcars + 1 # adds another to current cars on screen\n", - " currentcarsindex.append(i) # adds car ids to current cars on screen\n", + " currentcars = currentcars + 1 # menambahkan mobil yang ada di layar\n", + " currentcarsindex.append(i) # menambahkan id mobil yang ada di layar\n", "\n", - " for i in range(currentcars): # loops through all current car ids on screen\n", + " for i in range(currentcars): # melakukan loops sebanyak jumlah mobil yang ada di layar\n", "\n", - " # grabs centroid of certain carid for current frame\n", + " # mengambil centroid untuk id mobil tertentu pada frame saat ini\n", " curcent = df.iloc[int(framenumber)][str(carids[currentcarsindex[i]])]\n", "\n", - " # grabs centroid of certain carid for previous frame\n", + " # mengambil centroid untuk id mobil tertentu pada frame sebelumnya\n", " oldcent = df.iloc[int(framenumber - 1)][str(carids[currentcarsindex[i]])]\n", "\n", - " if curcent: # if there is a current centroid\n", + " if curcent: # jika ada centroid pada frame saat ini\n", "\n", - " # On-screen text for current centroid\n", + " # Teks di layar untuk centroid saat ini\n", " cv2.putText(image, \"Centroid\" + str(curcent[0]) + \",\" + str(curcent[1]),\n", " (int(curcent[0]), int(curcent[1])), cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 255, 255), 2)\n", "\n", @@ -268,84 +313,111 @@ " cv2.drawMarker(image, (int(curcent[0]), int(curcent[1])), (0, 0, 255), cv2.MARKER_STAR, markerSize=5,\n", " thickness=1, line_type=cv2.LINE_AA)\n", "\n", - " if oldcent: # checks if old centroid exists\n", - " # adds radius box from previous centroid to current centroid for visualization\n", - " xstart = oldcent[0] - maxrad\n", - " ystart = oldcent[1] - maxrad\n", - " xwidth = oldcent[0] + maxrad\n", - " yheight = oldcent[1] + maxrad\n", - " cv2.rectangle(image, (int(xstart), int(ystart)), (int(xwidth), int(yheight)), (0, 125, 0), 1)\n", + " # Periksa apakah centroid lama ada\n", + " # Tambahkan kotak radius dari centroid lama ke centroid saat ini untuk visualisasi\n", + " if oldcent:\n", + " xmulai = oldcent[0] - maxrad\n", + " ymulai = oldcent[1] - maxrad\n", + " xakhir = oldcent[0] + maxrad\n", + " yakhir = oldcent[1] + maxrad\n", + " cv2.rectangle(image, (int(xmulai), int(ymulai)), (int(xakhir), int(yakhir)), (0, 125, 0), 1)\n", "\n", - " # checks if old centroid is on or below line and curcent is on or above line\n", - " # to count cars and that car hasn't been counted yet\n", + " # Periksa apakah centroid lama di bawah garis dan centroid baru di atas garis\n", + " # Untuk menghitung mobil dan memastikan mobil tidak dihitung dua kali\n", " if oldcent[1] >= lineypos2 and curcent[1] <= lineypos2 and carids[\n", " currentcarsindex[i]] not in caridscrossed:\n", "\n", " carscrossedup = carscrossedup + 1\n", + " kenderaan_kiri = carscrossedup\n", " cv2.line(image, (0, lineypos2), (width, lineypos2), (0, 0, 255), 5)\n", " caridscrossed.append(\n", - " currentcarsindex[i]) # adds car id to list of count cars to prevent double counting\n", + " currentcarsindex[i]) # Tambahkan id mobil ke daftar mobil yang dihitung untuk mencegah penghitungan dua kali\n", "\n", - " # checks if old centroid is on or above line and curcent is on or below line\n", - " # to count cars and that car hasn't been counted yet\n", + " # Periksa apakah centroid lama di atas garis dan centroid baru di bawah garis\n", + " # Untuk menghitung mobil dan memastikan mobil tidak dihitung dua kali\n", " elif oldcent[1] <= lineypos2 and curcent[1] >= lineypos2 and carids[\n", " currentcarsindex[i]] not in caridscrossed:\n", "\n", " carscrosseddown = carscrosseddown + 1\n", + " kenderaan_kanan = carscrosseddown\n", " cv2.line(image, (0, lineypos2), (width, lineypos2), (0, 0, 125), 5)\n", " caridscrossed.append(currentcarsindex[i])\n", "\n", - " # Top left hand corner on-screen text\n", - " cv2.rectangle(image, (0, 0), (250, 100), (255, 0, 0), -1) # background rectangle for on-screen text\n", - "\n", - " cv2.putText(image, \"Cars in Area: \" + str(currentcars), (0, 15), cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 170, 0), 1)\n", - "\n", - " cv2.putText(image, \"Cars Crossed Up: \" + str(carscrossedup), (0, 30), cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 170, 0),\n", + " # menampilkan jumlah mobil yang melintasi atas\n", + " cv2.putText(image, \"Mobil yang Melintasi Atas: \" + str(carscrossedup), (0, 15), cv2.FONT_HERSHEY_SIMPLEX, .5, (255, 255, 255),\n", " 1)\n", "\n", - " cv2.putText(image, \"Cars Crossed Down: \" + str(carscrosseddown), (0, 45), cv2.FONT_HERSHEY_SIMPLEX, .5,\n", - " (0, 170, 0), 1)\n", + " # menampilkan jumlah mobil yang melintasi bawah\n", + " cv2.putText(image, \"Mobil yang Melintasi Bawah: \" + str(carscrosseddown), (0, 30), cv2.FONT_HERSHEY_SIMPLEX, .5,\n", + " (255, 255, 0), 1)\n", "\n", - " cv2.putText(image, \"Total Cars Detected: \" + str(len(carids)), (0, 60), cv2.FONT_HERSHEY_SIMPLEX, .5,\n", - " (0, 170, 0), 1)\n", + " # # menampilkan jumlah total mobil yang terdeteksi\n", + " # cv2.putText(image, \"Total Mobil yang Terdeteksi: \" + str(len(carids)), (0, 60), cv2.FONT_HERSHEY_SIMPLEX, .5,\n", + " # (255, 255, 255), 1)\n", "\n", - " cv2.putText(image, \"Frame: \" + str(framenumber) + ' of ' + str(frames_count), (0, 75), cv2.FONT_HERSHEY_SIMPLEX,\n", - " .5, (0, 170, 0), 1)\n", + " # menampilkan frame saat ini dan total frame\n", + " cv2.putText(image, \"Frame: \" + str(framenumber) + ' dari ' + str(frames_count), (0, 45), cv2.FONT_HERSHEY_SIMPLEX,\n", + " .5, (255, 255, 255), 1)\n", "\n", - " cv2.putText(image, 'Time: ' + str(round(framenumber / fps, 2)) + ' sec of ' + str(round(frames_count / fps, 2))\n", - " + ' sec', (0, 90), cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 170, 0), 1)\n", + " # menampilkan waktu yang sudah berlalu dan total waktu\n", + " cv2.putText(image, 'Waktu: ' + str(round(framenumber / fps, 2)) + ' detik dari ' + str(round(frames_count / fps, 2))\n", + " + ' detik', (0, 60), cv2.FONT_HERSHEY_SIMPLEX, .6, (255, 255, 0), 1)\n", "\n", - " # displays images and transformations\n", - " cv2.imshow(\"countours\", image)\n", - " cv2.moveWindow(\"countours\", 0, 0)\n", + " # menampilkan images dan transformasi\n", + " cv2.imshow(\"Output\", image)\n", + " cv2.moveWindow(\"Output\", 0, 0)\n", "\n", - " cv2.imshow(\"fgmask\", fgmask)\n", - " cv2.moveWindow(\"fgmask\", int(width * ratio), 0)\n", + " cv2.imshow(\"gray\", gray)\n", + " cv2.moveWindow(\"gray\", int(width * ratio), 0)\n", "\n", " cv2.imshow(\"closing\", closing)\n", " cv2.moveWindow(\"closing\", width, 0)\n", "\n", - " cv2.imshow(\"opening\", opening)\n", - " cv2.moveWindow(\"opening\", 0, int(height * ratio))\n", + " # cv2.imshow(\"opening\", opening)\n", + " # cv2.moveWindow(\"opening\", 0, int(height * ratio))\n", "\n", - " cv2.imshow(\"dilation\", dilation)\n", - " cv2.moveWindow(\"dilation\", int(width * ratio), int(height * ratio))\n", + " # cv2.imshow(\"dilation\", dilation)\n", + " # cv2.moveWindow(\"dilation\", int(width * ratio), int(height * ratio))\n", "\n", - " cv2.imshow(\"binary\", bins)\n", - " cv2.moveWindow(\"binary\", width, int(height * ratio))\n", + " # cv2.imshow(\"binary\", bins)\n", + " # cv2.moveWindow(\"binary\", width, int(height * ratio))\n", "\n", - " # video.write(image) # save the current image to video file from earlier\n", "\n", " # adds to framecount\n", " framenumber = framenumber + 1\n", "\n", - " k = cv2.waitKey(int(1000/fps)) & 0xff # int(1000/fps) is normal speed since waitkey is in ms\n", - " if k == 27:\n", + " # Menunggu key dari user dalam milidetik, fps adalah frame per detik, dan 0xff adalah binary\n", + " # bahasa indonesia: Menunggu key dari user dalam milidetik\n", + " k = cv2.waitKey(int(1000/fps)) & 0xff \n", + " if k == 27: # bahasa indonesia: Jika key nya adalah 27 (ESC) maka break loop\n", " break\n", "\n", - " else: # if video is finished then break loop\n", + " else: # bahasa indonesia: Jika video selesai maka break loop\n", "\n", - " break\n" + "\n", + " break\n", + "\n" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0ecd4ba-d8bd-4450-838a-c539dbe5c6b4", + "metadata": {}, + "outputs": [], + "source": [ + "## Menutup Window OpenCV" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "78a5686d-3899-4dac-a95c-cff992ac52ba", + "metadata": {}, + "outputs": [], + "source": [ + "print(kenderaan_kiri)\n", + "print(kenderaan_kanan)" ] }, { diff --git a/Pengujian baru.ipynb b/Pengujian baru.ipynb index e14a9bb..f2910a5 100644 --- a/Pengujian baru.ipynb +++ b/Pengujian baru.ipynb @@ -2,7 +2,7 @@ "cells": [ { "cell_type": "code", - "execution_count": null, + "execution_count": 13, "id": "f90cb956-250b-454e-855e-fefcd0ff880a", "metadata": {}, "outputs": [], @@ -12,7 +12,7 @@ }, { "cell_type": "code", - "execution_count": 1, + "execution_count": 14, "id": "93b77493-0a01-4421-b2a0-380991740ff6", "metadata": {}, "outputs": [], @@ -20,12 +20,25 @@ "import numpy as np\n", "import cv2\n", "import pandas as pd\n", - "\n" + "\n", + "jumlah_kenderaan = 0\n", + "kenderaan_kiri = 0\n", + "kenderaan_kanan = 0" ] }, { "cell_type": "code", - "execution_count": 2, + "execution_count": 15, + "id": "8d8696ea-4af1-4aa9-96cb-ff4538242ab5", + "metadata": {}, + "outputs": [], + "source": [ + "## Deklarasi Variable" + ] + }, + { + "cell_type": "code", + "execution_count": 16, "id": "80b4ff7c-1f3b-4e1d-896c-d88c0966f33e", "metadata": {}, "outputs": [ @@ -33,12 +46,12 @@ "name": "stdout", "output_type": "stream", "text": [ - "6868.0 30.03550936578534 848 478\n" + "3467.0 30.036135194663093 848 478\n" ] } ], "source": [ - "cap = cv2.VideoCapture('video/video.mp4')\n", + "cap = cv2.VideoCapture('video/malam.mp4')\n", "frames_count, fps, width, height = cap.get(cv2.CAP_PROP_FRAME_COUNT), cap.get(cv2.CAP_PROP_FPS), cap.get(\n", " cv2.CAP_PROP_FRAME_WIDTH), cap.get(cv2.CAP_PROP_FRAME_HEIGHT)\n", "width = int(width)\n", @@ -68,10 +81,504 @@ }, { "cell_type": "code", - "execution_count": null, - "id": "1c53be2e-1fc0-46af-b8dd-84cd6b1dffdb", + "execution_count": 17, + "id": "1c2cd208-3d36-4e1d-9376-5e1d223bd021", "metadata": {}, "outputs": [], + "source": [ + "## Proses Video " + ] + }, + { + "cell_type": "code", + "execution_count": 18, + "id": "1c53be2e-1fc0-46af-b8dd-84cd6b1dffdb", + "metadata": {}, + "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:178: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n", + "/var/folders/9r/fngx7sv11bl1k4rvtyflv1pw0000gn/T/ipykernel_65183/953859291.py:168: PerformanceWarning: DataFrame is highly fragmented. This is usually the result of calling `frame.insert` many times, which has poor performance. Consider joining all columns at once using pd.concat(axis=1) instead. To get a de-fragmented frame, use `newframe = frame.copy()`\n", + " df[str(totalcars)] = \"\" # membuat kolom baru untuk mobil baru yang tercatat\n" + ] + }, + { + "ename": "KeyboardInterrupt", + "evalue": "", + "output_type": "error", + "traceback": [ + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[18], line 123\u001b[0m\n\u001b[1;32m 120\u001b[0m oldcxcy \u001b[38;5;241m=\u001b[39m df\u001b[38;5;241m.\u001b[39miloc[\u001b[38;5;28mint\u001b[39m(framenumber \u001b[38;5;241m-\u001b[39m \u001b[38;5;241m1\u001b[39m)][\u001b[38;5;28mstr\u001b[39m(carids[j])]\n\u001b[1;32m 122\u001b[0m \u001b[38;5;66;03m# mengambil centroid dari frame sekarang yang tidak selalu sesuai dengan centroid dari frame sebelumnya\u001b[39;00m\n\u001b[0;32m--> 123\u001b[0m curcxcy \u001b[38;5;241m=\u001b[39m \u001b[43mnp\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43marray\u001b[49m\u001b[43m(\u001b[49m\u001b[43m[\u001b[49m\u001b[43mcxx\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mcyy\u001b[49m\u001b[43m[\u001b[49m\u001b[43mi\u001b[49m\u001b[43m]\u001b[49m\u001b[43m]\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 125\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m oldcxcy: \u001b[38;5;66;03m# jika centroid dari frame sebelumnya kosong karena mobil keluar layar\u001b[39;00m\n\u001b[1;32m 127\u001b[0m \u001b[38;5;28;01mcontinue\u001b[39;00m \u001b[38;5;66;03m# lanjutkan ke id mobil selanjutnya\u001b[39;00m\n", + "\u001b[0;31mKeyboardInterrupt\u001b[0m: " + ] + } + ], "source": [ "while True:\n", "\n", @@ -305,6 +812,7 @@ " currentcarsindex[i]] not in caridscrossed:\n", "\n", " carscrossedup = carscrossedup + 1\n", + " kenderaan_kiri = carscrossedup\n", " cv2.line(image, (0, lineypos2), (width, lineypos2), (0, 0, 255), 5)\n", " caridscrossed.append(\n", " currentcarsindex[i]) # Tambahkan id mobil ke daftar mobil yang dihitung untuk mencegah penghitungan dua kali\n", @@ -315,6 +823,7 @@ " currentcarsindex[i]] not in caridscrossed:\n", "\n", " carscrosseddown = carscrosseddown + 1\n", + " kenderaan_kanan = carscrosseddown\n", " cv2.line(image, (0, lineypos2), (width, lineypos2), (0, 0, 125), 5)\n", " caridscrossed.append(currentcarsindex[i])\n", "\n", @@ -324,7 +833,7 @@ "\n", " # menampilkan jumlah mobil yang melintasi bawah\n", " cv2.putText(image, \"Mobil yang Melintasi Bawah: \" + str(carscrosseddown), (0, 30), cv2.FONT_HERSHEY_SIMPLEX, .5,\n", - " (255, 255, 255), 1)\n", + " (255, 255, 0), 1)\n", "\n", " # # menampilkan jumlah total mobil yang terdeteksi\n", " # cv2.putText(image, \"Total Mobil yang Terdeteksi: \" + str(len(carids)), (0, 60), cv2.FONT_HERSHEY_SIMPLEX, .5,\n", @@ -336,7 +845,7 @@ "\n", " # menampilkan waktu yang sudah berlalu dan total waktu\n", " cv2.putText(image, 'Waktu: ' + str(round(framenumber / fps, 2)) + ' detik dari ' + str(round(frames_count / fps, 2))\n", - " + ' detik', (0, 60), cv2.FONT_HERSHEY_SIMPLEX, .5, (255, 255, 255), 1)\n", + " + ' detik', (0, 60), cv2.FONT_HERSHEY_SIMPLEX, .6, (255, 255, 0), 1)\n", "\n", " # menampilkan images dan transformasi\n", " cv2.imshow(\"Output\", image)\n", @@ -374,6 +883,27 @@ "\n" ] }, + { + "cell_type": "code", + "execution_count": null, + "id": "d0ecd4ba-d8bd-4450-838a-c539dbe5c6b4", + "metadata": {}, + "outputs": [], + "source": [ + "## Menutup Window OpenCV" + ] + }, + { + "cell_type": "code", + "execution_count": null, + "id": "78a5686d-3899-4dac-a95c-cff992ac52ba", + "metadata": {}, + "outputs": [], + "source": [ + "print(kenderaan_kiri)\n", + "print(kenderaan_kanan)" + ] + }, { "cell_type": "code", "execution_count": null, diff --git a/app.py b/app.py index 7f189c9..45dcfd4 100644 --- a/app.py +++ b/app.py @@ -170,7 +170,7 @@ def generate_frames2(video, threshold,stat): ratio = .5 # resize ratio image = cv2.resize(frame, (0, 0), None, ratio, ratio) # resize image width2, height2, channels = image.shape - video = cv2.VideoWriter('traffic_counter.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, (height2, width2), 1) + # video = cv2.VideoWriter('traffic_counter.avi', cv2.VideoWriter_fourcc('M', 'J', 'P', 'G'), fps, (height2, width2), 1) while True: @@ -199,18 +199,18 @@ def generate_frames2(video, threshold,stat): hull = [cv2.convexHull(c) for c in contours] # draw contours - cv2.drawContours(image, hull, -1, (0, 255, 0), 3) + # cv2.drawContours(image, hull, -1, (0, 255, 0), 3) # line created to stop counting contours, needed as cars in distance become one big contour - lineypos = 100 - cv2.line(image, (0, lineypos), (width, lineypos), (255, 0, 0), 5) + lineypos = 125 + # cv2.line(image, (0, lineypos), (width, lineypos), (255, 0, 0), 5) # line y position created to count contours - lineypos2 = 125 + lineypos2 = 150 cv2.line(image, (0, lineypos2), (width, lineypos2), (0, 255, 0), 5) # min area for contours in case a bunch of small noise contours are created - minarea = 400 + minarea = 175 # max area for contours, can be quite large for buses maxarea = 50000 @@ -382,8 +382,8 @@ def generate_frames2(video, threshold,stat): cv2.putText(image, "Centroid" + str(curcent[0]) + "," + str(curcent[1]), (int(curcent[0]), int(curcent[1])), cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 255, 255), 2) - cv2.putText(image, "ID:" + str(carids[currentcarsindex[i]]), (int(curcent[0]), int(curcent[1] - 15)), - cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 255, 255), 2) + # cv2.putText(image, "ID:" + str(carids[currentcarsindex[i]]), (int(curcent[0]), int(curcent[1] - 15)), + # cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 255, 255), 2) cv2.drawMarker(image, (int(curcent[0]), int(curcent[1])), (0, 0, 255), cv2.MARKER_STAR, markerSize=5, thickness=1, line_type=cv2.LINE_AA) @@ -402,6 +402,7 @@ def generate_frames2(video, threshold,stat): currentcarsindex[i]] not in caridscrossed: carscrossedup = carscrossedup + 1 + kenderaan_kiri = carscrossedup cv2.line(image, (0, lineypos2), (width, lineypos2), (0, 0, 255), 5) caridscrossed.append( currentcarsindex[i]) # adds car id to list of count cars to prevent double counting @@ -412,30 +413,32 @@ def generate_frames2(video, threshold,stat): currentcarsindex[i]] not in caridscrossed: carscrosseddown = carscrosseddown + 1 + kenderaan_kanan = carscrosseddown cv2.line(image, (0, lineypos2), (width, lineypos2), (0, 0, 125), 5) caridscrossed.append(currentcarsindex[i]) + jumlah_kenderaan = carscrossedup + carscrosseddown # Top left hand corner on-screen text #cv2.rectangle(image, (0, 0), (250, 100), (255, 0, 0), -1) # background rectangle for on-screen text - cv2.putText(image, "Kenderaan Sebelah Kiri: " + str(carscrossedup), (0, 15), cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 170, 0), - 1) + cv2.putText(image, "Kenderaan Sebelah Kiri: " + str(carscrossedup), (0, 20), cv2.FONT_HERSHEY_SIMPLEX, .7, (255,255,255), + 4) - cv2.putText(image, "Kenderaan Sebelah Kanan: " + str(carscrosseddown), (0, 30), cv2.FONT_HERSHEY_SIMPLEX, .5, - (0, 170, 0), 1) + cv2.putText(image, "Kenderaan Sebelah Kanan: " + str(carscrosseddown), (0, 45), cv2.FONT_HERSHEY_SIMPLEX, .7, + (255,255,255), 4) # cv2.putText(image, "Total Cars Detected: " + str(len(carids)), (0, 60), cv2.FONT_HERSHEY_SIMPLEX, .5, - # (0, 170, 0), 1) + # (255,255,255), 1) - cv2.putText(image, "Frame: " + str(framenumber) + ' dari ' + str(frames_count), (0, 45), cv2.FONT_HERSHEY_SIMPLEX, - .5, (0, 170, 0), 1) + cv2.putText(image, "Frame: " + str(framenumber) + ' dari ' + str(frames_count), (0, 60), cv2.FONT_HERSHEY_SIMPLEX, + .5, (255,255,255), 1) cv2.putText(image, 'Waktu: ' + str(round(framenumber / fps, 2)) + ' detik dari ' + str(round(frames_count / fps, 2)) - + ' detik', (0, 60), cv2.FONT_HERSHEY_SIMPLEX, .5, (0, 170, 0), 1) + + ' detik', (0, 75), cv2.FONT_HERSHEY_SIMPLEX, .5, (255,255,255), 1) + + + - kenderaan_kanan = carscrosseddown - kenderaan_kiri = carscrossedup - jumlah_kenderaan = carscrossedup + carscrosseddown # displays images and transformations and resize to 1280x720 # cv2.imshow("countours", image) @@ -456,7 +459,7 @@ def generate_frames2(video, threshold,stat): # cv2.moveWindow("closing", width, 0) elif stat == 'detectar': # frame_to_encode = closing - frame_to_encode = cv2.resize(closing, (1280, 720)) + frame_to_encode = cv2.resize(bins, (1280, 720)) else : # frame_to_encode = opening frame_to_encode = cv2.resize(frame, (1280, 720)) @@ -490,7 +493,7 @@ def generate_frames2(video, threshold,stat): break cap.release() - + cv2.destroyAllWindows() diff --git a/main3.py b/main3.py index e648b7c..d5fd70b 100644 --- a/main3.py +++ b/main3.py @@ -304,14 +304,14 @@ while True: cv2.imshow("closing", closing) cv2.moveWindow("closing", width, 0) - # cv2.imshow("opening", opening) - # cv2.moveWindow("opening", 0, int(height * ratio)) + cv2.imshow("opening", opening) + cv2.moveWindow("opening", 0, int(height * ratio)) - # cv2.imshow("dilation", dilation) - # cv2.moveWindow("dilation", int(width * ratio), int(height * ratio)) + cv2.imshow("dilation", dilation) + cv2.moveWindow("dilation", int(width * ratio), int(height * ratio)) - # cv2.imshow("binary", bins) - # cv2.moveWindow("binary", width, int(height * ratio)) + cv2.imshow("binary", bins) + cv2.moveWindow("binary", width, int(height * ratio)) # adds to framecount @@ -328,6 +328,7 @@ while True: break + cap.release() cv2.destroyAllWindows() diff --git a/templates/index.html b/templates/index.html index ab04ffe..f4fb2a0 100644 --- a/templates/index.html +++ b/templates/index.html @@ -160,7 +160,7 @@
- +

...

Kenderaan Kiri

@@ -170,7 +170,7 @@
- +

...

Kenedraan Kanan

@@ -180,7 +180,7 @@
- +

...

Jumlah Kenderaan