Temperatures Analysis Using Pandas and Matplotlib

Insan Cahya Setia
6 min readMar 21, 2021
https://www.thejakartapost.com/life/2019/05/27/unseasonably-high-temperatures-continue-across-japan.html

Halo semuanya, kembali lagi bersama saya, kali ini kita akan melakukan data manipulation menggunakan library Pandas dan juga Matplotlib untuk visualisasi. Data yang akan kita gunakan kali ini yaitu data suhu untuk setiap negara dan kota di seluruh dunia setiap bulan pada tahun 2000 sampai 2013. Sebagai perkenalan, data suhu ini terdiri dari data bulan (date), negara (country) , kota (city), dan rata-rata suhu (avg_temp_c). Oke langsung saja pada pembahasannya..

Pertama kita akan memuat data dalam bentuk csv menggunakan function read_csv() dari library Pandas. Selanjutnya kita lihat lima data teratas menggunakan function head().

Top five rows

Terlihat bahwa data terdiri dari lima kolom, yaitu index, date, city, country, dan avg_temp_c. Pengecualian untuk kolom index, karena kolom ini hanya merupakan nomor untuk setiap baris pada data data suhu, maka kita akan menghapusnya nanti. Selanjutnya kita lihat informasi data suhu kita seperti tipe data dan sebagainya menggunakan function info().

Infromation dataset

Terlihat bahwa informasi data seperti tipe data tiap kolom dan total baris dan kolom. Namun ada satu kesalahan, kolom date masih bertipe data object, maka kita akan convert kolom date menjadi tipe data datetime menggunakan function to_datetime(). Kita juga akan menghapus kolom index menggunakan function drop().

Infromation dataset after handling

Terlihat bahwa kolom date sudah berubah menjadi tipe data datetime dan kolom index sudah dihapus.

Selanjutnya kita akan melihat apakah data yang kita miliki memiliki missing value. Bagi kalian yang kurang familiar dengan missing value kalian bisa lihat dokumentasi nya disini. Kita akan melihat jumlah missing value tiap kolom menggunakan isna() dan sum() untuk menjumlahkan missing value.

Sum of missing value each column

Terlihat bahwa kolom avg_temp_c memiliki missing value sebanyak 93. Tugas kita yaitu mengisi missing value tersebut dengan sebuah nilai. Terdapat banyak cara untuk mengisi missing value, salah satu yang paling sederhana yaitung dengan menggunakan nilai tengah (median) atau rata-rata (median). Pengisian missing value (imputation) menggunakan mean apabila pda data tidak terdapat pencilan (outliers). Jika terdapat outliers kita bisa menggunakan nilai tengah (median). Untuk melihat ada tidaknya outliers kita bisa menggunakan visualisasi yaitu menggunakan boxplot dari library Pandas.

avg_temp_c column boxplot

Terlihat bahwa data suhu memiliki data outliers dilihat dari adanya titik-titik pada grafik (dibawah dari persentil ke 25). Banyak cara untuk menangani data outliers, tetapi untuk saat ini kita diamkan saja. Karena adanya outliers, maka kita akan menggunakan nilai tengah (median) untuk mengisi missing value pada data suhu menggunakan function fillna(), lalu masukkan median dari data suhu sebagai parameter.

Missing values after imputation

Terlihat bahwa data suhu sudah tidak memiliki missing value setelah dilakukan imputasi.

Selanjutnya kita ingin mengetahui dari tahun berapa data suhu ini tersedia. Maka kita bisa gunakan function min() untuk melihat awal tahun data tersedia dan max() untuk melihat data tahun terbaru.

First and last date

Ternyata data suhu pertama terdata dari bulan Januari 2000 dan data terakhir pada bulan September 2013.

Ada negara dan kota apa apa saja yang terdapat pada data suhu ini? Pertanyaan berikut dapat kita temukan dengan melihat nilai untuk unik untuk setiap kolom menggunakan function unique().

List of country
List of city

Kita akan membuat kolom baru yaitu year dengan mengambil hanya data tahun dari kolom date, Kamu bisa menggunakan dt.year.

Adding year column

Terlihat bahwa kolom year sudah ditambahkan dengan hanya menampilkan tahun setiap data.

Sebenarnya negara mana saja yang mempunyai rata-rata suhu paling tinggi? Untuk menjawab pertanyaan itu kita akan melakukan grouping pada kolom country lalu kita hitung rata-rata suhu menggunakan function mean(). Setelah itu kita bisa urutkan dari rata-rata terbesar ke terkecil (descending) menggunakan function sort_values() lalu ambil lima negara teratas menggunakan function head().

Top 5 average temperature per country

Negara Sudan memiliki rata-rata suhu terbesar mencapai 29.93 celsius diikitu oleh negara Somalia, Thailand, Vietnam, dan Saudi Arabia.

Kita juga bisa melihat lima kota dengan rata-rata suhu tertinggi. Kita cukup memspesifikasikan kolom city seperti kita menghasilkan lima negara tertinggi seperti diatas.

Top 5 average temperature per city

Kota Umm Durman memiliki rata-rata suhu tertinggi mencapai 29.93 diikuti Madras, Jiddah, Mogadishu, dan Bangkok.

Selanjutnya kita bisa membuat grafik per tahun untuk kelima negara tertinggi menggunakan library Matplotlib. Kita juga akan membuat grafik untuk kelima kota dengan rata-rata suhu tertinggi.

Top 5 average temperature per country visualization

Terlihat Negara Sudan memiliki rata-rata suhu diatas keempat negara lainnya untuk setiap tahun, terhitung dari tahun 2000 sampai 2013, dengan rata-rata suhu tertinggi terjadi pada tahun 2010.

Top 5 average temperature per city visualization

Kota Umm Durman mengalami tren rata-rata suhu setiap tahun diatas 29.5 celsius dengan tertinggi terjadi pada tahun 2010.

Lalu bagaimana untuk tren rata-rata suhu di Indonesia. apakah sama setiap tahunnya? Maka dari itu kita akan buat visualisasi untuk rata-rata suhu setiap kota di Indonesia.

Terdapat dua kota pada data rata-rata suhu di Indonesia, yaitu Jakarta dan Surabaya. Kota Surabaya memiliki rata-rata suhu diatas Kota Jakarta, tetapi Kota Jakarta maupun Surabaya mengalami penurunan rata-rata suhu yag cukup signifikan, yaitu terjadi pada tahun 2013.

Kita akan menjadikan kolom country menjadi index pada data suhu kita, yaitu dengan menggunakan function set_index. Menjadikan negara menjadi index akan memudahkan dalam menyaring data berdasarkan negara tanpa melakukan subsetting, cukup menggunakan .loc[].

Set index country column

Terlihat negara sudah menjadi index, ini akan memudahkan kita dalam melakukan penyaringan data.

Kita akan menyaring data hanya berdasarkan negara Indonesia menggunakan .loc[] lalu simpan menjadi variabel baru bernama temp_indo.

Data rata-rata suhu sudah terfilter hanya menampilkan negara Indonesia dengan jumlah data berjumlah 330 data.

Kita akan mensortir data hanya untuk Kota Jakarta dan hanya data pada tahun 2012. Kita bisa menggunakan filtering sederhana, yaitu menggunakan operator AND.

Data rata-rata suhu sudah tersortir hanya data untuk Kota Jakarta pada tahun 2012.

Dapatkan kamu melihat tren rata-rata suhu untuk Kota Jakarta setiap bulan? Apakah data setiap bulan mengalami penurunan suhu atau sebaliknya? Maka dari itu kita bisa membuat visualisasi untuk melihat tren rata-rata suhu setiap bulan menggunakan Matplotlib.

Rata-rata suhu setiap bulan relatif mengalami kenaikan pada bulan Januari-Mei 2012, dengan puncaknya terjadi rata-rata suhu tertinggi pada bulan Mei, tetapi terjadi penurunan rata-rata suhu yang signifikan pada bulan Mei-Juli 2012.

Cukup banyak yang sudah kita pelajari dari pembahasan diatas, seperti melihat data teratas, informasi dataset, menghitung dan mengisi missing value, grouping, dan melakukan visualisasi menggunakan library Matplotlib. Bagi kalian yang ingin melihat project lengkap dari pembahasan diatas, kalian bisa mengunjingi di Github saya disini.

Baik cukup sekian yang dapat saya sampaikan. Semoga bisa bermanfaat untuk kita semua. Selamat berjumpa di lain waktu. See you. Dont stop to learn…

--

--