Introduction
This lab guides you through various techniques to speed up operations on pandas DataFrame using Cython, Numba, and pandas.eval(). These techniques can provide significant speed improvements when working with large datasets.
VM Tips
After the VM startup is done, click the top left corner to switch to the Notebook tab to access Jupyter Notebook for practice.
Sometimes, you may need to wait a few seconds for Jupyter Notebook to finish loading. The validation of operations cannot be automated because of limitations in Jupyter Notebook.
If you face issues during learning, feel free to ask Labby. Provide feedback after the session, and we will promptly resolve the problem for you.
Setup and Create Sample Data
Before we start, let's import necessary modules and create a sample DataFrame.
## Import necessary modules
import pandas as pd
import numpy as np
## Create a sample DataFrame
df = pd.DataFrame(
{
"a": np.random.randn(1000),
"b": np.random.randn(1000),
"N": np.random.randint(100, 1000, (1000)),
"x": "x",
}
)
df
Implementing Pure Python Function
We will begin by creating a function in pure Python that operates row-wise on the DataFrame.
## Define a function
def f(x):
return x * (x - 1)
## Define another function that uses the first function
def integrate_f(a, b, N):
s = 0
dx = (b - a) / N
for i in range(N):
s += f(a + i * dx)
return s * dx
Summary
Congratulations! You have completed the Speed Up Pandas Operations lab. You can practice more labs in LabEx to improve your skills.