ReadyNest Corp.
WEEK 2 — DATA ANALYTICS INTERNSHIP • PYTHON EDITION
Customer Insights &
Recommendation Project
Complete 3-Day Build Plan • Python Data Cleaning & EDA • Power BI Dashboard • Resources Included
📋 Project Overview
This is your ReadyNest Week 2 internship task. You will analyze customer and sales data, build an interactive
Power BI dashboard, and prepare a business insights report. This document gives you a complete day-by-day
execution plan, explains every feature, and lists the best resources to learn everything from scratch.
📁 📊 💡 📤
4 Deliverables 5 Analysis Areas 5+ Suggestions Submit as
Dataset, EDA, Dashboard, Customers, Sales, Actionable business PDF or PPT + Power BI file
Report Products, Segments recommendations
Tools & Setup Required
Software to Install Before Day 1
• Python 3.10+ — download from [Link] (tick 'Add to PATH' during install)
• VS Code — code editor; install the Python extension from the Extensions panel
• Jupyter Notebook — run: pip install notebook in terminal, then: jupyter notebook
• Python libraries — run in terminal: pip install pandas numpy matplotlib seaborn openpyxl xlsxwriter scipy
• Power BI Desktop — download FREE from [Link]/en-us/power-bi (Windows only; Mac = use
browser)
• Microsoft Excel or Google Sheets — only needed to view/open the raw dataset file
📥 Dataset Tip: If ReadyNest has not given you a dataset, ask ChatGPT: 'Generate a Python script that
creates a retail CSV dataset with 500 rows: CustomerID, Name, Region (North/South/East/West), OrderDate
(2022-2024), ProductName, Category, Quantity, UnitPrice, TotalSales. Make it realistic and save as
[Link]'
🔍 Every Feature Explained
1. Data Cleaning & Preparation — Python with Pandas
Python + pandas is the professional standard for data cleaning. Every step below is done in a Jupyter Notebook
(.ipynb) file which also serves as your EDA deliverable.
• Step 1 — Load data: df = pd.read_csv('[Link]') or pd.read_excel('[Link]')
• Step 2 — Inspect: [Link] / [Link]() / [Link]() / [Link]()
• Step 3 — Find missing values: [Link]().sum() — then fill or drop as needed
• Step 4 — Remove duplicates: df.drop_duplicates(inplace=True)
• Step 5 — Fix data types: df['OrderDate'] = pd.to_datetime(df['OrderDate'])
• Step 6 — Standardize text: df['Region'] = df['Region'].[Link]().[Link]()
• Step 7 — Add calculated columns: df['TotalSales'] = df['Quantity'] * df['UnitPrice']
• Step 8 — Export clean data: df.to_csv('customers_clean.csv', index=False) — load THIS into Power BI
🐍 Pro Tip: Your cleaned Jupyter Notebook IS your EDA deliverable. Add markdown cells with headings and
observations between your code cells to make it look professional.
2. Customer Overview
Answer: Who are our customers? How many are new vs returning? Is our base growing?
• Total Customers = COUNT of unique CustomerIDs
• New vs Returning = flag customers with 1 order (New) vs 2+ orders (Returning)
• Growth Trend = count new customers per month — plot as line chart
• In Power BI: Create measures using DAX — New Customers = CALCULATE(COUNTROWS(Customers),
Customers[OrderCount] = 1)
3. Sales Performance
Answer: How much are we selling? When do we sell the most? Which regions drive revenue?
• Overall Sales = SUM of TotalSales column
• Monthly Trends = Sales grouped by Month — line chart in Power BI
• Region-wise Sales = Sales grouped by Region — bar chart or filled map
• DAX: Monthly Sales = CALCULATE(SUM(Orders[TotalSales]), DATESMTD(Orders[OrderDate]))
4. Product Performance
Answer: Which products make the most money? Which are failing?
• Top 5 Products = bar chart sorted descending by TotalSales
• Least Selling = filter bottom 5 by sales — flag for removal or promotion
• Category Analysis = sales grouped by ProductCategory — pie or treemap
• Market Basket Analysis = which products are bought together (use Excel COUNTIFS or Python mlxtend
library)
5. Customer Segmentation (RFM Method) — Python
Do the entire RFM calculation in Python — then load the result into Power BI for visualization.
• R = Recency: [Link]('CustomerID')['OrderDate'].max() → days since last order (lower = better)
• F = Frequency: [Link]('CustomerID')['OrderID'].count() → total orders (higher = better)
• M = Monetary: [Link]('CustomerID')['TotalSales'].sum() → total spent (higher = better)
• Score each 1-3 using [Link](rfm['Recency'], q=3, labels=[3,2,1]) — note Recency is reversed
• RFM_Score = R_Score + F_Score + M_Score — range 3 to 9
• Segment = High Value (7-9), Medium Value (4-6), Low Value (3)
• Export: rfm.to_csv('rfm_segments.csv') → load this into Power BI
🐍 Python RFM code: snapshot_date = df['OrderDate'].max() + timedelta(1) then rfm =
[Link]('CustomerID').agg(Recency=('OrderDate', lambda x: (snapshot_date - [Link]()).days),
Frequency=('OrderID','count'), Monetary=('TotalSales','sum'))
6. Power BI Dashboard — Core Visuals
Build these 5 core visuals on your main dashboard page:
• KPI Cards: Total Customers, Total Sales ($), Total Orders, Avg. Order Value — use Card visual
• Sales by Month: Line chart — X axis = Month, Y axis = SUM(Sales)
• Sales by Region: Filled Map or bar chart — use Region as category
• Top 5 Products: Horizontal bar chart — sort by Sales descending, filter top 5
• Customer Segment: Donut chart — Segment on legend, Sales on values
7. Slicers & Filters
Slicers let users filter all visuals at once. Mandatory slicers for this project:
• Date Range Slicer: Use 'Between' style on OrderDate
• Region Slicer: List style — user taps a region to filter everything
• Product Category Slicer: Dropdown style
• Customer Segment Slicer: Checkbox style (High/Medium/Low)
⚙️How to add: In Power BI → Insert → Slicer → drag your column into the Field well. Right-click slicer to
change style.
8. Drill-Through Pages
Drill-through means: right-click a region on the map → jump to a dedicated page showing only that region's data.
• Create a new page called 'Region Detail'
• Add Region to the Drill-through section in the Filters pane
• Build charts on that page — they auto-filter to the drilled region
• Add a Back button (Insert → Buttons → Back) for navigation
9. Drill-Down Charts
Drill-down lets you click Year → see Months → click Month → see Weeks → Days.
• In your Sales by Date chart, add a Date Hierarchy: Year > Quarter > Month > Day
• Power BI creates this automatically if your date column is Date type
• Use the drill-down arrows that appear on chart hover (double arrow = go deeper, single = drill one level)
10. Dynamic Titles
Titles change based on selected filter. Example: 'Sales in North Region — 2024' changes when you pick South.
• Create a new DAX Measure: TitleMeasure = 'Sales in ' & SELECTEDVALUE(Regions[Region], 'All
Regions') & ' — ' & SELECTEDVALUE(Dates[Year], 'All Years')
• Click on your chart title → Format → Title → turn on Conditional Formatting → choose your TitleMeasure
11. Row-Level Security (RLS)
Different users see only their own region's data when the report is shared online.
• In Power BI Desktop → Modeling tab → Manage Roles → Create role
• Add a DAX filter: [Region] = USERPRINCIPALNAME() — or hardcode: [Region] = 'North'
• Test using View As → select a role to see what that user would see
• To deploy: Publish to Power BI Service → Dataset settings → Security → assign users to roles
12. Sales Forecasting
Power BI has a built-in AI forecast line — no coding needed.
• Click on your Sales by Month line chart
• In the Analytics pane (magnifying glass icon) → Forecast → turn on
• Set forecast length (e.g., 3 months), confidence interval (95%), seasonality (12 for monthly)
• The grey shaded area shows predicted range — screenshot this for your insights report
13. Churn Risk Score
Flag customers who haven't ordered in X days — they might leave.
• Create a column: DaysSinceLastOrder = TODAY() - MAX(OrderDate) for each customer
• Create ChurnRisk column: IF DaysSinceLastOrder > 90 then 'High Risk', > 60 then 'Medium Risk', else
'Active'
• Add this as a slicer and a KPI card showing count of High Risk customers
• In your business suggestions, recommend targeting these customers with re-engagement emails
14. Slow-Moving Inventory Alerts
Identify products that haven't sold recently or sell below average.
• Calculate: AvgSalesPerProduct = AVERAGE of all product sales
• Flag: SlowMover = IF TotalSales < (AvgSalesPerProduct * 0.5) then 'Slow Mover' else 'Normal'
• Show in a table visual with conditional formatting — red for slow movers
15. Profit Margin by Location
If your dataset has cost data, calculate: ProfitMargin = (Revenue - Cost) / Revenue × 100%
• Show as a filled map or bar chart — darker color = higher margin
• If no cost data exists, estimate margin tier (High/Medium/Low) based on product category industry norms
16. Executive Summary Page
A single-page high-level snapshot for managers. Less charts, more numbers and callouts.
• Big KPI cards across the top: Revenue, Customers, Growth %, Top Region
• 1-2 charts only: Monthly trend + Segment donut
• Text box below: 3-4 bullet point written summary of key findings
• Keep design clean — white background, teal accents matching ReadyNest brand
17. Storytelling Narrative Page
A plain-language page that explains your findings to a non-technical manager.
• Use Power BI's Text Box to write a story: 'Our top 25% customers drive 60% of revenue...'
• Embed 2-3 supporting mini-charts next to the text
• This page becomes the intro of your PDF/PPT report submission
18. Mobile-Optimized Layout
Create a mobile view so the dashboard works on phones.
• In Power BI Desktop → View tab → Mobile Layout
• Drag and resize your visuals for portrait mobile screen
• Prioritize: KPI cards on top, then 1-2 charts below
• Slicers may need to be simplified or removed for mobile
📅 Your 3-Day Execution Plan
Total estimated time: 12–15 hours across 3 days. Adjust based on your pace.
DAY 1 Foundation
Dataset Prep · EDA · Customer Segmentation
Morning Session (3–4 hours)
Dataset Setup + Python Environment
▸ Get or create your dataset (ask internship guide for ReadyNest dataset)
▸ If no dataset given: ask ChatGPT to generate a Python script that creates a 500-row
CSV
▸ Columns needed: CustomerID, Name, Region, OrderDate, ProductName, Category,
Quantity, UnitPrice, TotalSales, OrderID
📥 ▸ Open VS Code → create new folder 'ReadyNest_Week2' → open terminal inside it
Hour 1
▸ Run: pip install pandas numpy matplotlib seaborn openpyxl
▸ Create new file: cleaning_eda.ipynb (Jupyter Notebook)
💡 Note: ChatGPT prompt for dataset: 'Write a Python script using pandas/numpy/faker to
generate a retail CSV with 500 rows: CustomerID, Name, Region (North/South/East/West),
OrderDate (Jan 2022 to Dec 2023), ProductName, Category (Electronics/Clothing/Food/Home),
Quantity (1-10), UnitPrice, TotalSales. Save as [Link]'
Data Cleaning in Python (Jupyter Notebook)
▸ Cell 1 — Import: import pandas as pd, numpy as np
▸ Cell 2 — Load: df = pd.read_csv('[Link]') then [Link](), [Link], [Link]()
▸ Cell 3 — Check nulls: [Link]().sum() — drop or fill:
[Link]([Link](numeric_only=True), inplace=True)
🧹 ▸ Cell 4 — Duplicates: print([Link]().sum()) then df.drop_duplicates(inplace=True)
Hour 2 ▸ Cell 5 — Fix types: df['OrderDate'] = pd.to_datetime(df['OrderDate'])
▸ Cell 6 — Standardize: df['Region'] = df['Region'].[Link]().[Link]()
▸ Cell 7 — Verify TotalSales: df['TotalSales_check'] = df['Quantity'] * df['UnitPrice']
▸ Cell 8 — Export clean data: df.to_csv('customers_clean.csv', index=False)
💡 Note: Add a markdown cell at the top of the notebook: '# ReadyNest Week 2 — Data
Cleaning & EDA' — this makes it look professional for submission.
Exploratory Data Analysis — Python Charts
▸ Chart 1 — Sales by Month: [Link](df['OrderDate'].dt.to_period('M'))
['TotalSales'].sum().plot(kind='line')
▸ Chart 2 — Top 10 Customers: [Link]('Name')
['TotalSales'].sum().nlargest(10).plot(kind='barh')
▸ Chart 3 — Sales by Region: [Link]('Region')['TotalSales'].sum().plot(kind='bar',
color='teal')
📊 ▸ Chart 4 — Sales by Category: [Link]('Category')['TotalSales'].sum().plot(kind='pie',
Hour 3-4
autopct='%1.1f%%')
▸ Chart 5 — Correlation heatmap: import seaborn as sns;
[Link]([Link](numeric_only=True), annot=True)
▸ Save each chart: [Link]('chart_monthly_sales.png', dpi=150, bbox_inches='tight')
▸ Write markdown cell after each chart: your observation in plain English
💡 Note: These saved PNG files go directly into your Business Insights Report. Keep all plots in
the same notebook — the notebook itself is also a deliverable.
Afternoon Session (2–3 hours)
👥 Customer Segmentation — Python RFM
Hour 5 ▸ from datetime import timedelta
▸ snapshot = df['OrderDate'].max() + timedelta(1)
▸ rfm = [Link]('CustomerID').agg(Recency=('OrderDate', lambda x: (snapshot-
[Link]()).days), Frequency=('OrderID','count'), Monetary=('TotalSales','sum')).reset_index()
▸ rfm['R'] = [Link](rfm['Recency'], q=3, labels=[3,2,1]).astype(int)
▸ rfm['F'] = [Link](rfm['Frequency'].rank(method='first'), q=3, labels=[1,2,3]).astype(int)
▸ rfm['M'] = [Link](rfm['Monetary'], q=3, labels=[1,2,3]).astype(int)
▸ rfm['RFM_Score'] = rfm['R'] + rfm['F'] + rfm['M']
▸ rfm['Segment'] = rfm['RFM_Score'].apply(lambda x: 'High Value' if x>=7 else ('Low
Value' if x<=3 else 'Medium Value'))
▸ rfm.to_csv('rfm_segments.csv', index=False) ← load this into Power BI
💡 Note: Quick check: rfm['Segment'].value_counts() — you should see roughly 25% High, 50%
Medium, 25% Low. Also plot: rfm['Segment'].value_counts().plot(kind='pie') for a preview of your
donut chart.
Start Business Insights Report (Word/PPT)
▸ Create a new Word doc or PowerPoint
▸ Page 1: Project title, your name, date, ReadyNest logo
📝 ▸ Page 2: Dataset overview — row count, column list, date range, region list
Hour 6-7 ▸ Page 3: EDA findings with your 5 observations from earlier
▸ Page 4: Customer segmentation table (counts per segment)
▸ Leave space for Power BI charts — you'll add them on Day 3
💡 Note: Start the report NOW so you don't panic on Day 3. Just skeleton it today.
DAY 2 Power BI Build
Core Dashboard · Advanced Features
Morning Session (3–4 hours)
Load Python Output CSVs into Power BI
▸ You should now have 2 CSV files from Day 1: customers_clean.csv and
rfm_segments.csv
▸ Open Power BI Desktop → Get Data → Text/CSV → load customers_clean.csv
▸ Repeat → load rfm_segments.csv — this has your Segment column ready
▸ In Power Query Editor: ensure OrderDate is Date type, TotalSales is Decimal Number
🔗 ▸ Merge tables if needed: Home → Merge Queries → join on CustomerID
Hour 1
▸ Create Date Table in DAX: DateTable = CALENDAR(MIN(Orders[OrderDate]),
MAX(Orders[OrderDate]))
▸ Add Year, Month, MonthName columns to DateTable, then link: Orders[OrderDate] →
DateTable[Date]
💡 Note: Since Python already cleaned your data, Power Query should need minimal work. The
Segment column from rfm_segments.csv flows directly into your donut chart.
Create DAX Measures
▸ Total Customers = DISTINCTCOUNT(Orders[CustomerID])
▸ Total Sales = SUM(Orders[TotalSales])
▸ Total Orders = COUNTROWS(Orders)
📐 ▸ Avg Order Value = DIVIDE([Total Sales], [Total Orders])
Hour 2
▸ New Customers = CALCULATE([Total Customers], Orders[OrderCount] = 1)
▸ Returning Customers = [Total Customers] - [New Customers]
💡 Note: Store all measures in a dedicated 'Measures' table. Right-click in Fields pane → New
Table → name it '_Measures'.
Build Core Dashboard Page
▸ Add 4 KPI Cards at the top: Total Customers, Total Sales, Total Orders, Avg Order
Value
▸ Add Sales by Month line chart: X = MonthName, Y = Total Sales
📊 ▸ Add Top 5 Products bar chart: filter to Top N = 5 by Total Sales
Hour 3-4
▸ Add Customer Segment donut chart: Segment field, Total Sales values
▸ Add Sales by Region bar chart or filled map
▸ Format all with teal/dark ReadyNest colors
💡 Note: Keep the main page clean — max 6 visuals. Add more detail on drill-through pages.
Afternoon Session (3–4 hours)
Add Slicers
▸ Insert 4 slicers: Date Range (Between style), Region (List), Category (Dropdown),
Segment (Checkbox)
🔽 ▸ Position slicers on the left panel of your dashboard
Hour 5
▸ Test: click each slicer to confirm all charts update correctly
▸ Sync slicers across pages: View → Sync Slicers → select all pages
💡 Note: Use Format → Style on slicers to match your dashboard color scheme.
Drill-Through Page — Region Detail
▸ Create new page: right-click page tab → Add Page → name it 'Region Detail'
▸ In the Filters pane on this page, drag Region to 'Drill-through filters'
Hour 6 ▸ Add charts: Monthly sales for that region, top products in that region, customer count
▸ Add Back button: Insert → Buttons → Back
▸ Test: go to main page, right-click a region on the chart → Drill Through → Region Detail
Advanced Features
▸ Forecasting: Click Sales by Month chart → Analytics pane → Forecast → enable, set 3
months ahead
▸ Dynamic Titles: Create TitleMeasure DAX, apply via conditional formatting on chart
📈 titles
Hour 7
▸ Drill-Down: Ensure your Date hierarchy is Year > Quarter > Month in your line chart
▸ Churn Risk: Create DaysSinceLastOrder column, ChurnRisk category, add KPI card
💡 Note: Do forecasting and dynamic titles first — they are the most impressive features for your
submission.
Mobile Layout + Executive Page
▸ View → Mobile Layout → drag KPI cards and top chart to mobile canvas
📱 ▸ Create new page: 'Executive Summary' — 4 big KPIs + 1 trend chart + text box
Hour 8
▸ Create 'Insights Story' page — text boxes explaining findings in plain English
▸ Review entire dashboard for consistent colors and fonts
DAY 3 Report & Submission
Insights · Suggestions · PDF Export
Morning Session (3 hours)
Row-Level Security (Optional but Impressive)
▸ Modeling tab → Manage Roles → New Role → name it 'North Region'
▸ Apply filter: Region[Region] = 'North'
🔒 ▸ Test using Modeling → View As → select role
Hour 1 ▸ Document in your report: 'RLS implemented — each regional manager sees only their
data'
💡 Note: RLS only works fully after publishing to Power BI Service (free account). For
submission, screenshot the role setup to prove it's done.
💡 Business Suggestions — Write Top 5+
Hour 2-3 ▸ Suggestion 1: Target High Value customers with loyalty program — they are 25% of
base but drive 60%+ revenue
▸ Suggestion 2: Re-engage Churn Risk customers (90+ days inactive) with 15% discount
email campaign
▸ Suggestion 3: Promote underperforming products as bundles with top-selling products
(market basket insight)
▸ Suggestion 4: Increase marketing spend in highest-margin region identified in your
analysis
▸ Suggestion 5: Introduce monthly subscription plan for frequent buyers (High Value,
High Frequency)
▸ Add 1-2 more based on YOUR data — make them specific with numbers
💡 Note: Suggestions backed by data numbers are worth much more. Don't say 'increase sales'
— say 'increasing repeat purchase rate from 30% to 40% could add X in revenue'.
Afternoon Session (2–3 hours)
Complete the Business Insights Report
▸ Section 1: Executive Summary (1 page) — key numbers and 3 top findings
▸ Section 2: Data Overview — dataset description, cleaning steps done
📋 ▸ Section 3: Analysis Findings — Customer overview, Sales, Products, Segments (with
Hour 4 chart screenshots)
▸ Section 4: Customer Segmentation Table — counts and % per segment
▸ Section 5: Key Insights — numbered list of 8-10 specific findings with data evidence
▸ Section 6: Business Suggestions — your 5+ suggestions with justifications
Export & Package Submission
▸ Power BI: File → Export → Export to PDF → save as 'Dashboard_Report.pdf'
▸ OR: Export to PowerPoint (File → Export → Export to PowerPoint)
▸ Screenshot each dashboard page individually as backup
📤 ▸ Save your .pbix file (Power BI project file) — include this in submission
Hour 5 ▸ Package: Dashboard PDF/PPT + Business Report PDF + cleaned dataset Excel
▸ Name files clearly: 'ReadyNest_Week2_Dashboard.pbix',
'ReadyNest_Week2_Report.pdf'
💡 Note: ReadyNest says 'PDF or PPT format'. Export from Power BI directly — it preserves all
visuals perfectly.
Final Review Checklist
▸ All 5 analysis areas covered: Customer Overview, Sales, Products, Segmentation,
Behavior
✅ ▸ Dashboard has KPI cards, line chart, map/region chart, bar chart, donut chart
Hour 6 ▸ Slicers working and synced across pages
▸ At least 1 advanced feature (forecast, drill-through, or dynamic titles)
▸ Business report has 5+ specific, data-backed suggestions
▸ All files named and packaged for submission
📚 Learning Resources — Sorted by Day
Watch Before / During Day 1 — Data & EDA
Platform Resource Why / When
YouTube Pandas Data Cleaning Full Tutorial — Keith Best pandas cleaning video — covers
Galli all steps from Day 1 Hour 2
Search: 'Keith Galli pandas data cleaning tutorial'
YouTube Pandas EDA Tutorial — Keith Galli Excellent Python EDA walkthrough, 1 hr
Search: 'Keith Galli pandas EDA tutorial' — watch this before Day 1 Hour 3
YouTube Matplotlib & Seaborn Full Course — Corey Learn all chart types you need for your
Schafer EDA charts
Search: 'Corey Schafer matplotlib tutorial'
YouTube RFM Customer Segmentation Python — Data Exact RFM code walkthrough — watch
Professor before Day 1 Hour 5
Search: 'Data Professor RFM segmentation Python'
YouTube Jupyter Notebook Tutorial for Beginners — If new to Jupyter, watch this first — 30
Corey Schafer min
Search: 'Corey Schafer Jupyter Notebook beginners'
Watch Before / During Day 2 — Power BI
Platform Resource Why / When
YouTube Power BI Full Course for Beginners — Guy in a THE best Power BI channel. Watch
Cube their beginner playlist first.
Search: 'Guy in a Cube Power BI full course'
YouTube Power BI Dashboard from Scratch — Chandoo End-to-end dashboard build, very
Search: 'Chandoo Power BI dashboard tutorial' practical for Day 2
YouTube DAX for Beginners — SQLBI / Marco Russo Learn all the DAX measures you need
Search: 'DAX tutorial beginners SQLBI' in 1 hour
YouTube Power BI Drill-Through Tutorial — How To Exactly what you need for the drill-
Power BI through feature
Search: 'How to Power BI drill through pages'
YouTube Row Level Security Power BI — Pragmatic Short, clear RLS walkthrough for Day 3
Works
Search: 'Pragmatic Works RLS Power BI'
YouTube Power BI Forecast Built-in — Avi Singh 5-min tutorial on enabling the forecast
PowerBI line
Search: 'Avi Singh Power BI forecasting'
Bonus / Reference Resources
Platform Resource Why / When
Website Microsoft Learn — Power BI Documentation Official docs — search any feature you
[Link]/power-bi get stuck on
YouTube Power BI Dynamic Titles — How to Power BI Exact tutorial for the dynamic titles
Search: 'dynamic titles Power BI conditional formatting' feature
YouTube Mobile Layout Power BI — Guy in a Cube Quick 10-min video for the mobile layout
Search: 'Guy in a Cube mobile layout Power BI' feature
Kaggle Retail Customer Dataset — free download Use as your dataset if ReadyNest
[Link] → search 'retail customer segmentation' doesn't provide one
YouTube Business Report in PowerPoint — Leila Make your PPT report look professional
Gharani quickly
Search: 'business report PowerPoint professional'
🐍 Quick Reference — Python Code Cheatsheet
Task Python Code
Load CSV df = pd.read_csv('[Link]')
Load Excel df = pd.read_excel('[Link]', sheet_name='Sheet1')
Inspect data [Link]() | [Link]() | [Link]() | [Link]
Missing values [Link]().sum() → [Link]() or [Link](value)
Remove duplicates df.drop_duplicates(inplace=True)
Fix date column df['OrderDate'] = pd.to_datetime(df['OrderDate'])
Standardize text df['Region'] = df['Region'].[Link]().[Link]()
Add column df['TotalSales'] = df['Quantity'] * df['UnitPrice']
Group & sum [Link]('Region')['TotalSales'].sum().reset_index()
Top N customers [Link]('Name')['TotalSales'].sum().nlargest(10)
Monthly sales [Link](df['OrderDate'].dt.to_period('M'))
['TotalSales'].sum()
Filter rows df[df['Region'] == 'North'] or df[df['TotalSales'] >
1000]
RFM — Recency (snapshot_date - [Link]('CustomerID')
['OrderDate'].max()).[Link]
RFM — Frequency [Link]('CustomerID')['OrderID'].count()
RFM — Monetary [Link]('CustomerID')['TotalSales'].sum()
Binning/Scoring [Link](rfm['Monetary'], q=3, labels=[1,2,3]).astype(int)
Export clean CSV df.to_csv('customers_clean.csv', index=False)
Save a chart [Link]('[Link]', dpi=150, bbox_inches='tight')
⚡ Quick Reference — Important DAX Formulas
Measure Name DAX Formula
Total Sales Total Sales = SUM(Orders[TotalSales])
Total Customers Total Customers = DISTINCTCOUNT(Orders[CustomerID])
Total Orders Total Orders = COUNTROWS(Orders)
Avg Order Value Avg Order Value = DIVIDE([Total Sales], [Total Orders])
New Customers New Customers =
CALCULATE(DISTINCTCOUNT(Orders[CustomerID]),
Orders[OrderCount] = 1)
Monthly Sales MoM Sales = CALCULATE([Total Sales],
DATESMTD(Orders[OrderDate]))
Dynamic Title ChartTitle = "Sales in " & SELECTEDVALUE(Orders[Region],
"All Regions")
High Value Count High Value Cust = CALCULATE([Total Customers],
Customers[Segment] = "High Value")
Churn Risk Add column: DaysSince = DATEDIFF(MAX(Orders[OrderDate]),
TODAY(), DAY)
ReadyNest Corp. • Week 2: Customer Insights & Recommendation Project • Analyze. Understand. Suggest. Grow.