Visualization Series

Take a Look on New York CitiBike

Exploratory Data Analisis

Pratiwi Eka Puspita
6 min readJul 2, 2021
Photo by Wayne Bishop on Unsplash

Artikel ini akan mengulas tentang Exploratory Data Analysis (EDA) pada contoh dataset New York CitiBike tahun 2015–2017 yang di-import dari Google BigQuery.

Sebelumnya, user diminta untuk masuk ke akun google dan mengakses BigQuery pertama kali dengan meng-create folder project agar dapat mengunduh public dataset di dalamnya. Lalu, pada analisis ini saya menggunakan tools Python melalui Google Colaboratory untuk meng-import dataset tersebut agar dapat diolah lebih lanjut.

Dataset berupa citibike_stations dari akun project my-first-project-318200 yang disimpan dalam variabel df

Sayangnya, dataset yang ingin diunduh dalam studi ini berukuran sangat besar. Sehingga, saya perlu mengunduh dataset tersebut dalam bentuk partisi berdasarkan periode tahunan dalam kolom “starttime”. Setelah file berhasil diunduh, lalu disimpan dalam bentuk csv dengan function write yang tersedia. Namun, ketika saya ingin mencoba menggabungkan beberapa file tersebut agar terbaca dalam bentuk dataset utuh, selalu gagal karena ketidakcukupan memory dalam prosesnya.

File yang diunduh ini pun masih gagal

Update: Saya menemukan library yang cukup optimal dalam pengolahan BigData di Colab (Python) yaitu PySpark. Saya telah mencoba menggunakan fitur ini yang dapat dilihat detailnya pada artikel berikut. Saya tidak sabar untuk belajar lebih banyak terkait fitur ini dan akan menggunakannya untuk analisis BigData selanjutnya.

Oleh karena itu, saya menggunakan alternatif tools lainnya berupa Tableau Prep Builder yang dapat meng-combine keseluruhan file menjadi dataset yang utuh dan disimpan dalam bentuk .hyper (low memory).

Ini adalah flow yang saya gunakan dalam menggabungkan keseluruhan partisi dataset menjadi kesatuan utuh

Semula, saya ingin melakukan analisis menggunakan python. Namun karena proses unduh dataset masih terus saja gagal walapun dalam bentuk partisi, akhirnya saya menggunakan bantuan Tableau Desktop dalam mengeksplorasi dataset ini. Namun demikian, saya telah mencoba menganalisis sampel dataset yang barisnya (row) dipilih secara acak. Code lengkapnya dapat ditemukan pada link berikut.

Dalam eksplorasi dataset tentunya perlu melewati proses pembersihan data (data cleaning) terlebih dahulu. Hal ini akan lebih mudah dilakukan menggunakan Python namun juga bisa dilakukan di Tableau Prep Builder. Berikut adalah tahapan pembersihan data dalam studi ini.

Dataset di-filter untuk mendapatkan baris data yang sesuai dengan periode yang sedang dianalisis, yaitu tahun 2015–2017. Lalu kolom yang memiliki nilai seragam/null sebaiknya dihilangkan saja.

Selanjutnya, ditemukan adanya ketidaksesuaian pada kolom station_ID dan station_name. Idealnya, setiap ID stasiun memiliki memiliki 1 penamaan stasiun. Namun, dalam dataset ditemukan terdapat beberapa ID stasiun yang memiliki beberapa penamaan. Umumnya perbedaan tersebut disebabkan ketidakkonsistenan spasi, huruf besar/kecil, posisi kata, singkatan kata, dan lainnya. Pengecekan ini tentu akan lebih mudah dilakukan di Python. Pada Tableau Prep Builder, terdapat keterbatasan dalam melakukan ini sehingga proses ini tidak dapat dieksekusi dengan baik.

Berikutnya adalah pengecekan nilai null pada barisan data untuk masing-masing kolom dataset. Ditemukan beberapa baris pada kolom “birth_year” yang tidak memiliki nilai. Setelah dicek, nilai ini pasti sebaris dengan nilai unknown pada kolom “gender”. Barisan data ini dihapus dari dataset dengan pertimbangan akan ada tahapan analisis yang melibatkan “gender” sehingga perlu memiliki data yang konsisten dari awal.

Selanjutnya, dataset yang memuat dataset dengan “tripduration” kurang dari 1.5 menit dan memiliki “start_stations_name” sama dengan “end_station_name” diasumsikan sepeda yang digunakan rusak. User mengembalikan sepeda ke tempat peminjaman awal. Dataset ini harus dihilangkan untuk mencegah adanya bias dari data set yang bersifat outlier.

Asumsi kriteria sepeda rusak

Selain itu, barisan dataset dengan kriteria rebalancing/hilang dihapus. Rebalancing adalah proses memindahkan sepeda dari stasiun yang memiliki stok sepeda berlebih ke stasiun dengan stok yang kekurangan sepeda. Terkadang terdapat “tripduration” lebih dari 2 jam yang peluangnya sangat kecil terjadi. User dengan stamina terbaik pun akan lelah bila bersepeda hingga waktu yang cukup lama. Lagipula dataset dengan kriteria ini jumlahnya sedikit namun nilainya dapat membuat bias hasil analisis.

Asumsi sepeda yang dilakukan rebalancing / hilang

Setelah tahapan pembersihan data selesai, dataset siap untuk dianalisis. Dalam tahapan ini, saya mencoba memvisualisasikan hasil analisis ke dalam 3 dashboard yang saling berkaitan satu sama lainnya. Diantaranya adalah Stations’ Performance, Bikes’ Maintenance, dan Daily Distribution of Bikes at Station dalam setiap halaman story. Berikut adalah penjelasan mengenai visualisasi dari hasil analisis eksplorasi data New York CitiBike menggunakan Tableau Desktop.

Pada dashboard pertama ini, Stations’ Performance, pemerintah setempat dapat memberikan perhatian yang lebih prioritas terhadap sarana dan prasarana di stasiun dan rute yang memiliki pengunjung terpadat. Hal ini dilakukan untuk memastikan pelayanan peminjaman sepeda di stasiun-stasiun tersebut dapat berjalan dengan optimal. Umumnya, stasiun dan rute yang padat dengan pengunjung tentunya berdampak pada frekuensi dan kuantitas penggunaan fasilitas di dalamnya, baik stasiun maupun rute antar stasiun.

Dashboard halaman pertama

Sebagai tambahan pula, pemerintah dapat mengambil keputusan dalam optimasi biaya belanja pegawai dengan meng-hire jumlah pegawai sesuai kebutuhan yang ditempatkan pada waktu-waktu kritis. Misalnya saja pemerintah dapat meng-hire lebih banyak pegawai pada September-Oktober ketika puncak jumlah pengunjung. Sedangkan di setiap minggunya, jumlah kebutuhan pegawai terbanyak tentu saja saat hari kerja pada jam 8–9 am dan 5–6 pm. Sebagai catatan, keseluruhan nilai yang ditampilkan tersebut merupakan rataan dari masing-masing periode terkait. Dalam Tableau Desktop digunakan function “FIXED” untuk melakukan hal ini.

Contoh penggunaan “FIXED” dalam mengitung jumlah pengunjung per satuan waktu (jam)

Selanjutnya adalah tampilan dashboard halaman kedua dengan topik Bikes’ Performance. Topik ini memberikan gambaran bagi pemerintah atas ketersediaan sepeda yang dimiliki dari keseluruhan stasiun. Analisis penggunaan sepeda berdasarkan gender dan usertype juga dapat dijadikan bahan pertimbangan apakah diperlukan jenis sepeda tertentu terkait karakteristik penggunaan masing-masing tipe gender dan usertype. Kesesuaian fitur sepeda sesuai karakteristik tentunya dimaksudkan agar sepeda dapat bertahan cukup baik, atau tidak rusak sebelum waktunya. Dari hasil analisis, ternyata tidak ada perbedaan mencolok pada karakteristik penggunaan sepeda berdasarkan gender. Justru, perbedaan terlihat pada masing-masing usertype. Tipe pengguna “Customer” memiliki jarak lintasan yang umumnya diatas “Subscriber” tetapi kecepatannya lebih rendah. Dengan demikian, bagi pengguna tipe “Customer” dapat diberikan pilihan sepeda yang lebih nyaman untuk berjalan-jalan mengitari stasiun tanpa perlu fitur speed dari sepeda tersebut. Sebaliknya, pengguna tipe “Subscriber” perlu disediakan stok sepeda yang mumpuni untuk berjalan dengan kecepatan tinggi.

Dashboard halaman kedua

Selain itu, pemerintah juga perlu mempertimbangkan pengecekan terhadap sejumlah sepeda yang memiliki usia tempuh di atas rata-rata. Kemungkinan sepeda dengan jarak tempuh tertentu perlu diperhatikan kembali keamanannya misalnya, rantai, stang, rem, dan lainnya. Setelah pengecekan dilakukan, dapat ditentukan apakah sepeda perlu diganti onderdilnya atau kah diganti dengan stok yang baru. Pada grafik boxplot, terlihat bahwa komposisi sepeda tua dan baru berdasarkan usia, tampaknya seimbang. Hal ini dibuktikan dengan grafik berikutnya yang menggambarkan bahwa terdapat 4.172 sepeda tua (berdasarkan total jarak tempuhnya) yang perlu diprioritaskan untuk dilakukan pengecekan.

Sementara itu, pada halaman berikutnya ditampilkan dashboard dengan topik Daily Distribution of Bikes at Station yang bertujuan menggambarkan status stok sepeda harian di masing-masing stasiun. Sayangnya, dalam menganalisis hal ini, data yang ada tidak lengkap. Tidak semua stasiun ID pada dataset memiliki informasi mengenai ketersediaan sepeda dan kapasitasnya (diperoleh dari tabel “station” di BigQuery). Dengan demikian, analisis ini hanya menggunakan Stasiun ID yang memiliki informasi secara lengkap.

Dashboard halaman ketiga

Beberapa status stasiun yang ditampilkan dalam visualisasi ini dijelaskan sebagai berikut. SURPLUS OVER bila stok harian stasiun dapat mencukupi kebutuhan tetapi jumlahnya melebihi kapasitas stasiun. SURPLUS BALANCE sama bila stok harian stasiun sama seperti sebelumnya dan jumlahnya tepat sesuai kapasitas stasiun. Sedangkan SURPLUS UNDER bila jumlah kelebihan stoknya berada dibawah nilai kapasitas stasiun terkait. Terakhir, SHORTAGE bila stok harian sepeda di stasiun sifatnya minus, tidak mampu mencukupi kebutuhan. Nilai stok yang dimaksud adalah selisih sepeda yang masuk (saat pengguna mengembalikan sepeda) dan sepeda yang keluar (saat pengguna meminjam sepeda). Kemudian nilai stok tersebut dibandingkan dengan ketersediaan sepeda di awal hari yang diperoleh informasinya dari tabel “station” pada kolom availability. Idealnya, bila terdapat nilai yang minus maka akan dilakukan rebalancing dari stasiun yang memiliki kelebihan stok. Tujuan dari analisis ini adalah untuk mengantisipasi adanya kejadian rebalancing berulang kali. Maka diperlukan adanya penyesuan ketersediaan sepeda (availability) yang optimum. Hal ini sebagai upaya untuk meminimalkan biaya logistik yang diperlukan dalam proses rebalancing. Antisipasi diharapkan untuk penyesuaian jumlah stok awal sepeda di awal tahun, misalnya, sehingga biaya logistik dapat diminimumkan.

Sementara itu tabel yang terlihat dibawah bar chart merupakan detail ID stasiun yang sesuai dengan kategori bar di atasnya. Stasiun ID terletak pada posisi yang sesuai dengan urutan prioritas. Misalnya Stasiun ID nomor 324 dengan status SURPLUS OVER dapat memindahkan sebagian sepedanya ke Stasiun ID nomor 3236 dengan status SHORTAGE. Analisis semacam ini selayaknya lebih optimal bila dilakukan dengan python/R namun karena kesulitan memproses dataset dengan ukuran sangat besar, analisis dilakukan hanya menggunakan Tableau Desktop.

Demikian, semoga penjelasan mengenai EDA dataset ini dapat bermanfaat bagi pembaca semua.

--

--

No responses yet