Pandas Essentials Reference
Core Pandas operations for ETL workflows — reading, exploring, cleaning, transforming, and writing data.
Load a CSV file into a Pandas DataFrame.
Used In: Reading raw CSV files in ETL pipelines.
pd.read_csv(filepath, usecols=None, dtype=None, chunksize=None)import pandas as pd, io
csv = 'name,dept,salary\nAlice,DE,90000\nBob,DS,75000\nCarol,DE,85000'
df = pd.read_csv(io.StringIO(csv))
print(df.shape)(3, 3)Time Complexity: O(N)
Common Mistakes: Not specifying dtype — pandas infers types on every read, which is slow for large files.
Related Methods: pd.read_json(), pd.read_parquet()
Load a JSON file or JSON string into a Pandas DataFrame.
Used In: API response processing, loading JSON exports.
pd.read_json(path_or_buf, orient=None)import pandas as pd
json_data = '[{"name":"Alice","dept":"DE"},{"name":"Bob","dept":"DS"}]'
df = pd.read_json(json_data)
print(df.columns.tolist())['name', 'dept']Time Complexity: O(N)
Related Methods: pd.read_csv()
Quick inspection of a DataFrame's contents, schema, and statistics.
Used In: Data exploration, schema validation, EDA.
df.head(n=5) / df.tail(n=5) / df.info() / df.describe()import pandas as pd, io
csv = 'name,dept,salary\nAlice,DE,90000\nBob,DS,75000'
df = pd.read_csv(io.StringIO(csv))
print(df.head(1))
print(df.shape)# print(df.head(1))
name dept salary
0 Alice DE 90000
# print(df.shape)
(2, 3)Time Complexity: O(N)
Related Methods: df.dtypes, df.columns
Select rows and columns by label (loc) or integer position (iloc).
Used In: Row sampling, column extraction, conditional slicing.
df.loc[row_labels, col_labels] / df.iloc[row_idx, col_idx]import pandas as pd, io
csv = 'name,dept,salary\nAlice,DE,90000\nBob,DS,75000'
df = pd.read_csv(io.StringIO(csv))
print(df.loc[0, 'name']) # label-based
print(df.iloc[1, 2]) # position-based# print(df.loc[0, 'name'])
Alice
# print(df.iloc[1, 2])
75000Time Complexity: O(1) for single element, O(N) for slice
Common Mistakes: Confusing loc[] (label-based) and iloc[] (position-based) — they produce different results on non-integer indexes.
Related Methods: df.at[], df.iat[]
loc uses labels; iloc uses integer positions. With default int index they behave the same but diverge with custom indexes.
Select rows matching a Boolean condition.
Used In: Row filtering in ETL, quality gates.
df[df['col'] condition] or df.query('col condition')import pandas as pd, io
csv = 'name,dept,salary\nAlice,DE,90000\nBob,DS,75000\nCarol,DE,85000'
df = pd.read_csv(io.StringIO(csv))
result = df[(df['dept'] == 'DE') & (df['salary'] > 85000)]
print(result['name'].tolist())['Alice']Time Complexity: O(N)
Common Mistakes: Using 'and' instead of '&' between conditions raises ValueError.
Sort a DataFrame by one or more columns.
Used In: Ranking records, ordering output exports.
df.sort_values(by, ascending=True, na_position='last')import pandas as pd, io
csv = 'name,salary\nAlice,90000\nBob,75000\nCarol,85000'
df = pd.read_csv(io.StringIO(csv))
print(df.sort_values('salary', ascending=False)['name'].tolist())['Alice', 'Carol', 'Bob']Time Complexity: O(N log N)
Remove duplicates, fill missing values, or drop rows with NaN.
Used In: Data cleaning before aggregations.
df.drop_duplicates(subset=None) / df.fillna(value) / df.dropna(subset=None)import pandas as pd
df = pd.DataFrame({'id': [1, 1, 2], 'val': [10, 10, None]})
clean = df.drop_duplicates().fillna(0)
print(clean.values.tolist())[[1.0, 10.0], [2.0, 0.0]]Time Complexity: O(N)
Related Methods: df.isna(), df.notna()
Rename columns or cast column data types.
Used In: Schema normalization, type enforcement.
df.rename(columns={'old': 'new'}) / df['col'].astype(dtype)import pandas as pd, io
csv = 'emp_id,sal_amt\n1,90000\n2,75000'
df = pd.read_csv(io.StringIO(csv))
df = df.rename(columns={'emp_id': 'id', 'sal_amt': 'salary'})
df['salary'] = df['salary'].astype(float)
print(df.dtypes['salary'])float64Time Complexity: O(N)
Apply a function element-wise to a column or row-wise across columns.
Used In: Custom derivations, conditional column creation.
df['col'].apply(func) / df.apply(func, axis=1)import pandas as pd
df = pd.DataFrame({'salary': [90000, 75000, 85000]})
df['band'] = df['salary'].apply(lambda s: 'senior' if s >= 85000 else 'junior')
print(df['band'].tolist())['senior', 'junior', 'senior']Time Complexity: O(N) — slower than vectorized ops
Common Mistakes: Using apply() for simple arithmetic — use vectorized operations instead for 10-100x speedup.
Group rows by key columns and compute aggregate statistics.
Used In: Departmental summaries, reporting aggregations.
df.groupby(keys).agg({'col': 'func'})import pandas as pd, io
csv = 'name,dept,salary\nAlice,DE,90000\nBob,DS,75000\nCarol,DE,85000'
df = pd.read_csv(io.StringIO(csv))
result = df.groupby('dept')['salary'].agg(['mean', 'count'])
print(result.to_dict()){'mean': {'DE': 87500.0, 'DS': 75000.0}, 'count': {'DE': 2, 'DS': 1}}Time Complexity: O(N log N)
Related Methods: groupby().transform(), groupby().filter()
Combine DataFrames by join key (merge) or stacking vertically/horizontally (concat).
Used In: Joining dimension tables, stacking batch files.
pd.merge(df1, df2, on='key', how='inner') / pd.concat([df1, df2])import pandas as pd
emps = pd.DataFrame({'id': [1, 2], 'name': ['Alice', 'Bob']})
depts = pd.DataFrame({'id': [1, 2], 'dept': ['DE', 'DS']})
result = pd.merge(emps, depts, on='id')
print(result.columns.tolist())['id', 'name', 'dept']Time Complexity: O(N log N) for merge
Related Methods: df.join()
Write a DataFrame to a CSV file.
Used In: Exporting cleaned data, writing ETL output files.
df.to_csv(path, index=False, encoding='utf-8')import pandas as pd, io
df = pd.DataFrame({'name': ['Alice'], 'dept': ['DE']})
buf = io.StringIO()
df.to_csv(buf, index=False)
print(buf.getvalue())name,dept
Alice,DE
Time Complexity: O(N)
Common Mistakes: Forgetting index=False — produces an extra unnamed column in the output CSV.