Bird
Raised Fist0
Pandasdata~20 mins

Common dtype errors and fixes in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
dtype_master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
What is the output of this dtype conversion code?
Consider the following pandas code that attempts to convert a column to numeric. What will be the output of df['A'] after running this code?
Pandas
import pandas as pd

df = pd.DataFrame({'A': ['1', '2', 'three', '4']})
df['A'] = pd.to_numeric(df['A'], errors='coerce')
print(df['A'])
ARaises ValueError due to 'three' string
B
0       1
1       2
2    three
3       4
Name: A, dtype: object
C
0    1.0
1    2.0
2    NaN
3    4.0
Name: A, dtype: float64
D
0    1
1    2
2    0
3    4
Name: A, dtype: int64
Attempts:
2 left
💡 Hint
Look at how errors='coerce' handles non-numeric values.
❓ data_output
intermediate
1:30remaining
How many unique values are in the column after conversion?
Given this code, how many unique values does the column 'B' have after conversion?
Pandas
import pandas as pd

df = pd.DataFrame({'B': ['10', '20', '30', '20', 'ten']})
df['B'] = pd.to_numeric(df['B'], errors='coerce')
unique_count = df['B'].nunique(dropna=True)
print(unique_count)
A3
B4
C5
DRaises TypeError
Attempts:
2 left
💡 Hint
Remember that nunique(dropna=True) excludes NaN values.
🔧 Debug
advanced
2:00remaining
Why does this code raise a ValueError?
This code tries to convert a column to datetime but raises a ValueError. What is the cause?
Pandas
import pandas as pd

df = pd.DataFrame({'dates': ['2023-01-01', 'not_a_date', '2023-03-01']})
df['dates'] = pd.to_datetime(df['dates'], format='%Y-%m-%d')
ABecause the format string is incorrect for the given dates
BBecause 'not_a_date' does not match the format and no error handling is set
CBecause pd.to_datetime cannot convert strings to datetime
DBecause the DataFrame column is not of string type
Attempts:
2 left
💡 Hint
Check how pd.to_datetime behaves when a string does not match the format and no errors parameter is given.
🚀 Application
advanced
2:30remaining
Which option correctly converts a mixed-type column to numeric with invalid values as zero?
You have a pandas column with numbers as strings and some invalid strings. You want to convert it to numeric, replacing invalid values with zero. Which code does this correctly?
Pandas
import pandas as pd

df = pd.DataFrame({'vals': ['5', '10', 'abc', '20']})
Adf['vals'] = pd.to_numeric(df['vals'], errors='raise')
Bdf['vals'] = pd.to_numeric(df['vals'], errors='ignore').fillna(0)
Cdf['vals'] = df['vals'].astype(int)
Ddf['vals'] = pd.to_numeric(df['vals'], errors='coerce').fillna(0).astype(int)
Attempts:
2 left
💡 Hint
Think about how to handle invalid strings and convert the column to integers.
🧠 Conceptual
expert
3:00remaining
What is the main reason pandas converts integer columns with NaN to float dtype?
In pandas, when you convert a column with integers but some values are missing (NaN), the column dtype changes from int to float. Why does this happen?
ABecause NaN is a float value and integer dtype cannot represent NaN
BBecause pandas automatically converts all columns with missing values to float for performance
CBecause integers are stored as floats internally in pandas
DBecause NaN is treated as zero in integer columns
Attempts:
2 left
💡 Hint
Think about how missing values are represented in pandas and numpy.

Practice

(1/5)
1. What is the main reason to fix data types (dtypes) in a pandas DataFrame?
easy
A. To change column names automatically
B. To make the DataFrame look colorful
C. To increase the number of rows
D. To avoid errors and get correct analysis results

Solution

  1. Step 1: Understand the role of dtypes

    Dtypes tell pandas how to treat data, like numbers or text.
  2. Step 2: Recognize the impact of wrong dtypes

    If dtypes are wrong, calculations or filters may fail or give wrong answers.
  3. Final Answer:

    To avoid errors and get correct analysis results -> Option D
  4. Quick Check:

    Fixing dtypes = correct results [OK]
Hint: Fix dtypes to prevent errors and wrong answers [OK]
Common Mistakes:
  • Ignoring dtype issues and expecting correct results
  • Thinking dtype fixes change data values
  • Confusing dtype fixes with styling
2. Which of the following is the correct syntax to convert a pandas column named 'age' to integer type?
easy
A. df['age'].astype(int)
B. df.astype('age', int)
C. astype(df['age'], 'int')
D. df['age'].convert(int)

Solution

  1. Step 1: Recall the correct method to change dtype

    Use the astype() method on the DataFrame column.
  2. Step 2: Check the syntax for astype()

    The correct syntax is df['column'].astype(type).
  3. Final Answer:

    df['age'].astype(int) -> Option A
  4. Quick Check:

    astype() method syntax = df['age'].astype(int) [OK]
Hint: Use df['col'].astype(type) to fix dtype [OK]
Common Mistakes:
  • Using astype on DataFrame instead of column
  • Wrong method names like convert()
  • Passing arguments in wrong order
3. Given the code:
import pandas as pd
df = pd.DataFrame({'score': ['10', '20', '30']})
df['score'] = df['score'].astype(int)
print(df['score'].sum())

What is the output?
medium
A. '102030'
B. TypeError
C. 60
D. None

Solution

  1. Step 1: Convert 'score' column from string to int

    The astype(int) changes strings like '10' to integer 10.
  2. Step 2: Calculate the sum of integer values

    Sum of 10 + 20 + 30 = 60.
  3. Final Answer:

    60 -> Option C
  4. Quick Check:

    Sum of integers = 60 [OK]
Hint: Convert strings to int before sum to get numeric result [OK]
Common Mistakes:
  • Not converting strings to int before sum
  • Expecting string concatenation instead of sum
  • Confusing sum output with error
4. You run this code:
df = pd.DataFrame({'price': ['100', '200', '300']})
df['price'] = df['price'].astype(float)
df['price'] = df['price'].astype(int)

But get an error. What is the likely cause?
medium
A. DataFrame missing import statement
B. Strings cannot be converted to float
C. Cannot convert float to int directly if float has decimals
D. astype() cannot be chained

Solution

  1. Step 1: Examine the code snippet

    The code uses pd.DataFrame but no import statement is shown.
  2. Step 2: Identify the runtime error

    Without import pandas as pd, pd raises NameError: name 'pd' is not defined.
  3. Final Answer:

    DataFrame missing import statement -> Option A
  4. Quick Check:

    Missing import causes NameError [OK]
Hint: Always import pandas as pd before using pd.DataFrame [OK]
Common Mistakes:
  • Forgetting the import pandas as pd statement
  • Assuming pd is predefined
  • Focusing on dtype conversions instead of basic syntax
5. You have a DataFrame with a column 'date' containing strings like '2023-01-01'. You want to analyze by month but get errors when grouping. What is the best way to fix the dtype before grouping?
hard
A. Convert 'date' column to integer using astype(int)
B. Convert 'date' column to datetime using pd.to_datetime()
C. Leave 'date' as string and group directly
D. Drop the 'date' column before grouping

Solution

  1. Step 1: Identify the problem with string dates

    Grouping by string dates does not allow easy extraction of months.
  2. Step 2: Convert strings to datetime type

    Use pd.to_datetime() to convert strings to datetime objects.
  3. Step 3: Group by month after conversion

    Datetime dtype allows grouping by month using dt.month.
  4. Final Answer:

    Convert 'date' column to datetime using pd.to_datetime() -> Option B
  5. Quick Check:

    Datetime dtype needed for date grouping [OK]
Hint: Use pd.to_datetime() to fix date strings before grouping [OK]
Common Mistakes:
  • Trying to group by string dates directly
  • Converting dates to int which loses meaning
  • Dropping date column instead of fixing dtype
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