pandas Cheatsheet
Series and DataFrame
Use this pandas reference while you build software engineering projects, review code for technical interview prep, or polish examples for a software engineer resume.
Setup and Core Objects
import pandas as pd import numpy as np pd.__version__ # check installed version # Display options pd.set_option("display.max_columns", None) pd.set_option("display.max_rows", 100) pd.set_option("display.float_format", "{:.2f}".format)
| Object | Description |
|---|---|
Series | 1-D labeled array: values + index |
DataFrame | 2-D labeled table: columns of Series sharing a row index |
Index | Immutable axis labels (rows or columns) |
Creating a Series
import pandas as pd import numpy as np # From list s = pd.Series([10, 20, 30]) # From list with custom index s = pd.Series([10, 20, 30], index=["a", "b", "c"]) # From dict (keys become index) s = pd.Series({"a": 10, "b": 20, "c": 30}) # From scalar (broadcast) s = pd.Series(5, index=["a", "b", "c"]) # With name s = pd.Series([1, 2, 3], name="score")
Series Attributes
| Attribute | Description |
|---|---|
s.values | Underlying NumPy array (or ExtensionArray) |
s.index | Index object |
s.dtype | Data type |
s.name | Series name |
s.shape | Tuple (n,) |
s.size | Total number of elements |
s.nbytes | Memory usage in bytes |
s.is_monotonic_increasing | True if values are monotonically increasing |
Creating a DataFrame
# From dict of lists (keys = column names) df = pd.DataFrame({"name": ["Alice", "Bob"], "age": [30, 25]}) # From list of dicts (each dict = one row) df = pd.DataFrame([{"name": "Alice", "age": 30}, {"name": "Bob", "age": 25}]) # From 2-D NumPy array df = pd.DataFrame(np.arange(12).reshape(3, 4), columns=["a", "b", "c", "d"]) # From another DataFrame (copy) df2 = pd.DataFrame(df) # With explicit index df = pd.DataFrame({"x": [1, 2, 3]}, index=["r1", "r2", "r3"]) # Empty DataFrame with schema df = pd.DataFrame(columns=["id", "value"], dtype=float)
DataFrame Attributes
| Attribute | Description |
|---|---|
df.shape | (rows, cols) |
df.dtypes | Per-column dtype Series |
df.columns | Column Index |
df.index | Row Index |
df.values | Underlying 2-D NumPy array |
df.size | Total element count |
df.ndim | Always 2 |
df.empty | True if any axis is length 0 |
df.axes | List [row_index, col_index] |
df.memory_usage(deep=True) | Bytes per column |
Inspecting a DataFrame
df.head(5) # first N rows (default 5) df.tail(5) # last N rows df.sample(10) # random N rows df.info() # column dtypes + non-null counts df.describe() # stats for numeric cols df.describe(include="all") # stats for all cols df.nunique() # unique value count per column df.value_counts() # (on Series) frequency table
Index Operations
# Reset index (moves index to a column) df.reset_index() df.reset_index(drop=True) # discard old index # Set a column as index df.set_index("name") df.set_index(["year", "month"]) # MultiIndex # Rename index df.index.rename("row_id", inplace=True) # Re-index to new label set (introduces NaN for missing) df.reindex([0, 1, 2, 99]) # Sort by index df.sort_index() df.sort_index(ascending=False)
Copying and Casting
df_copy = df.copy() # deep copy (default) df_copy = df.copy(deep=False) # shallow copy # Cast a column df["age"] = df["age"].astype(int) df = df.astype({"age": int, "score": float}) # Convert Series dtype s = s.astype("category") s = s.astype("string") # pd.StringDtype (nullable)
Converting Between Series and DataFrame
# Series → single-column DataFrame s.to_frame() s.to_frame(name="value") # Single-column DataFrame → Series df["col"].squeeze() # DataFrame column as Series s = df["col"] # Copy-on-Write (default in 3.0): behaves as a copy — writing to s never mutates df s = df["col"].copy() # explicit independent copy
Common Constructor Patterns
# Range index (implicit, 0-based) df = pd.DataFrame({"a": range(5)}) # DatetimeIndex as row index dates = pd.date_range("2024-01-01", periods=5, freq="D") df = pd.DataFrame({"v": range(5)}, index=dates) # MultiIndex DataFrame arrays = [["A", "A", "B", "B"], [1, 2, 1, 2]] idx = pd.MultiIndex.from_arrays(arrays, names=["letter", "number"]) df = pd.DataFrame({"val": [10, 20, 30, 40]}, index=idx)