Bird
Raised Fist0
Pandasdata~20 mins

dtypes and data type checking in Pandas - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Data Type Mastery
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 check?
Given the DataFrame below, what will be the output of df.dtypes?
Pandas
import pandas as pd

data = {'A': [1, 2, 3], 'B': [1.1, 2.2, 3.3], 'C': ['x', 'y', 'z']}
df = pd.DataFrame(data)
print(df.dtypes)
A
A      int64
B      int64
C     object
dtype: object
B
A    float64
B    float64
C    object
dtype: object
C
A      int64
B    float64
C     object
dtype: object
D
A      int32
B    float32
C     object
dtype: object
Attempts:
2 left
💡 Hint
Check the default integer and float types pandas uses on your system.
❓ data_output
intermediate
2:00remaining
How many columns are numeric in this DataFrame?
Using the DataFrame below, how many columns will df.select_dtypes(include=['number']).shape[1] return?
Pandas
import pandas as pd
import numpy as np

data = {'X': [1, 2, 3], 'Y': [4.5, 5.5, 6.5], 'Z': ['a', 'b', 'c'], 'W': [True, False, True]}
df = pd.DataFrame(data)
print(df.select_dtypes(include=['number']).shape[1])
A2
B4
C1
D3
Attempts:
2 left
💡 Hint
Boolean columns are considered numeric by default in pandas.
🔧 Debug
advanced
2:00remaining
Why does this dtype conversion raise an error?
Consider this code snippet. Why does df['col'] = df['col'].astype(int) raise an error?
Pandas
import pandas as pd

data = {'col': ['1', '2', 'three', '4']}
df = pd.DataFrame(data)
df['col'] = df['col'].astype(int)
ABecause the string 'three' cannot be converted to an integer, causing a ValueError.
BBecause pandas does not allow converting strings to integers directly, causing a TypeError.
CBecause the column contains mixed types, causing a KeyError.
DBecause the DataFrame is missing a required index, causing an IndexError.
Attempts:
2 left
💡 Hint
Check the values in the column carefully for non-numeric strings.
🧠 Conceptual
advanced
2:00remaining
Which dtype is best for storing categorical data efficiently?
You have a column with repeated string values representing categories. Which dtype should you use to save memory and speed up operations?
Aobject
Bcategory
Cstring
Dint64
Attempts:
2 left
💡 Hint
Think about pandas special dtype for repeated categories.
🚀 Application
expert
3:00remaining
Identify the dtype of each column after this operation
After running the code below, what are the dtypes of columns 'A', 'B', and 'C'?
Pandas
import pandas as pd
import numpy as np

data = {'A': [1, 2, 3], 'B': [1.0, 2.0, 3.0], 'C': ['a', 'b', 'c']}
df = pd.DataFrame(data)
df['A'] = df['A'].astype('float32')
df['B'] = df['B'].astype('int32')
df['C'] = df['C'].astype('category')
print(df.dtypes)
A
A    float64
B      int32
C    category
dtype: object
B
A    float64
B      int64
C     object
dtype: object
C
A      int32
B    float32
C     object
dtype: object
D
A    float32
B      int32
C    category
dtype: object
Attempts:
2 left
💡 Hint
Check the explicit astype conversions carefully.

Practice

(1/5)
1. What does the dtypes attribute in a pandas DataFrame tell you?
easy
A. The type of data stored in each column
B. The number of rows in the DataFrame
C. The names of the columns
D. The total memory used by the DataFrame

Solution

  1. Step 1: Understand what dtypes represents

    The dtypes attribute shows the data type of each column in a DataFrame, such as integer, float, or object (text).
  2. Step 2: Compare with other DataFrame attributes

    Other attributes like shape give row and column counts, and columns give column names, but dtypes specifically shows data types.
  3. Final Answer:

    The type of data stored in each column -> Option A
  4. Quick Check:

    dtypes = data types per column [OK]
Hint: Remember: dtypes = data types of columns [OK]
Common Mistakes:
  • Confusing dtypes with number of rows
  • Thinking dtypes shows column names
  • Assuming dtypes shows memory usage
2. Which of the following is the correct way to check the data type of a single column named 'age' in a pandas DataFrame df?
easy
A. df.dtypes('age')
B. df['age'].dtype
C. df.dtype['age']
D. df.get_dtype('age')

Solution

  1. Step 1: Recall syntax for accessing column dtype

    To get the data type of a single column, use df['column_name'].dtype.
  2. Step 2: Check other options for correctness

    Options B, C, and D use incorrect syntax or methods that do not exist in pandas.
  3. Final Answer:

    df['age'].dtype -> Option B
  4. Quick Check:

    Single column dtype = df['column'].dtype [OK]
Hint: Use df['column'].dtype to check one column's type [OK]
Common Mistakes:
  • Using parentheses with dtypes like a function
  • Trying to access dtype as a dictionary
  • Using non-existent methods like get_dtype
3. Given the following code:
import pandas as pd
data = {'name': ['Anna', 'Bob'], 'score': [85, 92]}
df = pd.DataFrame(data)
print(df.dtypes)

What will be the output?
medium
A. name object score object dtype: object
B. name int64 score int64 dtype: object
C. name float64 score int64 dtype: object
D. name object score int64 dtype: object

Solution

  1. Step 1: Identify data types of each column

    The 'name' column contains text, so pandas assigns it the 'object' dtype. The 'score' column contains integers, so it gets 'int64'.
  2. Step 2: Understand pandas output format

    Printing df.dtypes shows each column name with its dtype, followed by 'dtype: object' indicating the Series type.
  3. Final Answer:

    name object score int64 dtype: object -> Option D
  4. Quick Check:

    Text = object, integers = int64 [OK]
Hint: Text columns show as object, numbers as int64 or float64 [OK]
Common Mistakes:
  • Assuming text columns show as string dtype
  • Confusing int64 with float64 for integers
  • Expecting score to be object dtype
4. You run this code:
import pandas as pd
data = {'A': [1, 2], 'B': ['x', 'y']}
df = pd.DataFrame(data)
print(df['A'].dtypes())

What error will you get?
medium
A. AttributeError: 'Series' object has no attribute 'dtypes'
B. TypeError: 'dtype' object is not callable
C. SyntaxError: invalid syntax
D. No error, prints int64

Solution

  1. Step 1: Identify the issue with the code

    A pandas Series (df['A']) has a .dtype attribute (singular), not .dtypes (plural, which is for DataFrames).
  2. Step 2: Understand the error caused

    Accessing .dtypes on a Series raises AttributeError: 'Series' object has no attribute 'dtypes'. The parentheses would cause further issues if the attribute existed.
  3. Final Answer:

    AttributeError: 'Series' object has no attribute 'dtypes' -> Option A
  4. Quick Check:

    Series: .dtype | DataFrame: .dtypes [OK]
Hint: Series: .dtype | DataFrame: .dtypes [OK]
Common Mistakes:
  • Confusing Series .dtype with DataFrame .dtypes
  • Adding parentheses after attributes
  • Expecting no error from wrong attribute
5. You have a DataFrame df with columns ['id', 'value', 'date']. The value column is stored as object dtype but contains numbers as strings. Which pandas command will convert value to numeric dtype safely, turning invalid parsing into NaN?
hard
A. df['value'] = df['value'].astype('float64')
B. df['value'] = df['value'].astype(int)
C. df['value'] = pd.to_numeric(df['value'], errors='coerce')
D. df['value'] = df['value'].convert_dtypes()

Solution

  1. Step 1: Understand the problem with object dtype

    The 'value' column has numbers stored as strings, so converting directly with astype(int) or astype(float64) may fail if there are invalid strings.
  2. Step 2: Use pd.to_numeric with errors='coerce'

    This function converts strings to numbers and replaces invalid parsing with NaN, preventing errors.
  3. Step 3: Check other options

    df['value'] = df['value'].convert_dtypes() uses convert_dtypes() which infers types but does not coerce invalid strings safely.
  4. Final Answer:

    df['value'] = pd.to_numeric(df['value'], errors='coerce') -> Option C
  5. Quick Check:

    Use pd.to_numeric with errors='coerce' for safe conversion [OK]
Hint: Use pd.to_numeric with errors='coerce' to convert safely [OK]
Common Mistakes:
  • Using astype(int) on strings causing errors
  • Assuming convert_dtypes fixes string numbers
  • Not handling invalid strings causing crashes
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