Free tutorials & notes in Hindi & English · Clean code examples 🧰 Free PDF & Image Tools →
🏆 Project & Revision  ·  Lesson 23

Project Based Learning (Sample Project)

What is project-based learning?

In project-based learning you learn by solving a real problem from start to finish – collecting data, writing code, analysing results and presenting them. It builds skills that exams alone cannot test: planning, teamwork and communication.

Approach for solving a project

  1. 1Identify the problem and the users
  2. 2Plan: list tasks, tools and a timeline
  3. 3Collect data (survey, Google Form, CSV, MySQL)
  4. 4Process and analyse data with pandas
  5. 5Visualise with Matplotlib and interpret
  6. 6Test, document and present the result
Six stages of a data project

Teamwork

🗣️
CommunicationShare progress and problems openly.
🧩
Divide workEach member owns a part – data, code, charts, report.
🤝
RespectListen to ideas; decide together.
⏰
DeadlinesTrack tasks on a shared checklist.
Good team habits

Project ideas

  • School result analysis (shown below)
  • Canteen sales and stock analysis
  • Weather or air-quality data of your city
  • Library book issue analysis
  • Survey on students' screen time and sleep
  • Cricket / IPL player statistics

Sample project: Result Analysis

Aim: analyse the marks of a class to find averages, the topper, grade distribution and section-wise performance. Tools: Python, pandas, Matplotlib, CSV.

class12_result.csvpandas: Total, %, GradeAnalysisChartsMenu program
Project flow

Step 1: Collect data

Python
# Step 1 – create the data file (in a real project you collect this from a survey or form)
import pandas as pd
data = {'Roll': range(1, 13),
        'Name': ['Aarav', 'Bela', 'Chirag', 'Diya', 'Eshan', 'Farah', 'Gopal', 'Hina',
                 'Ishaan', 'Jiya', 'Kunal', 'Lata'],
        'Section': ['A', 'B', 'A', 'B', 'A', 'B', 'A', 'B', 'A', 'B', 'A', 'B'],
        'English': [78, 85, 62, 90, 71, 88, 55, 93, 67, 80, 74, 69],
        'Maths': [92, 74, 58, 81, 88, 67, 49, 95, 73, 61, 84, 77],
        'IP': [95, 89, 70, 92, 84, 79, 61, 98, 76, 83, 90, 72]}
pd.DataFrame(data).to_csv('class12_result.csv', index=False)
print('class12_result.csv created with', len(data['Roll']), 'students')
class12_result.csv created with 12 students

Step 2: Process

Python
# Step 2 – read, add Total, Percent and Grade
import pandas as pd
df = pd.read_csv('class12_result.csv')
df['Total'] = df[['English', 'Maths', 'IP']].sum(axis=1)
df['Percent'] = (df['Total'] / 3).round(1)
def grade(p):
    if p >= 90: return 'A1'
    if p >= 80: return 'A2'
    if p >= 70: return 'B1'
    if p >= 60: return 'B2'
    return 'C'
df['Grade'] = df['Percent'].apply(grade)
df.to_csv('class12_processed.csv', index=False)
print(df[['Name', 'Section', 'Total', 'Percent', 'Grade']])
Name Section Total Percent Grade 0 Aarav A 265 88.3 A2 1 Bela B 248 82.7 A2 2 Chirag A 190 63.3 B2 3 Diya B 263 87.7 A2 4 Eshan A 243 81.0 A2 5 Farah B 234 78.0 B1 6 Gopal A 165 55.0 C 7 Hina B 286 95.3 A1 8 Ishaan A 216 72.0 B1 9 Jiya B 224 74.7 B1 10 Kunal A 248 82.7 A2 11 Lata B 218 72.7 B1

Step 3: Analyse

Python
# Step 3 – analysis
import pandas as pd
df = pd.read_csv('class12_processed.csv')
print('Class average %   :', round(df['Percent'].mean(), 2))
print('Subject averages  :'); print(df[['English', 'Maths', 'IP']].mean().round(1))
print('Topper            :', df.loc[df['Total'].idxmax(), 'Name'])
print('Section-wise mean :'); print(df.groupby('Section')['Percent'].mean().round(2))
print('Grade count       :'); print(df['Grade'].value_counts().sort_index())
Class average % : 77.78 Subject averages : English 76.0 Maths 74.9 IP 82.4 dtype: float64 Topper : Hina Section-wise mean : Section A 73.72 B 81.85 Name: Percent, dtype: float64 Grade count : Grade A1 1 A2 5 B1 4 B2 1 C 1 Name: count, dtype: int64

Step 4: Visualise

Python
# Step 4 – charts
import pandas as pd
import matplotlib.pyplot as plt
df = pd.read_csv('class12_processed.csv')
avg = df[['English', 'Maths', 'IP']].mean()
plt.bar(avg.index, avg.values, color=['#2563eb', '#f97316', '#16a34a'])
plt.title('Subject-wise Class Average'); plt.ylabel('Average marks'); plt.ylim(0, 100)
plt.savefig('project_subject_avg.png')
plt.figure()
plt.hist(df['Percent'], bins=[50, 60, 70, 80, 90, 100], edgecolor='black', color='#a78bfa')
plt.title('Distribution of Percentage'); plt.xlabel('Percent'); plt.ylabel('Students')
plt.savefig('project_hist.png')
plt.figure()
gc = df['Grade'].value_counts().sort_index()
plt.pie(gc.values, labels=gc.index, autopct='%1.0f%%')
plt.title('Grade Share')
plt.savefig('project_pie.png')
print('3 charts saved')
3 charts saved
Bar chart of subject-wise class average
Subject averages
Histogram of percentages
Percentage distribution
Pie chart of grade share
Grade share

Step 5: Menu program

Python
# Step 5 – menu-driven program that ties everything together
import pandas as pd
df = pd.read_csv('class12_processed.csv')
while True:
    print('1.Show all 2.Search by name 3.Students above % 4.Exit')
    ch = input('Choice: ')
    if ch == '1':
        print(df[['Roll', 'Name', 'Percent', 'Grade']].to_string(index=False))
    elif ch == '2':
        n = input('Name: ')
        r = df[df['Name'].str.lower() == n.lower()]
        print(r[['Name', 'English', 'Maths', 'IP', 'Percent']].to_string(index=False) if len(r) else 'Not found')
    elif ch == '3':
        p = float(input('Minimum %: '))
        print(df[df['Percent'] >= p]['Name'].tolist())
    else:
        print('Thank you'); break
1.Show all 2.Search by name 3.Students above % 4.Exit Choice: 2 Name: hina Name English Maths IP Percent Hina 93 95 98 95.3 1.Show all 2.Search by name 3.Students above % 4.Exit Choice: 3 Minimum %: 85 ['Aarav', 'Diya', 'Hina'] 1.Show all 2.Search by name 3.Students above % 4.Exit Choice: 4 Thank you

⬇ Download project code (class-12-ip-programs-sql)

Writing the project report

  1. Certificate and acknowledgement
  2. Introduction and aim
  3. Hardware and software used
  4. Data description (columns and source)
  5. Source code with comments
  6. Output screenshots and charts
  7. Conclusion and future scope
  8. Bibliography (websites and books you used)

Frequently Asked Questions

What should a Class 12 IP project contain?
A real-life problem, data in CSV or MySQL, pandas code for processing and analysis, Matplotlib charts, a menu or report, and documentation – aim, tools, code, output screenshots and conclusion.
Can the project be done in a group?
Yes, usually in groups of 2–3 students. Divide the work – data collection, code, charts and report – and meet regularly.
← Class 12 Informatics Practices
🔗

Share this topic with a friend

यह topic किसी दोस्त को भेजें

Found it useful? Send it to a classmate learning the same thing.

अच्छा लगा? जो दोस्त यही सीख रहा है, उसे भेज दीजिए।

Next topicImportant Programs & Queries Your progress: 23 / 25 (92%) · Lesson 24 / 25 Continue →

How was this lesson?

Your feedback helps us make the content better.

Write a review or suggestion (optional)

After approval, your name and city may appear publicly with your review. Please do not write your email or phone number.

▶ CodingEasily on YouTube

Learn with video lessons in easy Hindi

Featured video: RDBMS Part 3 – Class XI Commerce IT

▶ Subscribe – it’s free