การวิเคราะห์ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การโหลดและตรวจสอบชุดข้อมูลการขาย
- การคำนวณรายได้และการสร้างคุณลักษณะ
- การวิเคราะห์ GroupBy ตามภูมิภาคและหมวดหมู่
- การแสดงแนวโน้มรายเดือน