Pandas: Cara menggambar grafik batang dalam hitungan bulan

Saya memiliki kerangka data df seperti di bawah ini:

Student_id   Date_of_visit(d/m/y)
1            1/4/2020
1            30/12/2019
1            26/12/2019
2            3/1/2021
2            10/1/2021
3            4/5/2020
3            22/8/2020

Bagaimana saya bisa mendapatkan grafik batang dengan x-axis sebagai bulan-tahun (misalnya: centang y: Des 2019, Jan 2020, Feb 2020) dan pada y-axis - jumlah total siswa (hitungan) yang dikunjungi pada bulan tertentu.


person NPyak    schedule 09.03.2021    source sumber


Jawaban (1)


Konversikan nilai menjadi waktu tanggal, lalu gunakan DataFrame.resample dengan Resampler.size untuk penghitungan, buat format waktu tanggal baru dengan DatetimeIndex.strftime:

df['Date_of_visit'] = pd.to_datetime(df['Date_of_visit'], dayfirst=True)

s = df.resample('M', on='Date_of_visit')['Student_id'].size()

s.index = s.index.strftime('%b %Y')

print (s)
Date_of_visit
Dec 2019    2
Jan 2020    0
Feb 2020    0
Mar 2020    0
Apr 2020    1
May 2020    1
Jun 2020    0
Jul 2020    0
Aug 2020    1
Sep 2020    0
Oct 2020    0
Nov 2020    0
Dec 2020    0
Jan 2021    2
Name: Student_id, dtype: int64

Jika perlu menghitung hanya Student_id unik gunakan Resampler.nunique:

s = df.resample('M', on='Date_of_visit')['Student_id'].nunique()

s.index = s.index.strftime('%b %Y')

print (s)
Date_of_visit
Dec 2019    1
Jan 2020    0
Feb 2020    0
Mar 2020    0
Apr 2020    1
May 2020    1
Jun 2020    0
Jul 2020    0
Aug 2020    1
Sep 2020    0
Oct 2020    0
Nov 2020    0
Dec 2020    0
Jan 2021    1
Name: Student_id, dtype: int64

Plot terakhir oleh Series.plot.bar

s.plot.bar()
person jezrael    schedule 09.03.2021