Pattern Matching with str.contains in Data Science
📖 Scenario: You work in a small bookstore. You have a list of book titles and want to find which books mention the word "Python" in their titles. This helps you quickly find all Python-related books.
🎯 Goal: Build a simple program that uses pattern matching with str.contains to find book titles containing the word "Python".
📋 What You'll Learn
Create a pandas DataFrame with a column named title containing the exact book titles given.
Create a variable called pattern that holds the string 'Python'.
Use str.contains with the pattern variable to filter the DataFrame for titles containing "Python".
Print the filtered DataFrame showing only the matching book titles.
💡 Why This Matters
🌍 Real World
Finding specific keywords in text data is common in data science, such as searching product names, customer reviews, or document contents.
💼 Career
Pattern matching with <code>str.contains</code> is a basic skill for data cleaning, filtering, and text analysis used by data analysts and scientists.
Progress0 / 4 steps
1
Create the book titles DataFrame
Import pandas as pd and create a DataFrame called books with a column title containing these exact book titles: 'Learn Python Programming', 'Data Science Handbook', 'Python for Data Analysis', 'Cooking 101', 'Advanced Python Techniques'.
Data Analysis Python
Hint
Use pd.DataFrame with a dictionary where the key is 'title' and the value is a list of the exact book titles.
2
Create the pattern variable
Create a variable called pattern and set it to the string 'Python'.
Data Analysis Python
Hint
Just assign the string 'Python' to the variable pattern.
3
Filter titles using str.contains
Use str.contains with the variable pattern on the title column of books to create a new DataFrame called python_books that contains only the rows where the title includes "Python".
Data Analysis Python
Hint
Use books['title'].str.contains(pattern) inside the brackets to filter rows.
4
Print the filtered book titles
Print the DataFrame python_books to show only the book titles that contain the word "Python".
Data Analysis Python
Hint
Use print(python_books) to display the filtered DataFrame.
Practice
(1/5)
1. What does the str.contains method do when used on a pandas Series?
easy
A. It replaces all occurrences of a pattern with another string.
B. It counts how many times a pattern appears in each string.
C. It splits each string into a list based on a pattern.
D. It checks if each string contains a specified pattern and returns true or false.
Solution
Step 1: Understand str.contains purpose
The method checks each string in a Series for a pattern and returns true or false accordingly.
Step 2: Compare with other string methods
Replacing, splitting, or counting are different methods like replace(), split(), or count(), not contains().
Final Answer:
It checks if each string contains a specified pattern and returns true or false. -> Option D
Quick Check:
str.contains returns boolean mask [OK]
Hint: Remember: contains returns true/false for pattern presence [OK]
Common Mistakes:
Confusing contains with replace or split
Thinking it returns counts instead of booleans
Assuming it modifies the original data
2. Which of the following is the correct syntax to filter rows in a DataFrame df where the column 'name' contains the substring 'cat'?
easy
A. df[df['name'].str.contain('cat')]
B. df[df['name'].contains('cat')]
C. df[df['name'].str.contains('cat')]
D. df[df['name'].str.contains(cat)]
Solution
Step 1: Identify correct method usage
The correct method is str.contains called on the Series with the pattern as a string argument.
Step 2: Check syntax details
df[df['name'].str.contains('cat')] uses str.contains('cat') correctly with quotes around 'cat'. df[df['name'].contains('cat')] misses str, C has a typo, D misses quotes around 'cat'.
Final Answer:
df[df['name'].str.contains('cat')] -> Option C
Quick Check:
Use str.contains with string pattern in quotes [OK]
Hint: Use df['col'].str.contains('pattern') with quotes [OK]
Common Mistakes:
Forgetting to use .str before contains
Missing quotes around the pattern string
Typo in method name like contain instead of contains
A. TypeError because df is not defined; import pandas first.
B. NameError because 'cat' is not quoted; fix by using 'cat' in quotes.
C. AttributeError because str.contains is misspelled; fix spelling.
D. No error; code runs correctly.
Solution
Step 1: Identify cause of error
The pattern 'cat' is used without quotes, so Python treats it as a variable, causing NameError.
Step 2: Correct the syntax
Put 'cat' in quotes: str.contains('cat') to pass a string pattern.
Final Answer:
NameError because 'cat' is not quoted; fix by using 'cat' in quotes. -> Option B
Quick Check:
Pattern must be a string in quotes [OK]
Hint: Always quote string patterns in str.contains [OK]
Common Mistakes:
Forgetting quotes around pattern
Assuming pattern can be variable without definition
Ignoring error messages about undefined names
5. You have a DataFrame df with a column 'comments' containing text. You want to filter rows where 'comments' contain either 'error' or 'fail' (case insensitive). Which code correctly does this?
hard
A. df[df['comments'].str.contains('error|fail', case=false)]
B. df[df['comments'].str.contains('error' or 'fail', case=true)]
C. df[df['comments'].str.contains(['error', 'fail'], case=false)]
D. df[df['comments'].str.contains('error|fail', case=true)]
Solution
Step 1: Use regex pattern for multiple words
To match 'error' or 'fail', use regex 'error|fail' inside str.contains.
Step 2: Set case insensitive matching
Use case=false to ignore case differences.
Step 3: Check options
df[df['comments'].str.contains('error|fail', case=false)] correctly uses regex and case=false. df[df['comments'].str.contains('error' or 'fail', case=true)] misuses 'or' inside string, C passes list instead of string, A uses case=true which is case sensitive.
Final Answer:
df[df['comments'].str.contains('error|fail', case=false)] -> Option A
Quick Check:
Use regex with | and case=false for case-insensitive OR [OK]
Hint: Use regex 'word1|word2' with case=false for OR matching [OK]
Common Mistakes:
Using Python 'or' inside string instead of regex |
Passing list instead of string pattern
Forgetting case=false for case-insensitive search
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.