📖 Scenario: You work in a small store and want to analyze sales data. You have sales numbers for different products stored in a NumPy array. You want to use Pandas to organize this data with product names and then calculate some statistics.
🎯 Goal: Create a Pandas DataFrame from a NumPy array of sales data with product names as the index. Then calculate the average sales using NumPy functions integrated with Pandas.
📋 What You'll Learn
Create a NumPy array with exact sales data
Create a Pandas DataFrame using the NumPy array and product names
Use a NumPy function to calculate the average sales from the DataFrame
Print the average sales value
💡 Why This Matters
🌍 Real World
Stores and businesses often collect sales data as numbers. Using NumPy and Pandas together helps organize and analyze this data quickly.
💼 Career
Data analysts and scientists use NumPy and Pandas daily to clean, organize, and analyze data for reports and decision making.
Progress0 / 4 steps
1
Create the sales data as a NumPy array
Create a NumPy array called sales_data with these exact values: 100, 150, 200, 130, 170.
NumPy
Hint
Use np.array and pass the list of numbers inside square brackets.
2
Create a Pandas DataFrame with product names
Create a list called products with these exact names: 'Apples', 'Bananas', 'Cherries', 'Dates', 'Elderberries'. Then create a Pandas DataFrame called df using sales_data as the data and products as the index.
NumPy
Hint
Use pd.DataFrame with sales_data as data, products as index, and set column name to 'Sales'.
3
Calculate the average sales using NumPy
Use the NumPy function np.mean() on the 'Sales' column of the DataFrame df to calculate the average sales. Store the result in a variable called average_sales.
NumPy
Hint
Use np.mean() and pass df['Sales'] as the argument.
4
Print the average sales
Print the value of average_sales using a print() statement.
NumPy
Hint
Use print(average_sales) to display the average sales.
Practice
(1/5)
1. What does the to_numpy() method do when used on a Pandas DataFrame column?
easy
A. Converts the column to a Pandas Series
B. Converts the column to a Python list
C. Converts the column to a NumPy array
D. Converts the column to a dictionary
Solution
Step 1: Understand the method purpose
The to_numpy() method is designed to convert Pandas data structures into NumPy arrays.
Step 2: Apply to a DataFrame column
When called on a DataFrame column, it returns the data as a NumPy array, which is useful for numerical operations.
Final Answer:
Converts the column to a NumPy array -> Option C
Quick Check:
to_numpy() = NumPy array [OK]
Hint: Remember: to_numpy() always returns a NumPy array [OK]
Common Mistakes:
Confusing to_numpy() with to_list()
Thinking it returns a Pandas Series
Assuming it converts to a dictionary
2. Which of the following is the correct syntax to convert a Pandas DataFrame column named 'age' to a NumPy array?
easy
A. df['age'].to_numpy()
B. np.to_numpy(df['age'])
C. df.to_numpy('age')
D. df.age.numpy()
Solution
Step 1: Identify the correct method call
The to_numpy() method is called on a Pandas Series or DataFrame column, so df['age'].to_numpy() is correct.
Step 2: Check other options for errors
np.to_numpy() does not exist, df.to_numpy('age') is invalid syntax, and df.age.numpy() is not a valid method.
Final Answer:
df['age'].to_numpy() -> Option A
Quick Check:
Correct method call = df['age'].to_numpy() [OK]
Hint: Use to_numpy() directly on the DataFrame column [OK]
Common Mistakes:
Trying to call to_numpy() from numpy module
Passing column name as argument to to_numpy()
Using .numpy() instead of .to_numpy()
3. Given the code below, what is the output of result?
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
arr = df['A'].to_numpy()
result = np.sum(arr * 2)
medium
A. 36
B. 12
C. 21
D. 18
Solution
Step 1: Convert column 'A' to NumPy array
df['A'] is [1, 2, 3], so arr = [1, 2, 3].
Step 2: Multiply array by 2 and sum
arr * 2 = [2, 4, 6]. Sum is 2 + 4 + 6 = 12.
Step 3: Match to options
The calculated sum is 12, which matches 12.
Final Answer:
12 -> Option B
Quick Check:
Sum of doubled array = 12 [OK]
Hint: Multiply array first, then sum to avoid confusion [OK]
Common Mistakes:
Summing before multiplying
Confusing DataFrame with NumPy array
Misreading the multiplication factor
4. Identify the error in the following code snippet:
import pandas as pd
import numpy as np
df = pd.DataFrame({'X': [10, 20, 30]})
arr = df.X.to_numpy
print(np.mean(arr))
medium
A. Missing parentheses after to_numpy
B. DataFrame column 'X' does not exist
C. np.mean cannot be applied to NumPy arrays
D. print statement syntax is incorrect
Solution
Step 1: Check method call syntax
The code uses df.X.to_numpy without parentheses, so it assigns the method itself, not the array.
Step 2: Understand the impact
Passing a method object to np.mean() causes an error because it's not an array.
Final Answer:
Missing parentheses after to_numpy -> Option A
Quick Check:
Method call needs () = Missing parentheses after to_numpy [OK]
Hint: Always add () to call methods like to_numpy() [OK]
Common Mistakes:
Forgetting parentheses on method calls
Assuming attribute access returns data
Misunderstanding error messages
5. You have a Pandas DataFrame df with columns 'height' and 'weight'. You want to create a new NumPy array BMI using the formula weight / (height/100)**2. Which code correctly uses NumPy with Pandas to compute BMI?
hard
A. bmi = df['weight'].tolist() / np.array(df['height'] / 100) ** 2
B. bmi = df['weight'].divide((df['height'] / 100) ** 2)
C. bmi = df['weight'].to_numpy() / (df['height'].to_numpy() / 100) ** 2
D. bmi = df['weight'] / (df['height'] / 100) ** 2
Solution
Step 1: Understand Pandas operations
bmi = df['weight'] / (df['height'] / 100) ** 2 uses Pandas Series operations which support element-wise division and return a Series, which can be used as a NumPy array if needed.
Step 2: Check other options
bmi = df['weight'].divide((df['height'] / 100) ** 2) uses .divide(), which is similar to bmi = df['weight'] / (df['height'] / 100) ** 2 and returns a Series. bmi = df['weight'].to_numpy() / (df['height'].to_numpy() / 100) ** 2 converts to NumPy arrays explicitly, which is correct but not necessary. bmi = df['weight'].tolist() / np.array(df['height'] / 100) ** 2 uses .tolist() which returns a list and will cause a TypeError when dividing by a NumPy array.
Step 3: Choose the best option
bmi = df['weight'] / (df['height'] / 100) ** 2 is the most straightforward and idiomatic Pandas way to compute BMI, returning a Series that behaves like a NumPy array for most purposes.