Bird
Raised Fist0
Pythonprogramming~30 mins

Working with CSV files in Python - Mini Project: Build & Apply

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
Working with CSV files
📖 Scenario: You have a small store and keep track of your sales in a CSV file. You want to read this file, find sales above a certain amount, and show those sales.
🎯 Goal: Build a Python program that reads sales data from a CSV file, filters sales above a set amount, and prints those sales.
📋 What You'll Learn
Create a CSV file with sales data
Set a sales threshold value
Read the CSV file and filter sales above the threshold
Print the filtered sales
💡 Why This Matters
🌍 Real World
Many businesses store data in CSV files. Being able to read, filter, and process CSV data is useful for reports and analysis.
💼 Career
Data analysts, software developers, and anyone working with data often need to handle CSV files to extract useful information.
Progress0 / 4 steps
1
Create a CSV file with sales data
Create a CSV file named sales.csv with these exact contents including the header:
product,amount
Book,15
Pen,5
Notebook,20
Bag,50
Python
Hint

Use the csv module and csv.writer to write rows to the file.

2
Set a sales threshold value
Create a variable called threshold and set it to 10 to filter sales above this amount.
Python
Hint

Just create a variable named threshold and assign the number 10.

3
Read the CSV file and filter sales above the threshold
Read the sales.csv file using csv.DictReader. Create a list called filtered_sales that contains dictionaries for each sale where the amount is greater than threshold. Convert amount to an integer before comparing.
Python
Hint

Use csv.DictReader to read rows as dictionaries. Check if int(row['amount']) is greater than threshold and add to filtered_sales.

4
Print the filtered sales
Use a for loop to print each dictionary in filtered_sales.
Python
Hint

Use a for loop to print each dictionary in filtered_sales.

Practice

(1/5)
1. What does the Python csv.reader function do when working with CSV files?
easy
A. Reads the CSV file and returns each row as a list of values
B. Writes data to a CSV file
C. Deletes a CSV file
D. Converts CSV data into JSON format

Solution

  1. Step 1: Understand the purpose of csv.reader

    The csv.reader function reads CSV files and returns each row as a list of strings representing the columns.
  2. Step 2: Differentiate from other CSV functions

    Functions like writing or deleting files are not done by csv.reader. It only reads and parses rows.
  3. Final Answer:

    Reads the CSV file and returns each row as a list of values -> Option A
  4. Quick Check:

    csv.reader reads rows as lists [OK]
Hint: Remember: reader reads rows as lists [OK]
Common Mistakes:
  • Confusing reader with writer
  • Thinking it deletes files
  • Assuming it converts formats
2. Which of the following is the correct way to open a CSV file for reading in Python?
easy
A. open('data.csv', 'a')
B. open('data.csv', 'w')
C. open('data.csv', 'r')
D. open('data.csv', 'x')

Solution

  1. Step 1: Understand file modes in Python

    The mode 'r' means open for reading, which is needed to read a CSV file.
  2. Step 2: Check other modes

    'w' is for writing (overwrites), 'a' is for appending, and 'x' is for creating a new file. None are for reading existing files.
  3. Final Answer:

    open('data.csv', 'r') -> Option C
  4. Quick Check:

    Use 'r' mode to read files [OK]
Hint: Use 'r' mode to read files [OK]
Common Mistakes:
  • Using 'w' which overwrites file
  • Using 'a' which appends data
  • Using 'x' which fails if file exists
3. What will be the output of this code snippet?
import csv
with open('data.csv', 'w', newline='') as f:
    writer = csv.writer(f)
    writer.writerow(['Name', 'Age'])
    writer.writerow(['Alice', '30'])

with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    rows = list(reader)
print(rows)
medium
A. ['Name', 'Age', 'Alice', '30']
B. SyntaxError
C. [['Name, Age'], ['Alice, 30']]
D. [['Name', 'Age'], ['Alice', '30']]

Solution

  1. Step 1: Writing rows with csv.writer

    The code writes two rows: header ['Name', 'Age'] and data ['Alice', '30'] as lists.
  2. Step 2: Reading rows with csv.reader

    Reading back returns a list of lists, each inner list is a row split by commas.
  3. Final Answer:

    [['Name', 'Age'], ['Alice', '30']] -> Option D
  4. Quick Check:

    csv.reader returns list of lists [OK]
Hint: csv.reader returns list of lists, not flat list [OK]
Common Mistakes:
  • Expecting a flat list instead of list of lists
  • Thinking rows are single strings
  • Syntax errors from missing newline='' in open
4. Identify the error in this code that reads a CSV file:
import csv
with open('data.csv', 'r') as f:
    reader = csv.reader(f)
    for row in reader:
    print(row)
medium
A. csv.reader cannot be used with 'with' statement
B. Indentation error in the for loop body
C. File mode should be 'w' instead of 'r'
D. Missing import statement

Solution

  1. Step 1: Check indentation inside the for loop

    The print statement must be indented inside the for loop to run for each row.
  2. Step 2: Verify other parts

    Import is present, file mode 'r' is correct for reading, and csv.reader works with 'with' statement.
  3. Final Answer:

    Indentation error in the for loop body -> Option B
  4. Quick Check:

    Indent loop body correctly [OK]
Hint: Indent inside loops to avoid errors [OK]
Common Mistakes:
  • Not indenting loop body
  • Changing file mode incorrectly
  • Thinking csv.reader can't be used with 'with'
5. You have a CSV file with columns 'Name', 'Age', and 'City'. You want to read it and create a dictionary where keys are names and values are ages (as integers). Which code snippet correctly does this?
hard
A. import csv with open('data.csv', 'r') as f: reader = csv.DictReader(f) result = {row['Name']: int(row['Age']) for row in reader} print(result)
B. import csv with open('data.csv', 'r') as f: reader = csv.reader(f) result = {row[0]: int(row[1]) for row in reader} print(result)
C. import csv with open('data.csv', 'r') as f: reader = csv.DictReader(f) result = {row['Age']: row['Name'] for row in reader} print(result)
D. import csv with open('data.csv', 'r') as f: reader = csv.reader(f) result = {int(row[1]): row[0] for row in reader} print(result)

Solution

  1. Step 1: Use csv.DictReader to access columns by name

    DictReader reads rows as dictionaries, so we can use keys like 'Name' and 'Age'.
  2. Step 2: Create dictionary with names as keys and ages as integer values

    The comprehension uses row['Name'] as key and converts row['Age'] to int for value.
  3. Final Answer:

    import csv with open('data.csv', 'r') as f: reader = csv.DictReader(f) result = {row['Name']: int(row['Age']) for row in reader} print(result) -> Option A
  4. Quick Check:

    DictReader + dict comprehension with int conversion [OK]
Hint: Use DictReader and convert age to int in comprehension [OK]
Common Mistakes:
  • Using csv.reader without column names
  • Swapping keys and values
  • Not converting age to int