Pandas & NumPy Academy · บทเรียน

ตารางการรักษาผู้ใช้ตามกลุ่มรุ่น

สร้างเมทริกซ์การรักษาผู้ใช้ตามกลุ่มรุ่นที่แสดงเปอร์เซ็นต์ของผู้ใช้ในสัปดาห์ที่ 0 ซึ่งยังคงใช้งานในสัปดาห์ถัดไปด้วย pivot_table

บทเรียน 3 จาก 413 ขั้นตอน

ตารางการรักษาผู้ใช้ตามกลุ่มรุ่น เป็นบทเรียน Pandas & NumPy Academy ฟรีบน CoddyKit นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Pandas & NumPy Academy และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

ตารางการรักษาผู้ใช้ตามกลุ่มรุ่นคืออะไร

ตารางการรักษาผู้ใช้ตามกลุ่มรุ่น จัดกลุ่มผู้ใช้ตามสัปดาห์ (หรือเดือน) ที่ผู้ใช้เริ่มใช้ผลิตภัณฑ์เป็นครั้งแรก จากนั้นติดตามว่าในแต่ละกลุ่มรุ่นยังมีผู้ใช้ที่ใช้งานอยู่ในสัปดาห์ถัด ๆ ไปกี่เปอร์เซ็นต์ แถวที่ 0 จะแสดงค่า 100 % เสมอ เพราะสัปดาห์ที่ 0 หมายถึงสัปดาห์ที่สมัครใช้งาน ค่าในคอลัมน์ถัดไปแสดงให้เห็นว่าผลิตภัณฑ์สูญเสียผู้ใช้ไปเร็วเพียงใด ยิ่งค่าลดลงช้า การรักษาผู้ใช้ก็ยิ่งดี

import pandas as pd

df = pd.read_csv('user_events.csv', parse_dates=['event_date'])
print(df.dtypes)
print(df.head())

กำหนดสัปดาห์ของกลุ่มรุ่นให้ผู้ใช้แต่ละคน

สัปดาห์ของกลุ่มรุ่นคือ สัปดาห์ที่เกิดเหตุการณ์แรกของผู้ใช้แต่ละคน ใช้ groupby('user_id')['event_date'].min() เพื่อค้นหาวันที่เกิดเหตุการณ์แรกของผู้ใช้แต่ละคน จากนั้นแปลงเป็นสัปดาห์ ISO ด้วย .dt.to_period('W') รวมป้ายกำกับกลุ่มรุ่นนี้กลับเข้าไปใน DataFrame เหตุการณ์หลัก เพื่อให้ทุกแถวทราบว่าผู้ใช้ของแถวนั้นอยู่ในกลุ่มรุ่นสัปดาห์ใด

cohort_week = df.groupby('user_id')['event_date'].min().dt.to_period('W').rename('cohort_week')
df = df.join(cohort_week, on='user_id')

df['event_week'] = df['event_date'].dt.to_period('W')

print(df[['user_id', 'event_date', 'cohort_week', 'event_week']].head())

คำนวณหมายเลขสัปดาห์นับจากกลุ่มรุ่น

หมายเลขสัปดาห์ (เรียกอีกอย่างว่าหมายเลขช่วงเวลาหรืออายุ) คือผลต่างระหว่างสัปดาห์ที่เกิดเหตุการณ์กับสัปดาห์ของกลุ่มรุ่น การลบค่า Period ของ Pandas จะคืนค่าเป็นออฟเซ็ตจำนวนเต็ม สัปดาห์ที่ 0 หมายถึงผู้ใช้ใช้งานอยู่ในสัปดาห์ที่สมัคร ส่วนสัปดาห์ที่ 4 หมายถึงผู้ใช้กลับมาใช้งานอีกครั้งหลังจากนั้น 4 สัปดาห์ คอลัมน์ออฟเซ็ตนี้จะกลายเป็นแกนคอลัมน์ของเมทริกซ์การรักษาผู้ใช้

df['week_number'] = (df['event_week'] - df['cohort_week']).apply(lambda x: x.n)

print(df[['user_id', 'cohort_week', 'event_week', 'week_number']].head(10))

นับจำนวนผู้ใช้ที่ใช้งานอยู่ในแต่ละคู่กลุ่มรุ่นและสัปดาห์

จัดกลุ่มตามทั้ง cohort_week และ week_number แล้วนับจำนวนผู้ใช้ที่ไม่ซ้ำกัน เพื่อสร้างเมทริกซ์จำนวนการรักษาผู้ใช้ดิบ แต่ละเซลล์บอกว่ามีผู้ใช้จากกลุ่มรุ่น C กี่คนที่ใช้งานอยู่ในสัปดาห์ N เส้นทแยงมุมจากซ้ายบนไปขวาล่าง (สัปดาห์ที่ 0 ของแต่ละกลุ่มรุ่น) แสดงขนาดของกลุ่มรุ่น ซึ่งใช้เป็นตัวหารในการคำนวณเปอร์เซ็นต์

retention_counts = (
    df.groupby(['cohort_week', 'week_number'])['user_id']
    .nunique()
    .reset_index(name='active_users')
)

print(retention_counts.head(10))

แปลงข้อมูลเป็นเมทริกซ์การรักษาผู้ใช้

ใช้ pivot_table() เพื่อแปลงจำนวนการรักษาผู้ใช้ในรูปแบบยาวให้เป็นเมทริกซ์แบบกว้าง โดยแถวคือสัปดาห์ของกลุ่มรุ่น และคอลัมน์คือหมายเลขสัปดาห์ aggfunc='sum' จะจัดการกรณีที่คีย์จากการจัดกลุ่มซ้ำกัน เติมค่า 0 ให้เซลล์ของสัปดาห์ที่ไม่มีผู้ใช้จากกลุ่มรุ่นนั้นใช้งานอยู่ เมทริกซ์นี้เป็นแกนหลักของการวิเคราะห์การรักษาผู้ใช้

retention_matrix = retention_counts.pivot_table(
    index='cohort_week',
    columns='week_number',
    values='active_users',
    aggfunc='sum'
).fillna(0)

print(retention_matrix.iloc[:5, :8])

คำนวณเปอร์เซ็นต์การรักษาผู้ใช้

หารแต่ละแถวด้วยค่าของสัปดาห์ที่ 0 เพื่อแปลงจำนวนเป็นเปอร์เซ็นต์ คอลัมน์สัปดาห์ที่ 0 คือขนาดของกลุ่มรุ่น ซึ่งเก็บไว้ใน retention_matrix[0] ใช้ divide(cohort_sizes, axis=0) แล้วคูณด้วย 100 ปัดเศษให้เหลือทศนิยมหนึ่งตำแหน่งเพื่อให้อ่านง่าย ผลลัพธ์คือแผนที่ความร้อนการรักษาผู้ใช้มาตรฐานที่มักใช้ในรายงานการวิเคราะห์ผลิตภัณฑ์

cohort_sizes = retention_matrix[0]
retention_pct = retention_matrix.divide(cohort_sizes, axis=0) * 100
retention_pct = retention_pct.round(1)

print(retention_pct.iloc[:5, :8])

ตีความเส้นโค้งการรักษาผู้ใช้

อ่านตารางการรักษาผู้ใช้ในแนวทแยง โดยแต่ละแถวจะลดลงตามเวลา ผลิตภัณฑ์ที่มีการรักษาผู้ใช้ที่ดีจะแสดงค่าในลักษณะ 100, 60, 50, 45, 42 ซึ่งลดลงอย่างรวดเร็วในช่วงแรกแล้วคงที่เป็นระยะราบ ผลิตภัณฑ์ที่รักษาผู้ใช้ได้ไม่ดีจะแสดงค่า 100, 30, 15, 8, 4 ซึ่งลดลงต่อเนื่องโดยไม่มีระยะราบ ระดับของระยะราบ (ถ้ามี) เรียกว่า อัตราการรักษาผู้ใช้ระยะยาว และเป็น KPI ด้านการรักษาผู้ใช้ที่สำคัญที่สุด

# Average retention rate per week number across all cohorts
avg_retention = retention_pct.mean(axis=0)
print('Average retention by week:')
print(avg_retention.round(1))

ระบุกลุ่มรุ่นที่ดีที่สุดและแย่ที่สุด

เปรียบเทียบประสิทธิภาพของกลุ่มรุ่นโดยดูการรักษาผู้ใช้ในสัปดาห์ที่ 4 หรือสัปดาห์ที่ 8 ระหว่างกลุ่มรุ่นต่าง ๆ กลุ่มรุ่นที่มีการรักษาผู้ใช้ในสัปดาห์ที่ 4 สูงที่สุดอาจได้รับประโยชน์จากการปรับปรุงผลิตภัณฑ์หรือช่องทางการได้มาซึ่งผู้ใช้ที่มีประสิทธิภาพ ส่วนกลุ่มรุ่นที่แย่ที่สุดอาจได้มาจากช่องทางคุณภาพต่ำ ใช้ .loc[:, 4].sort_values(ascending=False) เพื่อจัดอันดับกลุ่มรุ่นตามการรักษาผู้ใช้ในสัปดาห์ที่ 4

if 4 in retention_pct.columns:
    week4 = retention_pct[4].sort_values(ascending=False)
    print('Cohorts ranked by week-4 retention:')
    print(week4)

แสดงการรักษาผู้ใช้เป็นแผนที่ความร้อน

แผนที่ความร้อนที่ใช้สีแยกตามค่าคือรูปแบบการแสดงผลมาตรฐานสำหรับตารางการรักษาผู้ใช้ ใช้ sns.heatmap() ร่วมกับ annot=True เพื่อแสดงค่าเปอร์เซ็นต์ภายในแต่ละเซลล์ และใช้ชุดสีแบบไล่สองทิศทาง (การรักษาผู้ใช้ต่ำ = สีแดง, สูง = สีเขียว) กำหนด vmin=0 และ vmax=100 เพื่อให้สามารถเปรียบเทียบสีระหว่างมาตราส่วนการรักษาผู้ใช้ต่าง ๆ ได้

import seaborn as sns
import matplotlib.pyplot as plt

fig, ax = plt.subplots(figsize=(14, 6))
sns.heatmap(retention_pct.iloc[:, :13],
            annot=True, fmt='.0f',
            cmap='RdYlGn', vmin=0, vmax=100,
            ax=ax, linewidths=0.5)
ax.set_title('Weekly Cohort Retention (%)')
ax.set_xlabel('Week Number')
ax.set_ylabel('Cohort Week')
plt.tight_layout()
plt.show()

พล็อตเส้นโค้งการรักษาผู้ใช้

แผนภูมิเส้นของค่าเฉลี่ยการรักษาผู้ใช้ในแต่ละสัปดาห์สื่อสารเส้นโค้งการลดลงโดยรวมได้ชัดเจนกว่าแผนที่ความร้อนเมื่อนำเสนอแก่ผู้มีส่วนได้ส่วนเสียที่ไม่ใช่สายเทคนิค พล็อตเส้นโค้งค่าเฉลี่ยการรักษาผู้ใช้ พร้อมแถบแรเงาที่แสดงค่าเบี่ยงเบนมาตรฐานบวกหรือลบหนึ่งค่า เพื่อสื่อให้เห็นความแปรผันระหว่างกลุ่มรุ่น ระยะราบ ซึ่งเป็นช่วงที่เส้นเริ่มแบนลง คือระดับพื้นฐานการรักษาผู้ใช้ตามธรรมชาติของผลิตภัณฑ์

avg_ret = retention_pct.mean(axis=0)
std_ret = retention_pct.std(axis=0)

fig, ax = plt.subplots(figsize=(10, 5))
ax.plot(avg_ret.index, avg_ret.values, color='steelblue', linewidth=2, marker='o')
ax.fill_between(avg_ret.index, avg_ret - std_ret, avg_ret + std_ret, alpha=0.2)
ax.set_xlabel('Week Number')
ax.set_ylabel('Retention %')
ax.set_title('Average Cohort Retention Curve')
plt.tight_layout()
plt.show()

ส่งออกตารางการรักษาผู้ใช้

ส่งออกตารางการรักษาผู้ใช้เป็นไฟล์ Excel เพื่อให้ผู้จัดการผลิตภัณฑ์นำไปแบ่งปันในการทบทวนรายสัปดาห์ ใช้ to_excel() แล้วใช้การจัดรูปแบบตามเงื่อนไขใน Excel ด้วยตนเอง หรือใช้ Styler.background_gradient() ใน Pandas เพื่อเพิ่มสีลงในไฟล์ที่ส่งออกโดยตรง ตารางการรักษาผู้ใช้เป็นหนึ่งในผลลัพธ์ที่ผู้ใช้งานการวิเคราะห์ผลิตภัณฑ์ขอมากที่สุด

styled = retention_pct.style.background_gradient(cmap='RdYlGn', vmin=0, vmax=100)
styled.to_excel('retention_table.xlsx', engine='openpyxl')
print('Retention table saved to retention_table.xlsx')

ตรวจสอบความเข้าใจอย่างรวดเร็ว

ทดสอบความเข้าใจแนวคิดการวิเคราะห์ข้อมูลจากบทเรียนนี้

สรุปบทเรียน

ในบทเรียนนี้ คุณได้เรียนรู้เกี่ยวกับ การกำหนดผู้ใช้ให้กับสัปดาห์ของกลุ่มรุ่นและการคำนวณออฟเซ็ตของสัปดาห์ การแปลงข้อมูลเป็นเมทริกซ์การรักษาผู้ใช้และแปลงจำนวนเป็นเปอร์เซ็นต์ และ การแสดงการรักษาผู้ใช้ตามกลุ่มรุ่นเป็นแผนที่ความร้อนและเส้นโค้งค่าเฉลี่ยการรักษาผู้ใช้ บทถัดไป เราจะสำรวจการแสดงเส้นทางการใช้งานของผู้ใช้ผ่านแผนภูมิแท่งของกระบวนการและแผนที่ความร้อน

เริ่มต้นได้ฟรี

เรียนรู้ Python ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
30
บทเรียน
120

คำถามที่พบบ่อย

บทเรียน “ตารางการรักษาผู้ใช้ตามกลุ่มรุ่น” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “ตารางการรักษาผู้ใช้ตามกลุ่มรุ่น” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Pandas & NumPy Academy ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Pandas & NumPy Academy มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “ตารางการรักษาผู้ใช้ตามกลุ่มรุ่น”

สร้างเมทริกซ์การรักษาผู้ใช้ตามกลุ่มรุ่นที่แสดงเปอร์เซ็นต์ของผู้ใช้ในสัปดาห์ที่ 0 ซึ่งยังคงใช้งานในสัปดาห์ถัดไปด้วย pivot_table คุณปฏิบัติ Pandas & NumPy Academy ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Pandas & NumPy Academy หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Pandas & NumPy Academy บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 3 จากทั้งหมด 4 บทเรียน

บทเรียน “ตารางการรักษาผู้ใช้ตามกลุ่มรุ่น” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Pandas & NumPy Academy นี้ได้ไหม

ได้ บทเรียน Pandas & NumPy Academy ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. การแบ่งเซสชันและการจัดลำดับเหตุการณ์
  2. การวิเคราะห์กรวย
  3. ตารางการรักษาผู้ใช้ตามกลุ่มรุ่น
  4. การแสดงเส้นทางผู้ใช้
← กลับไปที่ Pandas & NumPy Academy