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

การคำนวณรายได้และการสร้างคุณลักษณะ

คำนวณรายได้ต่อรายการ สร้างคอลัมน์เดือนและไตรมาส และเพิ่มตัวบ่งชี้ส่วนลดสำหรับคำสั่งซื้อที่เกินเกณฑ์

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

การคำนวณรายได้ต่อรายการ

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

import pandas as pd

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

df['revenue'] = df['quantity'] * df['unit_price']
print(df[['quantity', 'unit_price', 'revenue']].head())

การแยกคอลัมน์เดือนและไตรมาส

การจัดกลุ่มตามช่วงเวลาบนปฏิทินเป็นสิ่งสำคัญต่อการวิเคราะห์แนวโน้ม ใช้ตัวเข้าถึง .dt กับคอลัมน์วันเวลาเพื่อแยกปี เดือน และไตรมาส การจัดเก็บค่าเหล่านี้เป็นคอลัมน์จำนวนเต็มแยกกันช่วยให้การดำเนินการ groupby เร็วขึ้น และทำให้กรองตามช่วงเวลาได้ง่ายโดยไม่ต้องแยกข้อความซ้ำ

df['year'] = df['order_date'].dt.year
df['month'] = df['order_date'].dt.month
df['quarter'] = df['order_date'].dt.quarter
df['year_month'] = df['order_date'].dt.to_period('M')

print(df[['order_date', 'year', 'month', 'quarter', 'year_month']].head())

การสร้างตัวบ่งชี้ส่วนลด

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

import numpy as np

DISCOUNT_THRESHOLD = 500

df['is_discounted'] = np.where(df['revenue'] >= DISCOUNT_THRESHOLD, 1, 0)

print(df['is_discounted'].value_counts())
print(df.groupby('is_discounted')['revenue'].mean())

การคำนวณคอลัมน์อัตรากำไร

หากชุดข้อมูลมีคอลัมน์ cost_price คุณสามารถคำนวณอัตรากำไรได้ด้วย (unit_price - cost_price) / unit_price ใช้ clip(lower=0) เพื่อจำกัดค่าอัตรากำไรติดลบที่เกิดจากข้อผิดพลาดของข้อมูล ก่อนการวิเคราะห์ต่อไป คอลัมน์อัตรากำไรช่วยให้รวมค่าด้วย groupby โดยเน้นกำไรควบคู่ไปกับรายได้ได้

df['margin'] = ((df['unit_price'] - df['cost_price']) / df['unit_price']).clip(lower=0)

print(df[['unit_price', 'cost_price', 'margin']].describe())

คุณลักษณะจำนวนวันนับจากคำสั่งซื้อแรก

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

first_order = df.groupby('customer_id')['order_date'].transform('min')
df['days_since_first_order'] = (df['order_date'] - first_order).dt.days

print(df[['customer_id', 'order_date', 'days_since_first_order']].head())

การแบ่งขนาดคำสั่งซื้อด้วย pd.cut

แบ่งคอลัมน์ revenue ออกเป็นช่วงขนาดที่มีป้ายกำกับด้วย pd.cut() เพื่อสร้างคุณลักษณะเชิงลำดับสำหรับการแบ่งกลุ่ม ระบุ bins และ labels อย่างชัดเจนให้สอดคล้องกับนิยามทางธุรกิจของคำสั่งซื้อขนาดเล็ก กลาง และใหญ่ คอลัมน์ที่ได้จะเป็น Categorical ของ Pandas ซึ่งจัดกลุ่มได้อย่างมีประสิทธิภาพ

bins = [0, 100, 500, 2000, float('inf')]
labels = ['Small', 'Medium', 'Large', 'Enterprise']

df['order_size'] = pd.cut(df['revenue'], bins=bins, labels=labels)
print(df['order_size'].value_counts())

รายได้สะสมตามเวลา

เรียง DataFrame ตาม order_date แล้วใช้ cumsum() กับคอลัมน์รายได้ เพื่อติดตามการสะสมของรายได้รวมตลอดทั้งปี อนุกรมสะสมนี้ช่วยให้สังเกตได้ง่ายว่ารายได้เติบโตเป็นเส้นตรง เร่งตัวขึ้น หรือเริ่มทรงตัว และเป็นพื้นฐานสำหรับแผนภูมิน้ำตกหรือแผนภูมิเส้นสะสม

df_sorted = df.sort_values('order_date')
df_sorted['cumulative_revenue'] = df_sorted['revenue'].cumsum()

print(df_sorted[['order_date', 'revenue', 'cumulative_revenue']].tail())

คุณลักษณะวันหยุดสุดสัปดาห์เทียบกับวันทำงาน

คุณสมบัติ dt.day_of_week คืนค่า 0 (วันจันทร์) ถึง 6 (วันอาทิตย์) ให้ระบุคำสั่งซื้อในวันเสาร์ (5) และวันอาทิตย์ (6) เป็นคำสั่งซื้อช่วงสุดสัปดาห์ เพื่อทดสอบว่าพฤติกรรมการซื้อช่วงสุดสัปดาห์แตกต่างจากวันทำงานหรือไม่ นี่เป็นคุณลักษณะที่ใช้กันทั่วไปในการวิเคราะห์ข้อมูลเชิงสำรวจและการวิเคราะห์การทดสอบ A/B ในธุรกิจค้าปลีก

df['is_weekend'] = df['order_date'].dt.day_of_week >= 5

print(df.groupby('is_weekend')['revenue'].agg(['mean', 'count']))

จัดอันดับลูกค้าตามรายได้

ระบุลูกค้ารายสำคัญโดยคำนวณรายได้รวมต่อ customer_id ด้วย groupby().sum() แล้วจัดอันดับด้วย .rank(ascending=False, method='dense') การเพิ่มอันดับกลับเข้าไปใน DataFrame หลักด้วย map() ทำให้คุณกรองลูกค้า N อันดับแรกได้ด้วยเงื่อนไขบูลีนเพียงเงื่อนไขเดียว

customer_revenue = df.groupby('customer_id')['revenue'].sum()
customer_rank = customer_revenue.rank(ascending=False, method='dense').astype(int)

df['customer_revenue_rank'] = df['customer_id'].map(customer_rank)
print(df[df['customer_revenue_rank'] <= 10][['customer_id', 'customer_revenue_rank']].drop_duplicates())

ปรับมาตรฐานรายได้ด้วย Z-Score

ปรับมาตรฐานคอลัมน์รายได้เป็น Z-score เพื่อให้เปรียบเทียบขนาดคำสั่งซื้อระหว่างหมวดหมู่สินค้าที่มีช่วงราคาต่างกันมากได้ ใช้ (df['revenue'] - df['revenue'].mean()) / df['revenue'].std() ค่า Z-score ที่มากกว่า 3 หรือน้อยกว่า -3 เป็นค่าผิดปกติทางสถิติที่ควรตรวจสอบก่อนสร้างแบบจำลอง

mean_rev = df['revenue'].mean()
std_rev = df['revenue'].std()

df['revenue_zscore'] = (df['revenue'] - mean_rev) / std_rev

outliers = df[df['revenue_zscore'].abs() > 3]
print(f'Outlier orders: {len(outliers)}')

การบันทึก DataFrame ที่เพิ่มคุณลักษณะแล้ว

หลังจากเพิ่มคอลัมน์ที่คำนวณแล้ว ให้บันทึก DataFrame ที่มีข้อมูลครบถ้วนขึ้น เพื่อให้สมุดบันทึกขั้นตอนถัดไปทุกเล่มเริ่มจากสถานะเดียวกัน ใช้ to_parquet() เพื่อรักษาชนิดข้อมูล โดยเฉพาะคอลัมน์ Categorical order_size และคอลัมน์วันเวลา order_date ให้บันทึกคอลัมน์ใหม่ไว้ในบล็อกความคิดเห็นสั้น ๆ ด้านบนของสคริปต์

# New columns added:
# revenue, year, month, quarter, year_month
# is_discounted, order_size, is_weekend
# days_since_first_order, customer_revenue_rank, revenue_zscore

df.to_parquet('sales_features.parquet', index=False)
print('Feature DataFrame saved:', df.shape)

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

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

สรุปบทเรียน

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

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

บทเรียน “การคำนวณรายได้และการสร้างคุณลักษณะ” ฟรีหรือไม่

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

คุณจะเรียนรู้อะไรในบทเรียน “การคำนวณรายได้และการสร้างคุณลักษณะ”

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

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

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

บทเรียน “การคำนวณรายได้และการสร้างคุณลักษณะ” ใช้เวลานานแค่ไหน

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

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

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

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

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