Welcome to plsql4all.blogspot.com SQL, MYSQL, ORACLE, TERADATA, MONGODB, MARIADB, GREENPLUM, DB2, POSTGRESQL.

Friday, 31 May 2024

Data Cleaning

What is Data Cleaning?


Data cleaning, also known as data cleansing or data scrubbing, is the process of identifying and correcting (or removing) inaccuracies, inconsistencies, and errors in data to ensure that it is accurate, complete, and reliable. It is a crucial step in data preparation for analysis, as it improves the quality of data, making it more useful and trustworthy.


Imortance of Data Cleaning:-


1. Improves Data Quality: Ensures that the data is accurate and consistent.

2. Enhances Decision Making: Reliable data leads to better insights and informed decisions.

3. Increases Efficiency: Clean data reduces the time and effort needed for data analysis.

4. Compliance: Helps in adhering to data governance and regulatory requirements.


Steps in Data Cleaning:-


1. Data Profiling:-

   - Understanding the Data: Analyze the data to understand its structure, content, and relationships.

   - Initial Assessment: Identify potential data quality issues such as missing values, duplicates, and outliers.


2. Data Validation:-

   - Set Validation Rules: Define rules and constraints based on the data requirements (e.g., valid ranges, formats, and unique values).

   - Validity Checks: Use these rules to identify invalid data entries.


3. Handling Missing Data:-

   - Identify Missing Data: Determine where data is missing (e.g., empty cells, NaN values).

   - Imputation: Fill in missing values using techniques such as mean/mode/median imputation, or more advanced methods like K-nearest neighbors (KNN).

   - Deletion: Remove records with missing data if they are not critical.


4. Removing Duplicates:-

   - Detect Duplicates: Identify duplicate records in the dataset.

   - Eliminate Duplicates: Remove or merge duplicate entries to ensure each record is unique.


5. Correcting Inaccuracies:-

   - Standardize Data: Ensure consistency in data formats (e.g., date formats, address formats).

   - Correct Errors: Fix incorrect data entries manually or using automated scripts.


6. Handling Outliers:-

   - Detect Outliers: Use statistical methods to identify data points that deviate significantly from the norm.

   - Manage Outliers: Decide whether to remove, correct, or keep the outliers based on their impact on analysis.


7. Normalization and Standardization:-

   - Normalize Data: Adjust values measured on different scales to a common scale.

   - Standardize Data: Ensure uniformity in data representation (e.g., all text in lowercase, consistent units).


8. Data Transformation:-

   - Transform Data: Modify data into a desired format or structure, such as aggregating, pivoting, or creating new calculated fields.


9. Data Enrichment:-

   - Add Missing Information: Enhance the dataset by adding relevant external data.

   - Data Integration: Combine data from different sources to create a comprehensive dataset.


10. Documenting and Monitoring:-

    - Document the Cleaning Process: Keep a detailed record of the steps and changes made during the data cleaning process.

    - Continuous Monitoring: Regularly check and maintain data quality over time.


Tools for Data Cleaning:-


1. Excel and Google Sheets: Basic functions and formulas for cleaning small datasets.

2. Python Libraries:

   - Pandas: For data manipulation and cleaning.

   - NumPy: For numerical data operations.

   - SciPy: For advanced statistical operations.

3. R Packages:

   - dplyr: For data manipulation.

   - tidyr: For tidying data.

   - janitor: For cleaning data.

4. Specialized Data Cleaning Tools:

   - OpenRefine: For cleaning and transforming data.

   - Trifacta: For advanced data wrangling.

   - Talend: For data integration and cleaning.


Example: Data Cleaning in Python using Pandas:-


import pandas as pd


# Load data

df = pd.read_csv('data.csv')


# Initial assessment

print(df.info())

print(df.describe())


# Handling missing values

df['column_name'].fillna(df['column_name'].mean(), inplace=True)


# Removing duplicates

df.drop_duplicates(inplace=True)


# Correcting inaccuracies

df['date_column'] = pd.to_datetime(df['date_column'], format='%Y-%m-%d')


# Handling outliers

Q1 = df['numeric_column'].quantile(0.25)

Q3 = df['numeric_column'].quantile(0.75)

IQR = Q3 - Q1

df = df[~((df['numeric_column'] < (Q1 - 1.5 * IQR)) | (df['numeric_column'] > (Q3 + 1.5 * IQR)))]


# Standardization

df['text_column'] = df['text_column'].str.lower()


# Final cleaned data

print(df.info())


Data cleaning is a vital process for ensuring the accuracy, consistency, and reliability of your data. By following systematic steps and using appropriate tools, you can effectively clean your data, leading to better analysis and decision-making outcomes.


Real-Life Example of Data Cleaning:-


Let's consider a real-life scenario involving a retail company that wants to analyze its customer data to improve marketing strategies. The company has accumulated a significant amount of data from various sources, including online sales, in-store purchases, and customer feedback forms. The dataset contains information such as customer names, email addresses, phone numbers, purchase history, and feedback comments.


1. Data Profiling and Initial Assessment:-

The first step in data cleaning is to understand the dataset and identify potential issues.


import pandas as pd


# Load the dataset

df = pd.read_csv('customer_data.csv')


# Initial assessment

print(df.info())

print(df.describe(include='all'))

print(df.head())


During this assessment, the company discovers several data quality issues:

- Missing values in the email and phone number columns.

- Duplicate entries for some customers.

- Inconsistent date formats in the purchase date column.

- Outliers in the purchase amount column.

- Inconsistent spelling and casing in the feedback comments.


2. Handling Missing Data:-

The company decides to handle missing values in different ways depending on the column.


# Fill missing email addresses with a placeholder

df['email'].fillna('missing@example.com', inplace=True)


# Drop rows with missing phone numbers if phone number is critical

df.dropna(subset=['phone_number'], inplace=True)


# For other missing values, use forward fill method

df.fillna(method='ffill', inplace=True)


3. Removing Duplicates:-

To ensure each customer is unique in the dataset, the company removes duplicate entries.


# Remove duplicate entries based on customer ID or email

df.drop_duplicates(subset='customer_id', inplace=True)


4. Correcting Inaccuracies:-

The company standardizes the date format and corrects any inconsistent data entries.


# Standardize the purchase date format

df['purchase_date'] = pd.to_datetime(df['purchase_date'], errors='coerce')


# Drop rows where purchase_date couldn't be converted

df.dropna(subset=['purchase_date'], inplace=True)


5. Handling Outliers:-

To manage outliers in the purchase amount column, the company uses the IQR method.


Q1 = df['purchase_amount'].quantile(0.25)

Q3 = df['purchase_amount'].quantile(0.75)

IQR = Q3 - Q1


# Filter out outliers

df = df[~((df['purchase_amount'] < (Q1 - 1.5 * IQR)) | (df['purchase_amount'] > (Q3 + 1.5 * IQR)))]


6. Standardizing and Normalizing Data:-

The company standardizes text data to ensure consistency.


# Convert feedback comments to lowercase

df['feedback'] = df['feedback'].str.lower()


# Replace common typos or abbreviations

df['feedback'] = df['feedback'].replace({'gr8': 'great', 'thx': 'thanks'})


7. Data Transformation:-

The company might also want to create new features or transform existing ones for better analysis.


# Create a new column for the year of purchase

df['purchase_year'] = df['purchase_date'].dt.year


# Aggregate purchase amounts by customer

customer_spending = df.groupby('customer_id')['purchase_amount'].sum().reset_index()

customer_spending.rename(columns={'purchase_amount': 'total_spent'}, inplace=True)


# Merge this new feature back into the original dataframe

df = pd.merge(df, customer_spending, on='customer_id')


8. Final Cleaned Data:-

The final cleaned dataset is now ready for analysis, providing accurate, consistent, and reliable data for marketing strategies.


# Save the cleaned data to a new CSV file

df.to_csv('cleaned_customer_data.csv', index=False)


# Final assessment

print(df.info())

print(df.describe(include='all'))

print(df.head())

Please provide your feedback in the comments section above. Please don't forget to follow.