📖 Scenario: Imagine you have a list of daily sales numbers for a small store. You want to calculate the total sales and also increase each day's sales by 10% to see the effect of a price increase.
🎯 Goal: You will create a list of sales numbers, set a percentage increase, use a loop and then vectorized operations with NumPy to increase sales, and finally print the results to compare.
📋 What You'll Learn
Create a list of daily sales numbers called sales with these exact values: 100, 150, 200, 130, 170
Create a variable called increase_percent and set it to 10
Use a for loop with variable i to increase each sale in sales by increase_percent percent and store results in a new list called increased_sales_loop
Use NumPy vectorized operations to increase sales by increase_percent percent and store results in a NumPy array called increased_sales_vectorized
Print both increased_sales_loop and increased_sales_vectorized to compare the results
💡 Why This Matters
🌍 Real World
Retail stores and businesses often need to quickly update prices or sales data and analyze the effects. Vectorized operations help do this faster and with simpler code.
💼 Career
Data analysts and scientists use vectorized operations in Python with libraries like NumPy to handle large datasets efficiently, making their work faster and more reliable.
Progress0 / 4 steps
1
Create the sales data list
Create a list called sales with these exact values: 100, 150, 200, 130, 170
Data Analysis Python
Hint
Use square brackets [] to create a list and separate numbers with commas.
2
Set the increase percentage
Create a variable called increase_percent and set it to 10
Data Analysis Python
Hint
Just assign the number 10 to the variable increase_percent.
3
Increase sales using a for loop
Use a for loop with variable i to increase each sale in sales by increase_percent percent. Store the results in a new list called increased_sales_loop
Data Analysis Python
Hint
Use range(len(sales)) to loop over indexes, calculate increased value, and add to the new list.
4
Increase sales using NumPy vectorized operations and print results
Import NumPy as np. Use NumPy vectorized operations to increase sales by increase_percent percent and store the result in a NumPy array called increased_sales_vectorized. Then print both increased_sales_loop and increased_sales_vectorized
Data Analysis Python
Hint
Use np.array(sales) to convert list to array, then multiply by 1 + increase_percent / 100. Use print() to show both results.
Practice
(1/5)
1. What is the main advantage of using vectorized operations over loops in data analysis?
easy
A. They are easier to write for beginners
B. They use less memory by storing fewer variables
C. They perform calculations faster by handling many elements at once
D. They always produce more accurate results
Solution
Step 1: Understand vectorized operations
Vectorized operations process multiple data points simultaneously instead of one by one.
Step 2: Compare with loops
Loops handle data elements one at a time, which is slower for large data.
Final Answer:
They perform calculations faster by handling many elements at once -> Option C
Quick Check:
Vectorized = faster calculations [OK]
Hint: Vectorized means many at once, loops mean one by one [OK]
Common Mistakes:
Thinking vectorized code always uses less memory
Believing loops are always easier for beginners
Assuming vectorized operations improve accuracy
2. Which of the following is the correct syntax to add two numpy arrays a and b using vectorized operations?
easy
A. result = a + b()
B. result = add(a, b)
C. result = a.add(b)
D. result = a + b
Solution
Step 1: Recall numpy addition syntax
Adding two numpy arrays element-wise is done simply by a + b.
Step 2: Check other options
add(a, b) is not a direct function call without importing, a.add(b) is invalid, and a + b() is a syntax error.
Final Answer:
result = a + b -> Option D
Quick Check:
Use + for numpy array addition [OK]
Hint: Use + to add numpy arrays directly [OK]
Common Mistakes:
Trying to call arrays as functions like b()
Using methods that don't exist on numpy arrays
Forgetting to import numpy functions before use
3. What will be the output of this code?
import numpy as np
arr = np.array([1, 2, 3, 4])
result = []
for x in arr:
result.append(x * 2)
print(result)
medium
A. [1, 2, 3, 4]
B. [2, 4, 6, 8]
C. [3, 6, 9, 12]
D. Error: cannot multiply numpy array element
Solution
Step 1: Understand the loop operation
The loop goes through each element in arr and multiplies it by 2, appending to result.
Step 2: Calculate each multiplication
1*2=2, 2*2=4, 3*2=6, 4*2=8, so result becomes [2, 4, 6, 8].
Final Answer:
[2, 4, 6, 8] -> Option B
Quick Check:
Loop multiply each element by 2 = [2,4,6,8] [OK]
Hint: Loop multiplies each element by 2, collect results [OK]
Common Mistakes:
Confusing element-wise multiplication with array multiplication
Expecting original array unchanged
Thinking numpy arrays can't be iterated
4. Identify the error in this code that tries to double each element of a numpy array using a loop:
import numpy as np
arr = np.array([1, 2, 3])
result = np.array([])
for x in arr:
result = np.append(result, x * 2)
print(result)
medium
A. Using np.append inside the loop is inefficient and slow
B. np.array([]) creates an integer array, causing type errors
C. Loop variable x is not defined correctly
D. The print statement is missing parentheses
Solution
Step 1: Analyze np.append usage in loop
Using np.append inside a loop creates a new array each time, which is slow and inefficient.
Step 2: Check other options
np.array([]) creates a float array, not integer error; x is correctly defined; print has parentheses.
Final Answer:
Using np.append inside the loop is inefficient and slow -> Option A
Quick Check:
Appending in loop = slow, better vectorize [OK]
Hint: Avoid np.append inside loops; use vectorized ops instead [OK]
Common Mistakes:
Thinking np.append causes errors instead of inefficiency
Believing loop variable is undefined
Ignoring print function syntax
5. You have a large pandas DataFrame df with a column 'values'. Which method is the best to create a new column 'double' that is twice the 'values' column, considering performance?
hard
A. Use df['double'] = df['values'] * 2 for vectorized operation
B. Use a while loop with index to assign doubled values
C. Use df.apply(lambda x: x['values'] * 2, axis=1) to create the column
D. Use a for loop to iterate rows and assign doubled values one by one
Solution
Step 1: Compare methods for performance
Vectorized operations like df['values'] * 2 are fastest and most efficient in pandas.
Step 2: Evaluate other options
Loops and apply are slower because they process rows one by one.
Final Answer:
Use df['double'] = df['values'] * 2 for vectorized operation -> Option A
Quick Check:
Vectorized pandas ops = best performance [OK]
Hint: Multiply whole column at once for speed [OK]
Common Mistakes:
Using loops instead of vectorized pandas operations
Choosing apply which is slower than vectorized ops
Not creating new column properly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.