📖 Scenario: You work as a data analyst for a small online store. You have a table of sales data, but some columns and rows are not needed for your analysis.
🎯 Goal: You will learn how to remove unwanted columns and rows from a table using pandas. This helps clean your data and focus on what matters.
📋 What You'll Learn
Create a pandas DataFrame with given sales data
Create a list of columns to drop
Drop specified columns from the DataFrame
Drop specified rows from the DataFrame
Print the final cleaned DataFrame
💡 Why This Matters
🌍 Real World
Cleaning data by removing unnecessary columns and rows is a common step before analysis or visualization.
💼 Career
Data analysts and data scientists often need to clean datasets to focus on relevant information and improve model accuracy.
Progress0 / 4 steps
1
Create the sales data DataFrame
Create a pandas DataFrame called sales with these exact columns and rows: 'OrderID': [101, 102, 103, 104, 105], 'Product': ['Shirt', 'Pants', 'Hat', 'Shoes', 'Socks'], 'Quantity': [2, 1, 4, 1, 3], 'Price': [20, 40, 15, 60, 5], 'Discount': [0, 5, 0, 10, 0]
Pandas
Hint
Use pd.DataFrame with a dictionary of lists for each column.
2
Create a list of columns to drop
Create a list called drop_columns containing the column names 'Discount' and 'Price' that you want to remove from the DataFrame.
Pandas
Hint
Use a list with the exact column names to drop.
3
Drop the specified columns and rows
Create a new DataFrame called cleaned_sales by dropping the columns in drop_columns from sales. Then drop the rows with index 1 and 3 from cleaned_sales.
Pandas
Hint
Use drop(columns=...) to remove columns and drop(index=[...]) to remove rows.
4
Print the cleaned DataFrame
Print the cleaned_sales DataFrame to see the final table after dropping columns and rows.
Pandas
Hint
Use print(cleaned_sales) to display the DataFrame.
Practice
(1/5)
1. What does the drop() function do in pandas?
easy
A. Removes specified rows or columns from a DataFrame
B. Adds new rows or columns to a DataFrame
C. Sorts the DataFrame by index or column values
D. Calculates summary statistics of the DataFrame
Solution
Step 1: Understand the purpose of drop()
The drop() function is used to remove data, either rows or columns, from a DataFrame.
Step 2: Identify what drop() removes
It specifically removes rows or columns based on labels, not adding or sorting data.
Final Answer:
Removes specified rows or columns from a DataFrame -> Option A
Quick Check:
drop() removes rows/columns [OK]
Hint: Remember: drop means remove rows or columns [OK]
Common Mistakes:
Thinking drop adds data instead of removing
Confusing drop with sort or describe functions
Assuming drop changes data without specifying inplace
2. Which of the following is the correct syntax to drop the column named 'Age' from a DataFrame df?
easy
A. df.drop('Age', axis=0)
B. df.drop('Age', axis=1)
C. df.drop(column='Age')
D. df.drop('Age')
Solution
Step 1: Identify axis for columns
In pandas, axis=1 means columns, so to drop a column, use axis=1.
Step 2: Check syntax correctness
The syntax df.drop('Age', axis=1) correctly drops the column named 'Age'. df.drop(column='Age') is close but incorrect syntax; it should be df.drop(columns=['Age']) with a list.
Final Answer:
df.drop('Age', axis=1) -> Option B
Quick Check:
Drop column uses axis=1 [OK]
Hint: Use axis=1 to drop columns, axis=0 for rows [OK]
Common Mistakes:
Using axis=0 to drop columns
Forgetting to specify axis parameter
Using drop with wrong parameter names
3. Given the DataFrame df below:
Name Age City
0 John 25 NY
1 Anna 30 LA
2 Mike 22 SF
What is the output of df.drop(1, axis=0)?
medium
A.
Name Age City
0 John 25 NY
1 Anna 30 LA
B.
Name Age City
1 Anna 30 LA
C.
Name Age City
0 John 25 NY
2 Mike 22 SF
D.
Name Age City
0 John 25 NY
1 Anna 30 LA
2 Mike 22 SF
Solution
Step 1: Understand dropping rows by index
Using drop(1, axis=0) removes the row with index 1, which is the row for Anna.
Step 2: Identify remaining rows
Rows with index 0 (John) and 2 (Mike) remain, so the output excludes Anna's row.
Final Answer:
Name Age City
0 John 25 NY
2 Mike 22 SF -> Option C
Quick Check:
Drop row index 1 removes Anna [OK]
Hint: Drop row by index with axis=0 [OK]
Common Mistakes:
Confusing axis=0 and axis=1
Expecting row to be removed by label instead of index
Not realizing drop returns a new DataFrame by default
4. What is wrong with this code snippet to drop the column 'Salary' from DataFrame df?
df.drop('Salary')
medium
A. drop() cannot remove columns
B. Should use inplace=True to drop the column
C. Column name should be in a list like ['Salary']
D. Missing axis=1 to specify dropping a column
Solution
Step 1: Check default axis in drop()
By default, drop() assumes axis=0, which means it tries to drop a row, not a column.
Step 2: Specify axis=1 to drop a column
To drop a column, you must specify axis=1. Without it, pandas looks for a row named 'Salary' and fails if none exists.
Final Answer:
Missing axis=1 to specify dropping a column -> Option D
Quick Check:
Drop columns requires axis=1 [OK]
Hint: Always specify axis=1 to drop columns [OK]
Common Mistakes:
Forgetting axis=1 when dropping columns
Assuming drop changes DataFrame without inplace=True
Using drop with a single string but wrong axis
5. You have a DataFrame df with columns ['Name', 'Age', 'City', 'Salary']. You want to remove the rows with index 0 and 2, and also drop the column 'Salary' in one line without changing the original DataFrame. Which code does this correctly?
hard
A. df.drop([0, 2], axis=0).drop('Salary', axis=1)
B. df.drop([0, 2, 'Salary'], axis=0)
C. df.drop(['Salary'], axis=1).drop([0, 2], axis=0, inplace=True)
D. df.drop([0, 2], axis=1).drop('Salary', axis=0)
Solution
Step 1: Drop rows with index 0 and 2
Use df.drop([0, 2], axis=0) to remove rows 0 and 2 without changing original DataFrame.
Step 2: Drop column 'Salary' from the result
Chain .drop('Salary', axis=1) to remove the column from the intermediate DataFrame.
Step 3: Verify no inplace=True used
Since we want to keep original DataFrame unchanged, do not use inplace=True. The chained drops return a new DataFrame.
Final Answer:
df.drop([0, 2], axis=0).drop('Salary', axis=1) -> Option A
Quick Check:
Chain drops with correct axis, no inplace [OK]
Hint: Chain drop with axis=0 for rows, axis=1 for columns [OK]
Common Mistakes:
Mixing axis values for rows and columns
Using inplace=True which changes original DataFrame
Trying to drop rows and columns in one drop call incorrectly
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.