Big picture
The Informatics Practices practical exam includes a project: a small data-based application that brings together what you learnt in the course. A good project asks a clear question, collects real data, cleans and analyses it with Pandas, shows the results with Matplotlib charts, often stores the data in MySQL, and communicates the findings clearly.
This lesson gives a step-by-step plan, a worked mini-project with tested code, and tips for the report and viva. Follow your school's and CBSE's current guidelines for marks distribution and group size.
Learning goals
Choose a suitable, data-based project problem.
Collect data and store it in a CSV file.
Clean data with Pandas: remove duplicates and handle missing values.
Analyse data with statistics, grouping and sorting.
Visualise results with appropriate charts.
Store and query data in MySQL.
Present the project in a report and answer viva questions.
Core ideas
1. The project cycle
Stage | What you do | Tools |
|---|---|---|
1. Define the problem | Write one or two clear questions the project will answer | |
2. Collect data | Survey, school records (with permission), or open government data; save as CSV | Spreadsheet, CSV |
3. Clean data | Remove duplicates, handle missing values, fix data types and spelling | Pandas |
4. Analyse | Calculate totals, averages, maximum and minimum; group and sort | Pandas |
5. Visualise | Draw charts that answer the questions | Matplotlib |
6. Store and query | Save the data in a database table and run SQL queries | MySQL |
7. Communicate | Report findings, limitations and suggestions | Report, presentation |
2. Choosing a good problem
Good project ideas: analysis of class results by subject and section; monthly electricity or water use of households; rainfall data of Indian states over years; sales of a local shop; library book issue records; sports performance statistics; pollution (AQI) data of cities.
A good problem is: specific ("Which section performed best in Maths and Science?"), answerable with data you can actually get, and small enough to finish.
3. Collecting data
Design a survey (Google Form or paper) with clear questions; record responses in a spreadsheet.
Use open data portals such as data.gov.in for government datasets.
Respect privacy: get permission, and don't include names or personal details unless needed; anonymise where possible.
Save the data as a CSV file so Pandas can read it with
pd.read_csv().
4. Worked mini-project: section-wise performance
Question: which section has the higher average total in Maths and Science, and who is the top scorer?
Raw data (one record is accidentally repeated, and two marks are missing):
Name | Class | Maths | Science |
|---|---|---|---|
Asha | 12A | 88 | 79 |
Ravi | 12B | 72 | 85 |
Neha | 12A | missing | 90 |
Arun | 12B | 65 | 70 |
Meera | 12A | 91 | missing |
Ravi | 12B | 72 | 85 |
Step 1: load and inspect.
import pandas as pd
df = pd.read_csv('marks.csv')
print(len(df)) # 6 rows
print(df.duplicated().sum()) # 1 duplicate rowStep 2: clean.
df = df.drop_duplicates() # 5 rows remain
print(df.isnull().sum()) # Maths 1, Science 1 missing
df['Maths'] = df['Maths'].fillna(df['Maths'].mean()) # mean 79.0
df['Science'] = df['Science'].fillna(df['Science'].mean()) # mean 81.0The missing Maths mark (Neha) becomes 79 and the missing Science mark (Meera) becomes 81. Filling with the mean is one choice; you could also drop incomplete rows, or fill with 0 if the student was absent. State your choice and reason in the report.
Step 3: analyse.
df['Total'] = df['Maths'] + df['Science']
print(df.groupby('Class')['Total'].mean().round(2)) # 12A 169.33, 12B 146.0
print(df.sort_values('Total', ascending=False).iloc[0]['Name']) # MeeraName | Class | Total |
|---|---|---|
Asha | 12A | 167 |
Ravi | 12B | 157 |
Neha | 12A | 169 |
Arun | 12B | 135 |
Meera | 12A | 172 |
Finding: Section 12A has the higher average total (169.33 versus 146.0), and Meera is the top scorer with 172.
Step 4: visualise.
import matplotlib.pyplot as plt
avg = df.groupby('Class')['Total'].mean()
plt.bar(avg.index, avg.values, color=['teal', 'orange'])
plt.title('Average Total by Section')
plt.xlabel('Section')
plt.ylabel('Average total (out of 200)')
plt.savefig('section_avg.png')
plt.show()A bar chart suits a comparison of categories; a histogram of totals would show their distribution.
Step 5: store and query in MySQL.
CREATE TABLE result (Name VARCHAR(20), Class CHAR(3), Maths FLOAT, Science FLOAT);
SELECT Class, AVG(Maths + Science) FROM result GROUP BY Class;
SELECT Name FROM result ORDER BY Maths + Science DESC LIMIT 1;5. Writing the project report
A typical report includes:
Certificate and acknowledgement.
Introduction: the problem and why it matters.
Objectives: the questions answered.
Data source and collection method, including privacy steps.
Hardware and software used: Python, Pandas, Matplotlib, MySQL.
Data cleaning steps, with reasons.
Code, with comments, and sample outputs (tables and charts).
Findings and conclusions.
Limitations (small sample, missing data) and future scope.
Bibliography / references.
6. Viva tips
Be ready to explain: why you chose each chart; how you handled missing values; what groupby(), fillna() and drop_duplicates() do; the difference between a Series and a DataFrame; how your SQL queries work; and one limitation of your project.
A reliable routine for your project
Write a clear question first.
Collect enough data responsibly and save it as CSV.
Inspect it (
head(),info(),isnull(),duplicated()) before analysing.Clean, then analyse, then visualise, then interpret.
Document every step and every decision.
Connections that matter
Data handling with Pandas gives all the cleaning and analysis functions.
Data visualisation gives the plotting functions.
Advanced SQL queries gives the database queries.
Responsible data practice explains consent, privacy and fair use of data.
Common mistakes
Analysing data without cleaning it first, so duplicates and missing values distort results.
Choosing a chart that doesn't fit the question.
Copying a project or dataset without understanding it.
Including personal information without consent.
Writing findings that the data doesn't actually support.
Revision checklist
I can define a clear, data-based project question.
I can collect data responsibly and save it as CSV.
I can remove duplicates and handle missing values.
I can analyse with grouping, statistics and sorting.
I can choose and draw the right chart.
I can store and query data in MySQL and write a complete report.