Bekerja dengan tanggal dan waktu di Python tidak otomatis saat menganalisis kumpulan data untuk pertama kalinya. Ada banyak fitur yang perlu diperhatikan, seperti tahun, bulan, hari, jam, menit, detik, tetapi juga fitur yang lebih kompleks seperti durasi, hari kerja, zona waktu. Untuk alasan ini, saya akan berbicara tentang modul Python, yang memanipulasi jenis informasi ini. [1]
Kumpulan data sering memiliki tanggal yang direpresentasikan sebagai string dan Anda perlu mengonversinya ke format datetime agar dapat bekerja dengan data deret waktu. Dalam tutorial ini, saya akan menjelaskan library dengan beberapa contoh agar mudah memahami cara menangani data ini
Isi
1. Kelas datetime
Ada enam kelas datetime yang berbeda untuk menangani berbagai aspek tanggal dan waktu
- tanggal → memungkinkan untuk bekerja dengan tahun, bulan, hari
- waktu → memungkinkan untuk memanipulasi informasi dari hari, jam, menit, detik, mikrodetik, dan tzinfo tertentu
- datetime → gabungkan tanggal dan waktu bersama. Jadi, atributnya adalah tahun, bulan, hari, jam, menit, detik, mikrodetik, dan tzinfo
- timedelta → durasi yang mewakili perbedaan antara dua istance tanggal, waktu, atau waktu
- tzinfo → class untuk objek informasi zona waktu
- zona waktu → kelas yang mengimplementasikan kelas dasar abstrak tzinfo sebagai offset tetap dari UTC
Fungsi yang paling sering digunakan yang mengembalikan datetime yang sesuai dengan string disebut strptime. Dibutuhkan sebagai argumen string dan format tanggal yang sesuai dari string
tanggal Waktu. strptime[string_tanggal, format]
Kita dapat memeriksa bagaimana fungsi bekerja dengan berbagai contoh
Hasil
2021-05-01 00:00:002021-05-01 00:00:002020-12-31 00:00:002020-12-31 23:55:55
Setelah mengimpor datatime, kami meneruskan string ke fungsi strptime[]. Formatnya dibentuk oleh arahan seperti %d dan karakter khusus [spasi kosong, koma, titik, …]
Sekarang saya akan menunjukkan contoh yang lebih kompleks
Hasil
2007-01-01 00:14:24_
2007-01-01 00:14:24.055000
2007-01-01T00:14:24.055+01002007-01-01T00:14:24.055+0100 #string modified
2007-01-01 00:14:24.055000+01:00
Tabel di bawah menunjukkan arahan paling relevan yang digunakan untuk mengontrol string format eksplisit
Arahan yang paling relevan. Untuk gambaran lengkap tentang tabel, lihat
Cara yang lebih mudah untuk mengenali offset UTC tanpa menghapus “. “ adalah dengan menggunakan fungsi parse dari modul parser [2]
Hasil
datetime.datetime[2005, 1, 3, 2, 25, tzinfo=tzoffset[None, 3600]]
Itu dapat mengurai string tanpa menentukan format string
3. Ekstrak fitur dari objek datetimeFitur yang lebih kompleks dapat diekstraksi dengan mudah dari objek datetime. Untuk melakukannya, kita dapat menggunakan metode dir yang mengembalikan daftar semua atribut objek yang valid. Ini sangat efektif ketika perpustakaan tidak sepenuhnya didokumentasikan atau Anda ingin membuat kode lebih cepat. Mari kita gunakan contoh terakhir, di mana variabel d juga merupakan objek waktu
Hasil
['__add__',...'astimezone', 'combine', 'ctime', 'date', 'day', 'dst', 'fold', 'fromordinal', 'fromtimestamp', 'hour', 'isocalendar', 'isoformat', 'isoweekday', 'max', 'microsecond', 'min', 'minute', 'month', 'now', 'replace', 'resolution', 'second', 'strftime', 'strptime', 'time', 'timestamp', 'timetuple', 'timetz', 'today', 'toordinal', 'tzinfo', 'tzname', 'utcfromtimestamp', 'utcnow', 'utcoffset', 'utctimetuple', 'weekday', 'year']
Ada banyak informasi yang bisa digali seperti tahun, bulan, hari, jam, menit, detik, dan mikrodetik
Hasil
2005
1
3
2
25
0
0
tzoffset[None, 3600]
_Jenis informasi lain dapat diekstraksi menggunakan fungsi modul datetime
Hasil
0
1
[2005, 1, 1]
Fungsi hari kerja mengembalikan hari dalam seminggu sebagai bilangan bulat dengan nilai dari 0 hingga 6, sedangkan dalam fungsi isoweekday dengan nilai dari 1 hingga 7. Fungsi isocalendar mengembalikan tuple yang dibentuk oleh tiga elemen. tahun, minggu, dan hari kerja. Ada banyak fungsi lain untuk digunakan di perpustakaan datetime, Anda hanya perlu memeriksa halaman web resmi
4. Mengonversi kolom string tanggalMari terapkan apa yang kita pelajari dalam kumpulan data nyata. Kami akan mengambil kumpulan data dari Kaggle, yang disebut Tanah Longsor Setelah Curah Hujan, 2007–2016. Ini berisi informasi tentang tanah longsor yang terjadi antara tahun 2007 dan 2016. Jadi, mari impor dataset menggunakan fungsi read_csv dari library pandas
Kita dapat memiliki gambaran umum tentang kumpulan data. Untuk mendapatkan ringkasan bingkai data, mari gunakan fungsi info[]
Kolom tanggal adalah string, dilambangkan sebagai "objek", dan kita perlu mengubahnya menjadi format waktu
Jadi, sekarang kita akhirnya memiliki tanggal kolom dengan format yang tepat
5. Ekstrak fitur dari tanggal kolomUntuk membuat prediksi dengan model, tanggal kolom tidak berguna dan kami lebih memilih nilai numerik. Untuk alasan ini, saya akan membuat tiga variabel baru, yang berisi hari, bulan, dan tahun
Kami juga dapat memperoleh tanggal satu minggu sebelumnya. Dimungkinkan untuk mengekstrak tanggal ini dengan membuat perbedaan antara kolom tanggal dan fungsi timedelta, di mana kami menentukan jumlah hari untuk dikurangi
Setelah kami mengekstraksi semua informasi temporal, kami dapat menghapus tanggal kolom
Selamat. Langkah pertama untuk melakukan pra-proses objek datetime akhirnya selesai
Pikiran lebih lanjutIni adalah langkah-langkah yang saya ambil untuk bekerja dengan kumpulan data yang berisi kolom tanggal. Tampaknya agak sulit pada awalnya ketika Anda tidak memiliki dasar-dasarnya. Saya harap tutorial ini akan membantu Anda untuk memahaminya dengan lebih cepat dan percaya diri dengan waktu perpustakaan. Seperti yang Anda amati, pada langkah terakhir saya tidak menggunakan fungsi parse dari modul parser, yang seharusnya lebih mudah digunakan, tetapi pada saat yang sama, itu tidak berfungsi dengan semua jenis tanggal. Jadi dalam hal ini lebih baik menerapkan fungsi strptime. Terima kasih telah membacanya. Semoga harimu menyenangkan
Referensi
[1] https. //dokumen. python. org/3/library/datetime. html
[2] https. //dateutil. readthedocs. io/en/stable/parser. html
Apakah Anda menyukai artikel saya? . Ini adalah cara tidak langsung untuk mendukung saya tanpa biaya tambahan untuk Anda. Jika Anda sudah menjadi anggota, berlangganan untuk mendapatkan email setiap kali saya menerbitkan panduan ilmu data dan python baru