Creating DataFrame from list of dictionaries in Pandas - Performance & Efficiency
We want to understand how the time needed to create a DataFrame changes as the input list grows.
How does the work increase when we add more dictionaries to the list?
Analyze the time complexity of the following code snippet.
import pandas as pd
list_of_dicts = [
{'name': 'Alice', 'age': 25},
{'name': 'Bob', 'age': 30},
{'name': 'Charlie', 'age': 35}
]
df = pd.DataFrame(list_of_dicts)
This code creates a DataFrame from a list where each item is a dictionary representing a row.
Identify the loops, recursion, array traversals that repeat.
- Primary operation: pandas reads each dictionary in the list to build rows.
- How many times: Once for each dictionary in the list (n times).
As the list grows, pandas processes each dictionary one by one to form the DataFrame.
| Input Size (n) | Approx. Operations |
|---|---|
| 10 | About 10 dictionary reads |
| 100 | About 100 dictionary reads |
| 1000 | About 1000 dictionary reads |
Pattern observation: The work grows directly with the number of dictionaries; doubling the list roughly doubles the work.
Time Complexity: O(n)
This means the time to create the DataFrame grows linearly with the number of dictionaries in the list.
[X] Wrong: "Creating a DataFrame from a list of dictionaries is instant no matter the size."
[OK] Correct: Each dictionary must be read and processed, so more dictionaries mean more work and more time.
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 dictionaries to a dictionary of lists? How would the time complexity change?"
Practice
Solution
Step 1: Understand DataFrame creation from list of dicts
Each dictionary in the list is treated as one row in the DataFrame.Step 2: Identify how keys are used
Keys from dictionaries become the column names in the DataFrame.Final Answer:
Each dictionary becomes a row, and keys become column names. -> Option AQuick Check:
List of dicts -> rows, keys -> columns [OK]
- Thinking dictionaries become columns instead of rows
- Assuming keys become row labels
- Believing the DataFrame will be empty
data?Solution
Step 1: Recall pandas DataFrame constructor
The correct way to create a DataFrame from data is usingpd.DataFrame().Step 2: Check method names
There is nofrom_list,create, orlistmethod in pandas DataFrame.Final Answer:
df = pd.DataFrame(data) -> Option AQuick Check:
Use pd.DataFrame() constructor [OK]
- Using non-existent methods like from_list or create
- Confusing DataFrame constructor syntax
- Missing pd prefix or parentheses
import pandas as pd
data = [{'name': 'Alice', 'age': 25}, {'name': 'Bob', 'city': 'NY'}]
df = pd.DataFrame(data)
print(df)What will be the output?
Solution
Step 1: Check keys across dictionaries
Keys are 'name', 'age' in first dict and 'name', 'city' in second dict.Step 2: Understand pandas behavior with missing keys
Pandas creates columns for all keys found and fills missing values with NaN.Final Answer:
DataFrame with columns 'name', 'age', 'city' and NaN where data is missing. -> Option DQuick Check:
Missing keys -> NaN in DataFrame [OK]
- Assuming missing keys cause errors
- Thinking columns are limited to first dict keys
- Ignoring NaN values for missing data
import pandas as pd
data = [{'a': 1, 'b': 2}, {'a': 3, 'c': 4}]
df = pd.DataFrame(data, columns=['a', 'b', 'c', 'd'])
print(df)Solution
Step 1: Understand columns parameter effect
Specifying columns includes those columns in DataFrame, even if missing in data.Step 2: Check missing columns behavior
Columns not found in dictionaries are filled with NaN, no error occurs.Final Answer:
No error; columns not in data will be filled with NaN. -> Option BQuick Check:
Extra columns -> NaN, no error [OK]
- Expecting error for missing columns
- Thinking columns list must match keys exactly
- Assuming DataFrame excludes columns not in data
sales = [
{'product': 'A', 'units': 10, 'price': 2.5},
{'product': 'B', 'units': 5},
{'product': 'A', 'price': 2.5},
{'product': 'C', 'units': 7, 'price': 3.0}
]You want to create a DataFrame and add a new column
'total' which is units * price, treating missing values as zero. Which code correctly does this?Solution
Step 1: Create DataFrame from list of dicts
Usepd.DataFrame(sales)to convert list to DataFrame with NaNs for missing keys.Step 2: Replace NaN with 0 before multiplication
Fill missing 'units' and 'price' with 0 to avoid NaN in multiplication.Step 3: Calculate 'total' as product of 'units' and 'price'
Multiply filled columns to get correct totals.Final Answer:
Fill NaNs first, then multiply -> Option CQuick Check:
Fill NaN before math to avoid NaN results [OK]
- Multiplying columns with NaN without filling
- Adding instead of multiplying for total
- Filling NaN after multiplication
Ready to prove it?
Pass the test and this pattern moves unknown
