Analisis data semakin menjadi aspek penting dalam setiap industri. Banyak organisasi sangat bergantung pada maklumat untuk membuat keputusan strategik, meramalkan arah aliran dan memahami tingkah laku pengguna. Dalam persekitaran sedemikian, perpustakaan Pandas Python muncul sebagai peranti yang berkuasa, menyediakan pelbagai fungsi yang berbeza untuk berjaya memanipulasi, mengurai dan menggambarkan maklumat. Salah satu ciri berkuasa ini termasuk mengumpulkan data mengikut selang masa.
Artikel ini akan menumpukan pada cara menggunakan Panda untuk mengumpulkan data mengikut selang masa. Kami akan meneroka sintaks, algoritma yang mudah difahami, dua pendekatan berbeza dan dua kod dunia sebenar yang boleh dilaksanakan sepenuhnya berdasarkan pendekatan ini.
Kaedah yang akan kami fokuskan ialah fungsi groupby() Pandas, khususnya kaedah pensampelan semulanya. Sintaksnya adalah seperti berikut:
df.groupby(pd.Grouper(key='date', freq='T')).sum()
Dalam tatabahasa:
df − DataFrame anda.
groupby(pd.Grouper()) − Fungsi untuk mengumpulkan data.
key − Lajur yang anda mahu kumpulkan mengikut. Di sini, ia adalah lajur 'tarikh'.
freq − kekerapan selang masa. ('T' bermaksud minit, 'H' bermaksud jam, 'D' bermaksud hari, dsb.)
sum() - Fungsi pengagregatan.
Berikut ialah algoritma langkah demi langkah untuk mengumpulkan data mengikut selang masa -
Import perpustakaan yang diperlukan iaitu Panda.
Muat atau buat DataFrame anda.
Tukar lajur tarikh kepada objek datetime, jika ia belum ditukar.
Gunakan pd.Grouper untuk menggunakan fungsi groupby() pada lajur tarikh, menggunakan frekuensi yang diingini.
Gunakan fungsi agregat seperti jumlah(), min()
Cetak atau simpan hasil.
Kami akan mempertimbangkan dua pendekatan berbeza −
Dalam contoh ini, kami mencipta DataFrame yang mengandungi julat tarikh dan nilai. Kami kemudian mengumpulkan data mengikut kekerapan harian dan menjumlahkan nilai harian.
# Import pandas import pandas as pd # Create a dataframe df = pd.DataFrame({ 'date': pd.date_range(start='1/1/2022', periods=100, freq='H'), 'value': range(100) }) # Convert 'date' to datetime object, if not already df['date'] = pd.to_datetime(df['date']) # Group by daily frequency daily_df = df.groupby(pd.Grouper(key='date', freq='D')).sum() print(daily_df)
value date 2022-01-01 276 2022-01-02 852 2022-01-03 1428 2022-01-04 2004 2022-01-05 390
Memperkenalkan perpustakaan Pandas adalah keperluan mutlak untuk sebarang kerja manipulasi data dan merupakan perkara utama yang akan kami lakukan dalam kod ini. Menggunakan strategi pd.DataFrame() ialah peringkat seterusnya semasa pembinaan DataFrame. Bahagian "Tarikh" dan "Nilai" membentuk bingkai data ini. Fungsi pd.date_range() digunakan untuk mencipta julat cap waktu setiap jam dalam lajur "Tarikh", manakala bahagian "Nilai" hanya mengandungi julat integer. Lajur "Tarikh" adalah hasil interaksi ini.
Walaupun lajur Date kami pada masa ini mengendalikan objek datetime secara berbeza, kami secara beransur-ansur menggunakan fungsi pd.to_datetime() untuk memastikan ia ditukar. Langkah ini adalah kritikal kerana kemajuan aktiviti pengumpulan bergantung pada sama ada segmen mempunyai jenis maklumat objek datetime.
Selepas ini, untuk mengumpulkan data mengikut kekerapan harian ('D'), kami menggunakan fungsi groupby() digabungkan dengan fungsi pd.Grouper(). Selepas mengumpulkan, kami menggunakan fungsi sum() untuk menggabungkan semua elemen 'nilai' kepunyaan hari yang sama menjadi satu jumlah.
Akhirnya, DataFrame yang dikumpulkan ditulis, menunjukkan jumlah nilai setiap hari.
# Import pandas import pandas as pd # Create a dataframe df = pd.DataFrame({ 'date': pd.date_range(start='1/1/2022', periods=100, freq='T'), 'value': range(100) }) # Convert 'date' to datetime object, if not already df['date'] = pd.to_datetime(df['date']) # Group by 15-minute frequency custom_df = df.groupby(pd.Grouper(key='date', freq='15T')).sum() print(custom_df)
value date 2022-01-01 00:00:00 105 2022-01-01 00:15:00 330 2022-01-01 00:30:00 555 2022-01-01 00:45:00 780 2022-01-01 01:00:00 1005 2022-01-01 01:15:00 1230 2022-01-01 01:30:00 945
Teknik seterusnya bermula dengan import pustaka Pandas serupa dengan yang pertama, dan kemudian mencipta DataFrame. DataFrame ini adalah sama seperti yang digunakan dalam model sebelumnya, satu-satunya perbezaan ialah lajur 'tarikh' kini mengandungi cap waktu dalam beberapa minit.
Lajur 'date' hendaklah menjadi objek datetime agar aktiviti pengumpulan berfungsi dengan betul dan fungsi pd.to_datetime() memastikan perkara ini berlaku.
Dalam bahagian ini, kami menggunakan fungsi pd.Grouper() di dalam kaedah groupby() untuk melaksanakan operasi pengumpulan menggunakan frekuensi khusus selama 15 minit ("15T"). Untuk mengagregatkan entri "nilai" bagi setiap selang 15 minit, kami menggunakan fungsi sum(), iaitu kaedah yang sama digunakan dalam pendekatan pertama.
Lengkapkan kod dengan memaparkan DataFrame terkumpul baharu yang menunjukkan jumlah lajur 'nilai' untuk setiap selang 15 minit.
Ciri hebat Pandas termasuk pelbagai operasi data, salah satunya ialah mengumpulkan data mengikut selang masa. Dengan menggunakan fungsi groupby() dalam kombinasi dengan pd.Grouper, kami boleh membahagikan data secara berkesan berdasarkan kekerapan harian atau kekerapan tersuai, dengan itu mencapai analisis data yang cekap dan fleksibel.
Keupayaan untuk mengumpulkan data mengikut selang masa membolehkan penganalisis dan perniagaan mengeluarkan cerapan bermakna daripada data. Sama ada mengira jumlah jualan sehari, mendapatkan purata suhu setiap jam atau mengira bilangan tapak tapak web setiap 15 minit, mengumpulkan data mengikut selang masa membolehkan kami memahami arah aliran, corak dan aliran dalam data dari semasa ke semasa .
Ingat, perpustakaan Pandas Python ialah alat analisis data yang berkuasa. Mempelajari cara menggunakan cirinya, seperti kaedah kumpulan mengikut, boleh membantu anda menjadi penganalisis data atau saintis data yang lebih cekap dan mahir.
Atas ialah kandungan terperinci Bagaimana untuk mengumpulkan data mengikut selang masa dalam Python Pandas?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!