Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengumpulkan data mengikut selang masa dalam Python Pandas?

Bagaimana untuk mengumpulkan data mengikut selang masa dalam Python Pandas?

PHPz
PHPzke hadapan
2023-08-29 14:13:02896semak imbas

如何在Python Pandas中按时间间隔分组数据?

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.

Tatabahasa

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.

Algoritma

Berikut ialah algoritma langkah demi langkah untuk mengumpulkan data mengikut selang masa -

  • Import perpustakaan yang diperlukan iaitu Panda.

  • Muat atau buat DataFrame anda.

  • 25edfb22a4f469ecb59f1190150159c6e388a4556c0f65e1904146cc1a846beeTukar lajur tarikh kepada objek datetime, jika ia belum ditukar. 94b3e26ee717c64999d7867364b1b4a3bed06894275b65c1ab86501b08a632eb
  • Gunakan pd.Grouper untuk menggunakan fungsi groupby() pada lajur tarikh, menggunakan frekuensi yang diingini.

  • Gunakan fungsi agregat seperti jumlah(), min()

  • Cetak atau simpan hasil.

Kaedah

Kami akan mempertimbangkan dua pendekatan berbeza −

Kaedah 1: Kumpul mengikut kekerapan harian

Dalam contoh ini, kami mencipta DataFrame yang mengandungi julat tarikh dan nilai. Kami kemudian mengumpulkan data mengikut kekerapan harian dan menjumlahkan nilai harian.

Contoh

# 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)

Output

            value
date             
2022-01-01    276
2022-01-02    852
2022-01-03   1428
2022-01-04   2004
2022-01-05    390

Arahan

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.

Kaedah 2: Himpunkan mengikut kekerapan tersuai, seperti selang 15 minit

Contoh

# 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)

Output

                     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

Arahan

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.

Kesimpulan

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!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam