TASK 1: DATA PROFILING AND CLEANING – COMPLETE
REVISED REPORT
A. INTRODUCTION – PURPOSE – BUSINESS CONTEXT
Purpose: Profile and clean raw dataset to prepare for
analysis – Ensure data quality – Address missing values,
duplicates, outliers, inconsistent formats, invalid values –
Document steps for reproducibility – Provide clean
dataset for Task 2 and 3
Example Dataset: Use your assigned WGU D599 Task 1
dataset – e.g., E-commerce Transactions, Retail Sales,
Customer Churn, Marketing Campaign – Example here
uses E-commerce Retail – 1000 rows – 10 columns –
TransactionID, CustomerID, Product, Category, Quantity,
UnitPrice, OrderDate, Country, PaymentMethod,
CustomerAge – Replace with your actual D599 file –
Same workflow applies
Business Question: Data quality issues impact revenue
analysis – Need clean data to accurately calculate total
sales, identify top products, customer segmentation
Deliverables for Task 1:
, • Profiling report – Shape, data types, missing,
duplicates, outliers, descriptive stats
• Cleaning steps – Code + justification
• Clean dataset – CSV export
• Revised report documenting before/after
B. DATA PROFILING – PYTHON – FULL CODE – BEFORE
CLEANING
Step 1: Import Libraries – Load Raw Data
Python
import pandas as pdimport numpy as npimport
matplotlib.pyplot as pltimport seaborn as snsfrom
datetime import datetime
13 lines hidden
Step 2: Missing Values Analysis
Python
print("\n=== MISSING VALUES ===")missing_count =
df_raw.isnull().sum()missing_percent =
df_raw.isnull().mean()*100missing_report =
pd.DataFrame({'MissingCount': missing_count,
, 'MissingPercent': missing_percent})missing_report =
missing_report[missing_report['MissingCount']>0].sort_v
alues(by='MissingPercent', ascending=False)
10 lines hidden
Step 3: Duplicates
Python
print("\n=== DUPLICATES ===")dup_count =
df_raw.duplicated().sum()print(f"Exact duplicate rows:
{dup_count} –
{dup_count/len(df_raw)*100:.2f}%")print(f"Duplicate
TransactionID:
{df_raw['TransactionID'].duplicated().sum()} – Should be
0 – Primary key")
3 lines hidden
Step 4: Descriptive Statistics – Numerical
Python
print("\n=== DESCRIPTIVE – NUMERICAL ===")numerical
=
df_raw.select_dtypes(include=['int64','float64']).columns.
tolist()print(df_raw[numerical].describe())# Outliers
REVISED REPORT
A. INTRODUCTION – PURPOSE – BUSINESS CONTEXT
Purpose: Profile and clean raw dataset to prepare for
analysis – Ensure data quality – Address missing values,
duplicates, outliers, inconsistent formats, invalid values –
Document steps for reproducibility – Provide clean
dataset for Task 2 and 3
Example Dataset: Use your assigned WGU D599 Task 1
dataset – e.g., E-commerce Transactions, Retail Sales,
Customer Churn, Marketing Campaign – Example here
uses E-commerce Retail – 1000 rows – 10 columns –
TransactionID, CustomerID, Product, Category, Quantity,
UnitPrice, OrderDate, Country, PaymentMethod,
CustomerAge – Replace with your actual D599 file –
Same workflow applies
Business Question: Data quality issues impact revenue
analysis – Need clean data to accurately calculate total
sales, identify top products, customer segmentation
Deliverables for Task 1:
, • Profiling report – Shape, data types, missing,
duplicates, outliers, descriptive stats
• Cleaning steps – Code + justification
• Clean dataset – CSV export
• Revised report documenting before/after
B. DATA PROFILING – PYTHON – FULL CODE – BEFORE
CLEANING
Step 1: Import Libraries – Load Raw Data
Python
import pandas as pdimport numpy as npimport
matplotlib.pyplot as pltimport seaborn as snsfrom
datetime import datetime
13 lines hidden
Step 2: Missing Values Analysis
Python
print("\n=== MISSING VALUES ===")missing_count =
df_raw.isnull().sum()missing_percent =
df_raw.isnull().mean()*100missing_report =
pd.DataFrame({'MissingCount': missing_count,
, 'MissingPercent': missing_percent})missing_report =
missing_report[missing_report['MissingCount']>0].sort_v
alues(by='MissingPercent', ascending=False)
10 lines hidden
Step 3: Duplicates
Python
print("\n=== DUPLICATES ===")dup_count =
df_raw.duplicated().sum()print(f"Exact duplicate rows:
{dup_count} –
{dup_count/len(df_raw)*100:.2f}%")print(f"Duplicate
TransactionID:
{df_raw['TransactionID'].duplicated().sum()} – Should be
0 – Primary key")
3 lines hidden
Step 4: Descriptive Statistics – Numerical
Python
print("\n=== DESCRIPTIVE – NUMERICAL ===")numerical
=
df_raw.select_dtypes(include=['int64','float64']).columns.
tolist()print(df_raw[numerical].describe())# Outliers