นุ่น: วิธีการวาดกราฟแท่งเดือนเกินจำนวน

ฉันมี dataframe df ดังต่อไปนี้:

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

ฉันจะรับกราฟแท่งด้วย x-axis เป็นเดือน-ปี (เช่น: y-ticks: ธ.ค. 2019, ม.ค. 2020, ก.พ. 2020) และในวันที่ y-axis - จำนวนนักเรียนทั้งหมด (นับ) ที่เข้าเยี่ยมชมในเดือนใดเดือนหนึ่ง


person NPyak    schedule 09.03.2021    source แหล่งที่มา


คำตอบ (1)


แปลงค่าเป็นวันที่และเวลา จากนั้นใช้ DataFrame.resample ด้วย Resampler.size สำหรับการนับ ให้สร้างรูปแบบใหม่ของวันที่และเวลาโดย 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

หากต้องการนับเฉพาะ Student_id ที่ไม่ซ้ำกัน ให้ใช้ 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

โครงเรื่องล่าสุดโดย Series.plot.bar

s.plot.bar()
person jezrael    schedule 09.03.2021