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

การวิเคราะห์ GroupBy ตามภูมิภาคและหมวดหมู่

รวมรายได้ทั้งหมดและจำนวนคำสั่งซื้อตามภูมิภาคและหมวดหมู่สินค้า พร้อมระบุ SKU 5 อันดับแรกตามกำไรส่วนต่าง

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

การตั้งค่าการวิเคราะห์ GroupBy

หลังจากคำนวณคอลัมน์ revenue แล้ว ขั้นตอนถัดไปที่เหมาะสมคือการรวมค่าตามมิติทางธุรกิจ เช่น region และ category การเรียก groupby() ของ Pandas จะแบ่ง DataFrame ออกเป็นกลุ่ม จากนั้นคุณใช้ฟังก์ชันรวมค่า และ Pandas จะรวมผลลัพธ์เป็นตารางสรุป รูปแบบแบ่งกลุ่ม-ประมวลผล-รวมผลลัพธ์นี้ช่วยแทนที่คำสั่ง SQL GROUP BY ที่ซ้อนกัน

import pandas as pd

df = pd.read_parquet('sales_features.parquet')

# Total revenue by region
region_rev = df.groupby('region')['revenue'].sum().sort_values(ascending=False)
print(region_rev)

การจัดกลุ่มตามหมวดหมู่

รวมรายได้ตาม หมวดหมู่สินค้า เพื่อระบุว่าหมวดหมู่ใดสร้างยอดขายได้มากที่สุด ใช้ .agg() เพื่อคำนวณสถิติหลายรายการพร้อมกัน ได้แก่ รายได้รวม จำนวนคำสั่งซื้อ และมูลค่าคำสั่งซื้อเฉลี่ย โดยประมวลผลข้อมูลเพียงรอบเดียวแทนการเรียก groupby สามครั้งแยกกัน

cat_summary = df.groupby('category')['revenue'].agg(
    total_revenue='sum',
    order_count='count',
    avg_order_value='mean'
).sort_values('total_revenue', ascending=False)

print(cat_summary)

การจัดกลุ่มด้วยคีย์สองตัว: ภูมิภาคและหมวดหมู่

ส่งรายการคอลัมน์ให้กับ groupby() เพื่อสร้างสรุปสองระดับ ผลลัพธ์จะมี MultiIndex โดยระดับนอกคือภูมิภาค และระดับในคือหมวดหมู่ ใช้ .reset_index() เพื่อทำให้เป็น DataFrame ธรรมดาที่เหมาะสำหรับการกรองเพิ่มเติมหรือส่งออกเป็นรายงาน

region_cat = df.groupby(['region', 'category'])['revenue'].sum().reset_index()
region_cat.columns = ['region', 'category', 'total_revenue']
region_cat = region_cat.sort_values(['region', 'total_revenue'], ascending=[True, False])
print(region_cat.head(10))

การคำนวณเปอร์เซ็นต์สัดส่วนรายได้

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

df['total_revenue_all'] = df['revenue'].sum()
cat_share = df.groupby('category')['revenue'].sum() / df['revenue'].sum() * 100
cat_share = cat_share.sort_values(ascending=False).round(2)
print(cat_share.rename('revenue_share_%'))

การค้นหา SKU 5 อันดับแรกตามรายได้

ระบุสินค้า 5 อันดับแรกตามรายได้รวมด้วย groupby('product')['revenue'].sum().nlargest(5) เมธอด nlargest() กระชับกว่าการเรียงลำดับแล้วตัดบางส่วน การทราบ SKU อันดับต้น ๆ ช่วยชี้นำการตัดสินใจด้านสินค้าคงคลัง และช่วยให้มุ่งเน้นการส่งเสริมการขายไปยังจุดที่ส่งผลต่อรายได้สูงสุด

top5_sku = df.groupby('product')['revenue'].sum().nlargest(5)
print('Top 5 Products by Revenue:')
print(top5_sku)

จำนวนคำสั่งซื้อเทียบกับรายได้ตามภูมิภาค

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

region_profile = df.groupby('region').agg(
    order_count=('order_id', 'count'),
    total_revenue=('revenue', 'sum'),
    avg_order=('revenue', 'mean')
).round(2)

print(region_profile.sort_values('total_revenue', ascending=False))

เปอร์เซ็นต์รายได้ของแต่ละภูมิภาค

คำนวณสัดส่วนรายได้รวมที่แต่ละภูมิภาคสร้างขึ้น ใช้ groupby().sum() แล้วหารด้วยผลรวมทั้งหมดแบบสเกลาร์ วิธีนี้ช่วยให้ตอบคำถามระดับผู้บริหาร เช่น "รายได้ของเรากี่เปอร์เซ็นต์มาจากภูมิภาค North" ได้ง่ายด้วยนิพจน์ DataFrame เพียงรายการเดียว

region_rev = df.groupby('region')['revenue'].sum()
region_share = (region_rev / region_rev.sum() * 100).round(2)
region_share.name = 'revenue_share_%'
print(region_share.sort_values(ascending=False))

การกรองกลุ่มตามเกณฑ์รายได้

ใช้ groupby().filter() เพื่อเก็บเฉพาะแถวที่อยู่ในหมวดหมู่ซึ่งมีรายได้รวมเกินเกณฑ์ วิธีนี้มีประโยชน์เมื่อต้องการนำหมวดหมู่เฉพาะกลุ่มออกจากการแสดงข้อมูลหรือแบบจำลอง เพื่อมุ่งเน้นกลุ่มที่มีนัยสำคัญ ฟังก์ชัน filter จะรับ DataFrame ของกลุ่มและคืนค่าบูลีน

THRESHOLD = 10000

df_major = df.groupby('category').filter(
    lambda g: g['revenue'].sum() >= THRESHOLD
)

print('Major categories:', df_major['category'].nunique())

รายได้รายเดือนของแต่ละหมวดหมู่

รวมคีย์ groupby สองตัว ได้แก่ เดือนและหมวดหมู่ เพื่อติดตามการเปลี่ยนแปลงของรายได้แต่ละหมวดหมู่ตามเวลา จัดรูปผลลัพธ์ด้วย unstack('category') เพื่อสร้างเมทริกซ์ที่แถวเป็นเดือนและคอลัมน์เป็นหมวดหมู่ ทำให้สังเกตรูปแบบตามฤดูกาลของแต่ละหมวดหมู่ได้ง่าย

monthly_cat = df.groupby(['month', 'category'])['revenue'].sum().unstack('category').fillna(0)
print(monthly_cat.round(0))

SKU อันดับหนึ่งของแต่ละภูมิภาค

ระบุสินค้าที่ขายดีที่สุดเพียงรายการเดียวในแต่ละภูมิภาคด้วยการเชื่อม groupby กับ idxmax() จัดกลุ่มตามภูมิภาคและสินค้าเพื่อหารายได้รวมของแต่ละคู่ จากนั้นเลือกดัชนีสินค้าที่มีรายได้สูงสุดสำหรับแต่ละภูมิภาค รูปแบบนี้เผยให้เห็นว่าภูมิภาคต่าง ๆ ชื่นชอบสินค้าต่างกันหรือไม่

rev_by_region_sku = df.groupby(['region', 'product'])['revenue'].sum()
top_sku_per_region = rev_by_region_sku.groupby('region').idxmax()
print(top_sku_per_region)

การส่งออกตารางสรุป

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

from datetime import date

filename = f'sales_summary_{date.today()}.xlsx'

with pd.ExcelWriter(filename, engine='openpyxl') as writer:
    region_profile.to_excel(writer, sheet_name='By Region')
    cat_summary.to_excel(writer, sheet_name='By Category')

print('Saved:', filename)

ตรวจสอบความเข้าใจ

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

สรุปบทเรียน

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

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

บทเรียน “การวิเคราะห์ GroupBy ตามภูมิภาคและหมวดหมู่” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การวิเคราะห์ GroupBy ตามภูมิภาคและหมวดหมู่”

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

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

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

บทเรียน “การวิเคราะห์ GroupBy ตามภูมิภาคและหมวดหมู่” ใช้เวลานานแค่ไหน

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

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

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

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

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