Bird
Raised Fist0
NumPydata~20 mins

np.genfromtxt() for handling missing data in NumPy - Practice Problems & Coding Challenges

Choose your learning style10 modes available

Start learning this pattern below

Jump into concepts and practice - no test required

or
Recommended
Test this pattern10 questions across easy, medium, and hard to know if this pattern is strong
Challenge - 5 Problems
🎖️
np.genfromtxt() Master
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ Predict Output
intermediate
2:00remaining
Output of np.genfromtxt() with missing values
What is the output of the following code snippet that uses np.genfromtxt() to read data with missing values?
NumPy
import numpy as np
from io import StringIO

data = """
1,2,3
4,,6
7,8,
"""

arr = np.genfromtxt(StringIO(data), delimiter=',', filling_values=-1)
print(arr)
AValueError: could not convert string to float: ''
B
[[ 1.  2.  3.]
 [ 4. -1.  6.]
 [ 7.  8. -1.]]
C
[[1. 2. 3.]
 [4. nan 6.]
 [7. 8. nan]]
D
[[1 2 3]
 [4 0 6]
 [7 8 0]]
Attempts:
2 left
💡 Hint
Look at how filling_values replaces missing entries.
🧠 Conceptual
intermediate
1:30remaining
Understanding the role of filling_values in np.genfromtxt()
What does the filling_values parameter do in np.genfromtxt() when reading a file with missing data?
AIt specifies the value to replace missing data entries during loading.
BIt skips rows that contain any missing data.
CIt converts all data to strings instead of numbers.
DIt raises an error if any missing data is found.
Attempts:
2 left
💡 Hint
Think about how missing data can be handled automatically.
❓ data_output
advanced
2:30remaining
Resulting array shape and content with missing data
Given this CSV data with missing values, what is the shape and content of the numpy array after loading with np.genfromtxt() using delimiter=',' and default parameters?
NumPy
import numpy as np
from io import StringIO

data = """
10,20,30
40,,60
,80,90
"""

arr = np.genfromtxt(StringIO(data), delimiter=',')
print(arr)
print(arr.shape)
A
[[10. 20. 30.]
 [40. 0. 60.]
 [0. 80. 90.]]
(3, 3)
B
[[10 20 30]
 [40 0 60]
 [0 80 90]]
(3, 3)
CValueError: could not convert string to float: ''
D
[[10. 20. 30.]
 [40. nan 60.]
 [nan 80. 90.]]
(3, 3)
Attempts:
2 left
💡 Hint
By default, missing values become NaN in float arrays.
🔧 Debug
advanced
2:00remaining
Identify the error when loading CSV with missing data
What error will this code raise when trying to load CSV data with missing values using np.genfromtxt() without specifying filling_values?
NumPy
import numpy as np
from io import StringIO

data = """
1,2,3
4,,6
7,8,9
"""

arr = np.genfromtxt(StringIO(data), delimiter=',', dtype=int)
print(arr)
ANo error, prints array with zeros for missing values
BTypeError: unsupported operand type(s) for +: 'int' and 'str'
CValueError: invalid literal for int() with base 10: ''
DSyntaxError: invalid syntax
Attempts:
2 left
💡 Hint
Missing values cannot be converted to int without filling.
🚀 Application
expert
3:00remaining
Handling mixed missing data types with np.genfromtxt()
You have a CSV file with numeric and string columns, some missing values in both. Which np.genfromtxt() call correctly loads the data, replacing missing numeric values with -999 and missing strings with 'missing'?
NumPy
import numpy as np
from io import StringIO

data = """
1,apple,3.5
2,,
,banana,4.1
"""
Anp.genfromtxt(StringIO(data), delimiter=',', dtype=None, encoding=None, filling_values={0: -999, 1: 'missing', 2: -999})
Bnp.genfromtxt(StringIO(data), delimiter=',', dtype=None, encoding=None, filling_values=-999)
Cnp.genfromtxt(StringIO(data), delimiter=',', dtype='U10,f8,i4', filling_values=['missing', -999, -999])
Dnp.genfromtxt(StringIO(data), delimiter=',', dtype=None, encoding=None, missing_values='', filling_values='missing')
Attempts:
2 left
💡 Hint
Use a dictionary for filling_values to specify per-column replacements.

Practice

(1/5)
1. What is the main purpose of using np.genfromtxt() in data loading?
easy
A. To load data files while handling missing values automatically
B. To save data files with missing values
C. To visualize data with missing values
D. To delete rows with missing values from a file

Solution

  1. Step 1: Understand the function's purpose

    np.genfromtxt() is designed to read text files and handle missing data gracefully.
  2. Step 2: Compare options with function role

    Only To load data files while handling missing values automatically correctly states it loads data files and manages missing values automatically.
  3. Final Answer:

    To load data files while handling missing values automatically -> Option A
  4. Quick Check:

    Purpose of np.genfromtxt() = Load with missing data handled [OK]
Hint: Remember: genfromtxt reads files and fills missing data [OK]
Common Mistakes:
  • Confusing loading with saving data
  • Thinking it visualizes data
  • Assuming it deletes missing data rows automatically
2. Which of the following is the correct way to specify missing values as empty strings when using np.genfromtxt()?
easy
A. np.genfromtxt('data.csv', missing_values='')
B. np.genfromtxt('data.csv', missing_values=null)
C. np.genfromtxt('data.csv', missing_values=[''])
D. np.genfromtxt('data.csv', missing_values='NA')

Solution

  1. Step 1: Check the parameter type for missing_values

    The missing_values parameter expects a list or set of strings representing missing data markers.
  2. Step 2: Identify correct syntax for empty string

    Empty string must be inside a list: [''] to be recognized as missing.
  3. Final Answer:

    np.genfromtxt('data.csv', missing_values=['']) -> Option C
  4. Quick Check:

    missing_values needs list for empty string [OK]
Hint: Use a list for missing_values even if one item [OK]
Common Mistakes:
  • Passing empty string directly without list
  • Using null which disables missing value detection
  • Confusing 'NA' with empty string
3. What will be the output of this code snippet?
import numpy as np
from io import StringIO
text = '1,2,\n4,,6'
data = np.genfromtxt(StringIO(text), delimiter=',', filling_values=-1)
print(data)
medium
A. [[1 2 nan] [4 nan 6]]
B. [1. 2. -1. 4. -1. 6.]
C. [1 2 nan 4 nan 6]
D. [[1. 2. -1.] [4. -1. 6.]]

Solution

  1. Step 1: Understand input and parameters

    The input text has two rows with missing values (empty fields). The delimiter is ',', and missing values are replaced by -1.
  2. Step 2: Predict output array shape and values

    Output is a 2D array with missing values replaced by -1, so first row: [1, 2, -1], second row: [4, -1, 6].
  3. Final Answer:

    [[1. 2. -1.] [4. -1. 6.]] -> Option D
  4. Quick Check:

    Missing replaced by -1 in 2D array [OK]
Hint: Missing values become filling_values in 2D arrays [OK]
Common Mistakes:
  • Expecting 1D array instead of 2D
  • Confusing nan with filling_values
  • Ignoring delimiter effect on shape
4. Identify the error in this code snippet that tries to load data with missing values:
import numpy as np
np.genfromtxt('data.csv', delimiter=',', missing_values='NA', filling_values=0)
medium
A. filling_values must be a string, not an integer
B. missing_values should be a list, not a string
C. delimiter cannot be a comma
D. np.genfromtxt cannot handle missing values

Solution

  1. Step 1: Check parameter types

    missing_values expects a list or set of strings, not a single string.
  2. Step 2: Validate other parameters

    filling_values=0 is valid, and delimiter=',' is correct for CSV files.
  3. Final Answer:

    missing_values should be a list, not a string -> Option B
  4. Quick Check:

    missing_values needs list/set [OK]
Hint: Always wrap missing_values in a list or set [OK]
Common Mistakes:
  • Passing string directly instead of list
  • Thinking filling_values must be string
  • Misunderstanding delimiter usage
5. You have a CSV file with numeric data and missing values marked as 'NA' and empty strings. You want to load it using np.genfromtxt() so that all missing values become -999. Which is the correct way to do this?
hard
A. np.genfromtxt('file.csv', delimiter=',', missing_values=['NA', ''], filling_values=-999)
B. np.genfromtxt('file.csv', delimiter=',', missing_values='NA', filling_values='-999')
C. np.genfromtxt('file.csv', delimiter=',', missing_values=['NA'], filling_values=null)
D. np.genfromtxt('file.csv', delimiter=',', missing_values=[''], filling_values=0)

Solution

  1. Step 1: Specify all missing value markers

    Both 'NA' and empty strings '' must be included in a list for missing_values.
  2. Step 2: Set filling_values to -999

    Use filling_values=-999 to replace all missing entries with -999.
  3. Final Answer:

    np.genfromtxt('file.csv', delimiter=',', missing_values=['NA', ''], filling_values=-999) -> Option A
  4. Quick Check:

    List all missing markers and set filling_values [OK]
Hint: List all missing markers, set filling_values to desired number [OK]
Common Mistakes:
  • Passing missing_values as string instead of list
  • Using string '-999' instead of integer -999
  • Not including all missing markers