Python Pandas Practicals – 10 Examples

Funpedia.in — Learn Pandas with Hands-on Practice

Practical 1: Create a DataFrame

import pandas as pd

data = {
    "Name": ["John", "Anna", "Peter"],
    "Age": [24, 22, 29],
    "City": ["Delhi", "Mumbai", "Chennai"]
}

df = pd.DataFrame(data)
print(df)
        

Practical 2: Read a CSV File

import pandas as pd

df = pd.read_csv("students.csv")
print(df)
        

Practical 3: Select Columns & Rows

import pandas as pd

df = pd.DataFrame({
    "Name": ["A", "B", "C"],
    "Marks": [80, 90, 70],
    "Age": [15, 16, 15]
})

print(df["Name"])           # column
print(df.iloc[1])           # row by index
print(df.iloc[0:2])         # multiple rows
        

Practical 4: Filter Rows

import pandas as pd

df = pd.DataFrame({
    "Name": ["Jhon", "Sam", "Riya"],
    "Marks": [45, 85, 92]
})

print(df[df["Marks"] > 80])
        

Practical 5: Add & Remove Columns

import pandas as pd

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6]
})

df["C"] = df["A"] + df["B"]     # add column
print("After adding:\n", df)

df = df.drop("B", axis=1)       # remove column
print("After removing:\n", df)
        

Practical 6: Handle Missing Values

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "A": [1, 2, np.nan],
    "B": [4, np.nan, 6]
})

print("Fill missing with 0:\n", df.fillna(0))
print("Drop rows with missing:\n", df.dropna())
        

Practical 7: Sort Data

import pandas as pd

df = pd.DataFrame({
    "Name": ["John", "Anna", "Peter"],
    "Marks": [78, 85, 65]
})

print(df.sort_values("Marks"))
        

Practical 8: Describe Statistics

import pandas as pd

df = pd.DataFrame({
    "Age": [10, 20, 30, 40, 50],
    "Marks": [60, 70, 80, 90, 100]
})

print(df.describe())
        

Practical 9: GroupBy Example

import pandas as pd

df = pd.DataFrame({
    "City": ["Delhi", "Delhi", "Mumbai", "Chennai"],
    "Sales": [200, 150, 300, 250]
})

grouped = df.groupby("City")["Sales"].sum()
print(grouped)
        

Practical 10: Merge Two DataFrames

import pandas as pd

df1 = pd.DataFrame({
    "ID": [1, 2, 3],
    "Name": ["A", "B", "C"]
})

df2 = pd.DataFrame({
    "ID": [1, 2, 3],
    "Marks": [90, 85, 88]
})

merged = pd.merge(df1, df2, on="ID")
print(merged)
        

Practical 11: Student Marksheet using Pandas

import pandas as pd

# Create marksheet data
data = {
    "Name": ["Alice", "Bob", "Charlie", "David"],
    "Math": [85, 92, 88, 79],
    "Science": [90, 85, 91, 92],
    "English": [80, 87, 85, 78],
    "History": [70, 75, 88, 90]
}

df = pd.DataFrame(data)

# Total and Average
df["Total"] = df[["Math","Science","English","History"]].sum(axis=1)
df["Average"] = df[["Math","Science","English","History"]].mean(axis=1)

# Rank based on Total marks
df["Rank"] = df["Total"].rank(ascending=False, method="dense")

print("Marksheet:")
print(df)

# First Rank Student
print("\nFirst Rank Student:")
print(df.loc[df["Rank"] == 1, ["Name", "Total"]])

# Subject-wise Highest Marks
print("\nSubject-wise Highest Marks:")
print(df[["Math","Science","English","History"]].max())
    

Practical 12: Random Student Performance Analysis using NumPy & Pandas

import numpy as np
import pandas as pd

# Set seed for reproducibility
np.random.seed(42)

# Student names
students = ["Amee", "Brij", "Chetan", "Dolly", "Eva"]

# Generate random marks (between 50 and 100)
marks = np.random.randint(50, 101, size=(5, 4))

# Create DataFrame
df = pd.DataFrame(
    marks,
    columns=["Math", "Science", "English", "History"]
)

df.insert(0, "Name", students)

# Total and Average
df["Total"] = df[["Math","Science","English","History"]].sum(axis=1)
df["Average"] = df[["Math","Science","English","History"]].mean(axis=1)

# Grade Assignment
df["Grade"] = pd.cut(
    df["Average"],
    bins=[0, 60, 75, 90, 100],
    labels=["C", "B", "A", "A+"]
)

print("Student Performance Report:")
print(df)

# Top Performer
print("\nTop Performer:")
print(df.loc[df["Total"].idxmax(), ["Name", "Total"]])

# Subject-wise Statistics
print("\nSubject-wise Statistics:")
print(df[["Math","Science","English","History"]].agg(["min","max","mean"]))