Bird
Raised Fist0
Data Analysis Pythondata~5 mins

String methods on Series in Data Analysis Python

Choose your learning style10 modes available
Introduction

String methods on Series help you work with text data easily. They let you change, search, or check text in many rows at once.

You have a list of names and want to make them all lowercase.
You want to find which rows contain a certain word.
You need to remove extra spaces from text in a column.
You want to count how many times a letter appears in each text.
You want to replace a part of the text in many rows.
Syntax
Data Analysis Python
series.str.method_name(arguments)
Use .str to access string methods on a pandas Series.
These methods work on each element (row) in the Series.
Examples
Convert all text in the 'name' column to lowercase.
Data Analysis Python
df['name'].str.lower()
Check which rows in 'name' contain the word 'john'. Returns True or False for each row.
Data Analysis Python
df['name'].str.contains('john', na=False)
Remove spaces at the start and end of each text in 'name'.
Data Analysis Python
df['name'].str.strip()
Replace all 'a' letters with '@' in the 'name' column.
Data Analysis Python
df['name'].str.replace('a', '@')
Sample Program

This code shows how to clean text by removing spaces, convert to lowercase, check for a letter, and replace letters in a pandas Series.

Data Analysis Python
import pandas as pd

data = {'name': [' Alice ', 'Bob', 'Charlie', 'David', 'Eve']}
df = pd.DataFrame(data)

# Remove spaces
clean_names = df['name'].str.strip()

# Convert to lowercase
lower_names = clean_names.str.lower()

# Check if name contains letter 'a'
contains_a = lower_names.str.contains('a', na=False)

# Replace 'a' with '@'
replaced_names = lower_names.str.replace('a', '@')

print('Original names:')
print(df['name'])
print('\nCleaned names:')
print(clean_names)
print('\nLowercase names:')
print(lower_names)
print('\nContains letter a:')
print(contains_a)
print('\nNames with a replaced by @:')
print(replaced_names)
OutputSuccess
Important Notes

String methods on Series do not change the original data unless you assign the result back.

Use na=False in methods like contains() to handle missing values safely.

Many string methods are similar to Python's string methods but work on whole columns.

Summary

Use .str to apply string methods on pandas Series.

These methods help clean, search, and modify text data easily.

They work on each row and return a new Series with the results.

Practice

(1/5)
1. What does the .str.lower() method do when applied to a pandas Series?
easy
A. Converts all characters in each string of the Series to lowercase.
B. Removes all whitespace from each string in the Series.
C. Counts the number of characters in each string of the Series.
D. Replaces all digits in each string with a special character.

Solution

  1. Step 1: Understand the .str accessor

    The .str accessor allows string methods to be applied element-wise on a pandas Series.
  2. Step 2: Identify the effect of .lower()

    The .lower() method converts all uppercase letters in each string to lowercase.
  3. Final Answer:

    Converts all characters in each string of the Series to lowercase. -> Option A
  4. Quick Check:

    .str.lower() = lowercase conversion [OK]
Hint: Remember .str.lower() makes all letters small [OK]
Common Mistakes:
  • Confusing .str.lower() with .str.strip()
  • Thinking it removes whitespace
  • Assuming it counts characters
2. Which of the following is the correct syntax to check if each string in a pandas Series names contains the substring 'data'?
easy
A. names.contains(str('data'))
B. names.contains('data')
C. names.str.contains(data)
D. names.str.contains('data')

Solution

  1. Step 1: Recall the correct usage of string methods on Series

    String methods must be accessed via the .str accessor on a pandas Series.
  2. Step 2: Check the correct method call syntax

    The method .contains() requires the substring as a string argument inside quotes.
  3. Final Answer:

    names.str.contains('data') -> Option D
  4. Quick Check:

    Use .str.contains('substring') for substring check [OK]
Hint: Always use .str before string methods on Series [OK]
Common Mistakes:
  • Omitting .str accessor
  • Passing variable without quotes
  • Using .contains() directly on Series
3. Given the pandas Series fruits = pd.Series(['Apple', 'banana', 'Cherry', 'date']), what is the output of fruits.str.upper()?
medium
A. ['apple', 'banana', 'cherry', 'date']
B. ['APPLE', 'banana', 'CHERRY', 'DATE']
C. ['APPLE', 'BANANA', 'CHERRY', 'DATE']
D. ['Apple', 'banana', 'Cherry', 'date']

Solution

  1. Step 1: Understand .str.upper() effect on Series

    The .str.upper() method converts all characters in each string to uppercase.
  2. Step 2: Apply .str.upper() to each element

    Each fruit name is converted fully to uppercase: 'Apple' -> 'APPLE', 'banana' -> 'BANANA', etc.
  3. Final Answer:

    ['APPLE', 'BANANA', 'CHERRY', 'DATE'] -> Option C
  4. Quick Check:

    .str.upper() = all uppercase strings [OK]
Hint: Uppercase method makes all letters capital [OK]
Common Mistakes:
  • Thinking it only affects first letter
  • Confusing with .str.capitalize()
  • Expecting original case unchanged
4. What is wrong with this code snippet?
import pandas as pd
s = pd.Series(['cat', 'dog', 'bird'])
s.str.replace('d', '')
medium
A. It raises a FutureWarning and requires regex=false to avoid it.
B. It works correctly and removes 'd' from each string.
C. It raises a TypeError because 'replace' is not a string method.
D. It returns null instead of a Series.

Solution

  1. Step 1: Understand .str.replace() default behavior

    By default, .str.replace() treats the first argument as a regex pattern.
  2. Step 2: Identify warning about regex default change

    Recent pandas versions raise a FutureWarning suggesting to specify regex=false when replacing literal strings.
  3. Final Answer:

    It raises a FutureWarning and requires regex=false to avoid it. -> Option A
  4. Quick Check:

    .str.replace() warns about regex=true default [OK]
Hint: Add regex=false to .str.replace() for literal replace [OK]
Common Mistakes:
  • Ignoring FutureWarning
  • Assuming no warning occurs
  • Expecting error instead of warning
5. You have a pandas Series emails = pd.Series(['John.Doe@example.com', 'jane_smith@work.net', 'admin@site.org']). How can you extract the domain names (like 'example.com') from each email using string methods?
hard
A. emails.str.extract('(@.*)')
B. emails.str.split('@').str[1]
C. emails.str.replace('.*@', '')
D. emails.str.slice(start=emails.str.find('@')+1)

Solution

  1. Step 1: Understand the goal to get text after '@'

    We want the part of each string after the '@' symbol, which is the domain.
  2. Step 2: Use .str.split('@') and select the second part

    Splitting each string by '@' creates a list; index 1 is the domain part.
  3. Final Answer:

    emails.str.split('@').str[1] -> Option B
  4. Quick Check:

    Split by '@' and take second element [OK]
Hint: Split by '@' and pick index 1 for domain [OK]
Common Mistakes:
  • Using incorrect regex in .str.extract()
  • Forgetting to select index after split
  • Using .str.replace() incorrectly
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard