Memory-efficient operations help you work with large data without using too much computer memory. This keeps your computer fast and avoids crashes.
Memory-efficient operations in Data Analysis Python
import pandas as pd # Use chunksize to read large CSV in parts for chunk in pd.read_csv('large_file.csv', chunksize=10000): process(chunk) # Use dtype to reduce memory of columns df = pd.read_csv('file.csv', dtype={'column1': 'int32', 'column2': 'float32'})
Reading data in chunks lets you handle big files piece by piece.
Setting column data types smaller than default saves memory.
import pandas as pd # Read CSV in small parts for chunk in pd.read_csv('data.csv', chunksize=5000): print(chunk.shape)
import pandas as pd dtypes = {'age': 'int8', 'salary': 'float32'} df = pd.read_csv('employees.csv', dtype=dtypes) print(df.memory_usage(deep=True))
import numpy as np # Convert a column to category type df['city'] = df['city'].astype('category') print(df.memory_usage(deep=True))
This program creates a big table with 1 million rows. It shows memory used before and after changing data types to save memory.
import pandas as pd import numpy as np # Create a large DataFrame with default types size = 1000000 names = ['Alice', 'Bob', 'Charlie', 'David'] # Default object type for names uses more memory df = pd.DataFrame({ 'id': np.arange(size), 'age': np.random.randint(18, 70, size), 'name': np.random.choice(names, size) }) print('Memory usage before optimization:') print(df.memory_usage(deep=True)) # Convert 'name' column to category to save memory df['name'] = df['name'].astype('category') # Change 'age' to smaller integer type df['age'] = df['age'].astype('int8') print('\nMemory usage after optimization:') print(df.memory_usage(deep=True))
Using smaller data types can cause errors if values don't fit, so choose carefully.
Converting text columns to 'category' is very effective when many repeated values exist.
Reading data in chunks is useful when you cannot load all data at once.
Memory-efficient operations help handle big data on limited memory.
Use chunked reading and smaller data types to save memory.
Converting text columns to 'category' type reduces memory for repeated values.
Practice
Solution
Step 1: Understand memory usage of data types
Text columns with repeated values use more memory as strings than as categories.Step 2: Apply category conversion
Converting text columns to 'category' type stores unique values once, saving memory.Final Answer:
Convert text columns to 'category' data type -> Option CQuick Check:
Category type reduces memory for repeated text [OK]
- Thinking increasing integer size saves memory
- Loading full dataset without chunking
- Using print for memory optimization
Solution
Step 1: Recall pandas chunk reading parameter
The correct parameter to read in chunks is 'chunksize'.Step 2: Match syntax
Only pd.read_csv('file.csv', chunksize=1000) uses 'chunksize=1000', which is correct syntax.Final Answer:
pd.read_csv('file.csv', chunksize=1000) -> Option AQuick Check:
chunksize=1000 reads file in 1000-row chunks [OK]
- Using 'chunk' instead of 'chunksize'
- Using 'size' or 'batch' which are invalid
- Forgetting to specify chunk size
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': np.random.randint(0, 100, 5),
'B': ['cat', 'dog', 'cat', 'dog', 'cat']
})
df['B'] = df['B'].astype('category')
print(df.memory_usage(deep=True))Solution
Step 1: Understand astype('category') effect
Converting column 'B' to category reduces memory by storing unique values once.Step 2: Interpret memory_usage(deep=True)
This method shows memory used by each column including actual string data size.Final Answer:
Shows memory usage with 'B' column using less memory than object type -> Option DQuick Check:
Category type reduces memory usage [OK]
- Expecting error from astype conversion
- Thinking category uses more memory
- Confusing print output with DataFrame display
import pandas as pd
df = pd.read_csv('data.csv')
df['col'] = df['col'].astype('category')
df = df.astype({'num_col': 'int8'})
print(df.memory_usage())Solution
Step 1: Check int8 range suitability
int8 supports values from -128 to 127; larger values cause overflow.Step 2: Identify potential overflow risk
If 'num_col' has values outside int8 range, conversion causes incorrect data.Final Answer:
Using 'int8' may cause overflow if values exceed range -> Option AQuick Check:
int8 range limits can cause data errors [OK]
- Assuming all int conversions are safe
- Believing memory_usage() ignores changes
- Thinking astype fails after CSV read
Solution
Step 1: Use category for repeated strings
Converting 'status' to category stores unique values once, saving memory.Step 2: Downcast numeric columns
Downcasting numeric columns to smallest integer type reduces memory without losing data.Step 3: Evaluate other options
Keeping strings as object or dropping columns wastes memory or data; object type uses more memory.Final Answer:
Convert 'status' to category type and downcast numeric columns to smallest possible integer type. -> Option BQuick Check:
Category + downcast = best memory saving [OK]
- Dropping useful columns unnecessarily
- Keeping strings as object wastes memory
- Converting all to object increases memory
Ready to prove it?
Pass the test and this pattern moves unknown
