Creating DataFrame from list of lists in Pandas - Performance & Efficiency
We want to understand how the time needed to create a DataFrame from a list of lists changes as the list grows.
How does the work increase when we add more rows or columns?
Analyze the time complexity of the following code snippet.
import pandas as pd
# List of lists with data
data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
# Create DataFrame from list of lists
df = pd.DataFrame(data, columns=['A', 'B', 'C'])
print(df)
This code creates a DataFrame from a list of lists, where each inner list is a row.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: Reading each element in the list of lists to build the DataFrame.
- How many times: Once for each element in the input data (rows × columns).
As the number of rows and columns grows, the work grows by the total number of elements.
| Input Size (rows × columns) | Approx. Operations |
|---|---|
| 10 × 3 = 30 | About 30 operations |
| 100 × 3 = 300 | About 300 operations |
| 1000 × 3 = 3000 | About 3000 operations |
Pattern observation: The time grows roughly in direct proportion to the total number of elements.
Time Complexity: O(n × m)
This means the time to create the DataFrame grows linearly with the number of rows (n) times the number of columns (m).
[X] Wrong: "Creating a DataFrame from a list of lists is always very fast and does not depend on data size."
[OK] Correct: The time actually depends on how many elements are in the list. More rows or columns mean more work to build the DataFrame.
Understanding how data size affects DataFrame creation helps you reason about performance in real projects and interviews.
What if we changed the input from a list of lists to a list of dictionaries? How would the time complexity change?
Practice
Solution
Step 1: Understand DataFrame purpose
A DataFrame is a table-like structure with rows and columns to organize data.Step 2: Connect list of lists to DataFrame
A list of lists can be converted into this table format for easier data handling.Final Answer:
Organize data into rows and columns for easy analysis -> Option AQuick Check:
DataFrame = Table format [OK]
- Thinking DataFrame encrypts data
- Confusing DataFrame with image conversion
- Assuming list of lists runs SQL
data = [[1, 2], [3, 4]] with columns named 'A' and 'B'?Solution
Step 1: Recall DataFrame column naming syntax
Use the parametercolumnsto name columns when creating a DataFrame.Step 2: Check each option
Only pd.DataFrame(data, columns=['A', 'B']) usescolumns=['A', 'B'], which is correct syntax.Final Answer:
pd.DataFrame(data, columns=['A', 'B']) -> Option AQuick Check:
Use columns= for column names [OK]
- Using names= instead of columns=
- Using cols= or header= which are invalid here
- Forgetting to pass columns parameter
import pandas as pd data = [[10, 20], [30, 40]] df = pd.DataFrame(data, columns=['X', 'Y']) print(df)
Solution
Step 1: Create DataFrame with given data and columns
The list of lists becomes rows; columns=['X', 'Y'] names columns accordingly.Step 2: Print DataFrame
Output shows index 0 and 1 with values 10,20 and 30,40 under columns X and Y.Final Answer:
X Y 0 10 20 1 30 40 -> Option BQuick Check:
DataFrame prints rows with columns X, Y [OK]
- Swapping row and column values
- Confusing index with columns
- Expecting error without columns parameter
import pandas as pd data = [[1, 2], [3, 4]] df = pd.DataFrame(data, columns=['A']) print(df)
Solution
Step 1: Check data shape and columns length
Each inner list has 2 elements, but columns list has only 1 name.Step 2: Understand pandas error
pandas requires columns length to match number of elements per row.Final Answer:
The columns list length does not match data inner list length -> Option DQuick Check:
Columns count = data columns count [OK]
- Ignoring mismatch between columns and data
- Thinking list of lists is invalid input
- Forgetting to import pandas
sales = [[100, 200], [150, 250], [300, 400]] representing sales in two regions. How do you create a DataFrame with columns 'Region1' and 'Region2' and add a new column 'Total' that sums both regions for each row?Solution
Step 1: Create DataFrame with correct columns
Usecolumns=['Region1', 'Region2']to name columns properly.Step 2: Add 'Total' column by summing the two region columns
Usedf['Total'] = df['Region1'] + df['Region2']to sum row-wise.Final Answer:
df = pd.DataFrame(sales, columns=['Region1', 'Region2']) df['Total'] = df['Region1'] + df['Region2'] print(df) -> Option CQuick Check:
Sum columns row-wise for total [OK]
- Adding lists instead of DataFrame columns
- Using df.sum() without axis=1 for row sums
- Not naming columns when creating DataFrame
Ready to prove it?
Pass the test and this pattern moves unknown
