📖 Scenario: You work in a company that collects customer feedback. The feedback data includes customer names and their comments. However, the data is messy: some names have extra spaces, inconsistent capitalization, and some comments have unwanted characters. You want to clean this data to make it easier to analyze.
🎯 Goal: Clean the customer names by removing extra spaces and making them all lowercase. Also, extract only the first word from each comment to get a quick idea of the feedback.
📋 What You'll Learn
Create a pandas DataFrame with customer names and comments
Create a configuration variable for the number of words to extract from comments
Use pandas string methods to clean names and extract words from comments
Print the cleaned DataFrame
💡 Why This Matters
🌍 Real World
Cleaning and preparing text data is a common task in data science, especially when working with customer feedback, reviews, or social media data.
💼 Career
Knowing how to clean and manipulate text data using pandas string methods is essential for data analysts and data scientists to prepare data for analysis and build accurate models.
Progress0 / 4 steps
1
Create the initial DataFrame
Create a pandas DataFrame called df with two columns: 'Name' and 'Comment'. Use these exact values: ' Alice ', 'Great product!'; 'BOB', 'Could be better.'; 'Charlie ', 'Loved it!'.
Pandas
Hint
Use pd.DataFrame with a dictionary containing the columns and their values.
2
Set the number of words to extract
Create a variable called num_words and set it to 1. This will control how many words to extract from each comment.
Pandas
Hint
Just assign the number 1 to the variable num_words.
3
Clean names and extract words from comments
Use pandas string methods to clean the 'Name' column by stripping spaces and converting to lowercase. Then, create a new column called 'FirstWord' that contains the first num_words words from the 'Comment' column.
Pandas
Hint
Use str.strip() and str.lower() on the 'Name' column. Use str.split(), slice with [:num_words], and str.join(' ') on the 'Comment' column.
4
Print the cleaned DataFrame
Print the DataFrame df to see the cleaned names and the first word of each comment.
Pandas
Hint
Use print(df) to display the DataFrame.
Practice
(1/5)
1. Why do we use string operations like .str.lower() on pandas columns?
easy
A. To convert numbers into strings
B. To sort the rows in the DataFrame
C. To remove missing values from the column
D. To make text data consistent by changing all letters to lowercase
Solution
Step 1: Understand string consistency
Text data can have mixed uppercase and lowercase letters, which can cause mismatches when comparing or grouping.
Step 2: Use .str.lower() to unify text
Applying .str.lower() converts all letters to lowercase, making data consistent and easier to analyze.
Final Answer:
To make text data consistent by changing all letters to lowercase -> Option D
Quick Check:
String case normalization = consistent text [OK]
Hint: Use .str.lower() to unify text case quickly [OK]
Common Mistakes:
Thinking .str.lower() changes numbers
Confusing string operations with sorting
Assuming it removes missing values
2. Which of the following is the correct syntax to check if a pandas column 'Name' contains the substring 'john' (case insensitive)?
easy
A. df['Name'].str.find('john', case_sensitive=False)
B. df['Name'].contains('john', ignore_case=True)
C. df['Name'].str.contains('john', case=False)
D. df['Name'].str.match('john', ignore_case=True)
Solution
Step 1: Identify correct method for substring search
The pandas string method to check substring presence is .str.contains().
Step 2: Use correct parameters for case insensitivity
The parameter to ignore case is case=False inside .str.contains().
Final Answer:
df['Name'].str.contains('john', case=False) -> Option C
Quick Check:
Substring search with case=False = correct syntax [OK]
Hint: Use .str.contains('text', case=False) for case-insensitive search [OK]
A. You must use .str.lower() to apply string method on a pandas Series
B. The column 'Name' does not exist in the DataFrame
C. The method .lower() should be called without parentheses
D. You cannot create new columns in pandas DataFrame
Solution
Step 1: Identify method usage on pandas Series
Directly calling .lower() on a pandas Series causes error because it's a string method for single strings, not Series.
Step 2: Use .str accessor for string methods on Series
To apply string methods on a whole column, use .str.lower() instead of .lower().
Final Answer:
You must use .str.lower() to apply string method on a pandas Series -> Option A
Quick Check:
Use .str.lower() on Series, not .lower() [OK]
Hint: Use .str before string methods on pandas columns [OK]
Common Mistakes:
Calling .lower() directly on Series
Forgetting .str accessor
Thinking .lower() works on whole column
5. You have a DataFrame with a column 'Email' containing email addresses with mixed cases and extra spaces. Which sequence of string operations will clean the data by trimming spaces and converting all emails to lowercase?
hard
A. df['Email'].lower().strip()
B. df['Email'].str.strip().str.lower()
C. df['Email'].strip().lower()
D. df['Email'].str.lower().strip()
Solution
Step 1: Remove extra spaces using .str.strip()
Use .str.strip() to remove spaces from start and end of each string in the column.
Step 2: Convert all text to lowercase with .str.lower()
Apply .str.lower() after stripping to unify case.
Step 3: Chain methods correctly
Chaining .str.strip().str.lower() applies both operations in order on the Series.
Final Answer:
df['Email'].str.strip().str.lower() -> Option B
Quick Check:
Chain .str.strip() then .str.lower() for clean emails [OK]
Hint: Chain .str.strip() then .str.lower() to clean text [OK]
Common Mistakes:
Calling .lower() or .strip() without .str
Wrong order of operations
Using methods directly on Series without .str
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.