BENGALURU CITY UNIVERSITY
Bengaluru, Karnataka- 560056
A PROJECT REPORT
On
“Data Analysis of Global Video Game Sales”
Submitted By
Gagan G Purohit (P18BR23S126004)
In Partial fulfilment of the requirements for the awards of the Degree
Masters of Computer Applications
2023-2024
Under the Guidance of
Prof Jabeen Taj MK
Head Of the Department
Department of MCA
Brindavan College
Department of Masters of Computer Applications Bengaluru-
560063Brindavan College
Brindavan College
Department of Masters of Computer Applications Bengaluru
– 560063
Department of Master of Computer Applications,
Dwarakanagar, Bagalur main road, Yelahanka, Bangalore – 560063
Certificate
Certified that the project work entitled “Data Analysis of Global Video Game Sales” carried out by
Mr. Gagan G Purohit (P18BR23S126004) are Bonafide students of Brindavan College in partial
fulfilment for the award of Degree in Masters of Computer Applications of Bengaluru City
University, Bengaluru during the year 2024–25. It is certified that all corrections/suggestions
indicated for Internal Assessment have been incorporated in the Report deposited in the
department library.
The project report has been approved as it satisfies the academic requirements in respect of Project
work prescribed for the said Degree.
Signature of Guide Signature of HOD
External Examiners
Name of the examiner’s signature with date
1.
2.
DECLARATION
I Gagan G Purohit, student of 4th Semester MCA (BCU), being (Reg. No P18BR23S126004)
Brindavan College, Bangalore, hereby declare that the project entitled “Data Analysis of Global
Video Game Sales” has been carried out by me under the supervision of project Guide Prof.
Jabeen Taj, Professor, Department of MCA and submitted in partial fulfilment of the
requirements for the award of the Degree of Master of Computer Applications by Bengaluru City
University during the academic year 2024 – 2025. This report has not been submitted to any other
Organization / University for any award of degree or certificate.
Gagan G Purohit (P18BR23S126004)
ACKNOWLEDGMENT
In the present world of competition, there is a race of existence in which those are having the will to
come forward succeed. A project like a bridge between theoretical and practical working. with this
willingness, we joined this particular project. First of all, we would like to thank the almighty God who
is obviously the one who has always guided me to work on the one has always guided me to work right
path of life. without his grace, this project could not be reality.
As well as our parents who gave all the support that we required.
First and fore most we would like to thank Dr. [Link] Principal, Brindavan college, Bengaluru, for
his moral support and providing all infrastructure towards completing my project work.
We would like to thank Prof. R Y Naidu, Head of Department, MCA, Brindavan college, Bengaluru,
for his valuable suggestions and expert advice.
We deeply express my sincere gratitude to my guide Prof. Jabeen T, MCA Department, Brindavan
College, Bengaluru, for her able guidance and regular source of encouragement and assistance
throughout this project.
We would like to thank all the faculties of Department of MCA, for their valuable suggestions and
expert advice.
Our sincere gratitude to my parents for their continuous support in all aspects of my life, without their
support we wouldn’t have completed our project. Last, but not the least, we would like to thank our
peers and friends who provided us with valuable suggestions to improve our project.
Gagan G Purohit (P18BR23S126004)
ABSTRACT
This study uses Python-based data analytics to examine a dataset that contains details on gender
distribution, percentage representation, academic branches, and admission methods in order to
look into the demographics of college students in five different states. The dataset includes
both male and female student records, allowing for a thorough analysis of enrolment trends and
gender ratios across a range of educational contexts. With Python modules like Matplotlib for
visualization and Pandas for data manipulation, we performed a comprehensive analysis to find
trends pertaining to student demographics.
The findings show notable differences in student representation between states and clear
gender-based preferences for different academic fields.
For example, certain branches show a higher percentage of enrolled female students, while
other branches show a higher percentage of male students. Furthermore, the data reveals how
developments in admissions channels affect student diversity and accessibility to various
academic programs.
The results highlight the differences in enrolment rates and pose significant queries about the
underlying causes of these patterns through visual aids like pie charts and bar charts.
The information gathered from this analysis can help policymakers and educational institutions
better understand the current state of student demographics, which will ultimately direct efforts
to advance inclusion and equity in higher education.
This research adds to the larger conversation on educational fairness by pointing out areas of
imbalance and potential access barriers. It also highlights the necessity of focused measures to
serve various student groups and provide an inclusive academic environment. The results
provide a great starting point for more research and the formulation of educational policies.
CONTENT
SNO SUBJECT PG. NO
1. Introduction 1
2. Requirement Analysis 2
3. Specification Requirements: 3
➢ Hardware Requirement Specification
➢ Software Requirement Specification
4. Technologies Used 4-6
5. Analysis and Design 7-13
6. Implementation 14-15
7. Coding 16-22
8. Testing 23-24
9. Conclusion 25
10. Bibliography 26
CHAPTER-1
INTRODUCTION
This study uses Python for data analytics to provide a thorough examination of the
demographics of college students in five different states. The variables in the dataset include
academic branches, entrance channels, percentage representation, and gender (male and
female). We processed and visualized the data to find patterns and trends in student registration
using Python packages like Seaborn and Pandas.
Notable differences in gender representation across academic disciplines are found by the
investigation. For instance, some fields exhibit higher enrolment rates for female students than
for male students. Additionally, the analysis of admission channels shows that specific
enrolment pathways have a major impact on the distribution of demographics, pointing to a
connection between student diversity and the admissions process.
Bar graphs and heatmaps are two examples of good visualizations that show the results and
make it easier to understand the complex correlations found in the data. In order to improve
fairness and inclusivity in higher education, institutional strategies and policies must take
demographic trends into consideration, as this study emphasizes.
This research provides a baseline for educational institutions looking to execute focused
interventions by identifying underrepresented groups and examining the factors influencing
their enrolment. The conclusions drawn from this analysis not only add to the body of
knowledge already available on student demographics, but they also motivate more research
into the socioeconomic and cultural aspects of school success and access.
The ultimate goal of this research is to provide a more welcoming and inclusive learning
environment that can better serve a variety of student demographics.
1
CHAPTER-2
REQUIREMENT ANALYSIS
Requirement analysis for data analysis consists of three primary tasks: formulation,
requirements gathering, and analytical modelling. During formulation, the basic motivations
and goals are determined, and user types are specified. During the requirements collecting
phase, content and functional needs are identified, and interaction scenarios written from the
end-user's perspective are created. The goal is to build a basic knowledge of why the analysis
is being conducted, who will use it, and what problems it will solve for its consumers.
2.1 SOFTWARE REQUIREMENT SPECIFICATION
Operating System: Windows XP/10/11
Application: Anaconda Navigator
Platform: Visual Studio Code
Language: Python
2.2 HARDWARE REQUIREMENT SPECIFICATION
Processor: Standard processor with a speed of 2.0GHz
RAM: 4GB
Hard Disk: 50 GB or more
Monitor: Standard color monitor
Keyboard: Standard keyboard
2
CHAPTER-3
SYSTEM ANALYSIS
The process of obtaining and evaluating data, identifying issues, and using the knowledge to
suggest system enhancements is known as system analysis. System analysis is a problem-
solving process that necessitates close contact between system developers and users. It involves
gathering and analyzing data, determining the issues, and breaking down a system into its
constituent parts. System analysis is the process of examining a system or its components to
determine its goals. It is a method for solving problems that makes the system better and
guarantees that every part of the system functions effectively to fulfil its intended goal.
A crucial stage in any system development process is system analysis or study.
When the system is seen in its whole, the Inputs are determined, and the system is closely
examined to pinpoint the areas of concern. A proposal for the solutions is provided. Upon user
request, the proposal is assessed and appropriate modifications are made. As soon as the user
is happy with the suggestion, this loop comes to an end.
3
CHAPTER-4
TECHNOLOGIES USED
4.1 Anaconda Navigator:
The Anaconda distribution comes with a desktop graphical user interface (GUI) called
Anaconda Navigator, which enables users to manage CONDA packages, environments, and
channels in addition to launching programs without requiring command-line input. Navigator
is capable of finding packages in a local Anaconda repository or on Anaconda Cloud, installing
them in an environment, running them, and updating them. Linux, macOS, and Windows can
all use it.
The Anaconda distribution has more than 250 packages installed by default. and the CONDA
package, virtual environment manager, and more than 7,500 more open-source items can be
installed via PYPI. In addition, it comes with Anaconda Navigator, a graphical user interface
(GUI) that can replace the command-line interface (CLI).
The following applications are available by default in Navigator:
• Spyder
• Visual Studio Code
4.2 Visual Studio Code:
Visual Studio Code is a source-code editor that can be used with a variety of programming
languages, including C, C#, C++, Fortran, Go, Java, JavaScript, Node. Js , Python, Rust, and
Julia. VS Code supports many programming languages, including JavaScript, TypeScript, and
[Link]. It also includes features like debugging, syntax highlighting, code completion, and
version control vs Code is available for Windows, macOS, and Linux. It can also be used in a
web browser through VS Code for the Web. VS Code has a large ecosystem of extensions that
add functionality, such as support for other languages and runtimes. VS Code includes a
minimap that provides a high-level overview of the source code, which can help with
navigation and understanding.
4.3 Python programming:
Python is a popular computer programming language used for creating software and websites,
task automation, and data analysis. Python is a general-purpose language, which means it isn't
tailored for any particular issue and may be used to develop a wide range of programs. Its
adaptability and ease of use for beginners have made it one of the most popular programming
languages available today. According to a poll by industry research firm Red Monk, developers
ranked it as their preferred programming language for 2020.
Python is frequently used for data analysis, data visualization, task automation, and the
development of software and websites. Python is widely used by non-programmers, including
scientists and accountants, for a range of daily chores, including managing finances, due to its
ease of learning.
Some of the common ways Python is used
• Data analysis and machine learning
• Web development
• Automation or scripting
• Software testing and prototyping
• College Student Data Analytics
4.4 DATASET:
A collection of data is called a dataset (or data set), and it is typically displayed in tabular form.
Every column denotes a distinct variable. Every row in the dataset in question belongs to a
certain member. It provides values for all the variables, including an object's weight and height.
Every value is referred to as a datum. The number of rows in the dataset corresponds to the
number of members whose data it contains.
The dataset highlights a general trend of increasing enrolment in various branches, with notable
growth in technology and management-related fields. Gender representation shows a balanced
approach, with both males and females increasing their participation in these academic
disciplines across the states analysed. Overall, West Bengal and Tamil Nadu exhibit
particularly strong growth in student numbers, especially in CSE and MBA programs.
CHAPTER-5
ANALYSIS AND DESIGN
SCREENSHOT- 01:
SCREENSHOT-02
SCREENSHOT-03
SCREENSHOT-04
SCREENSHOT-05
SCREENSHOT-06
SCREENSHOT-07
SCREENSHOT-08
SCREENSHOT-09
SCREENSHOT-10
SCREENSHOT-11
SCREENSHOT-12
SCREENSHOT-13
CHAPTER-6
IMPLEMENTATION
In five Indian states—Karnataka, Maharashtra, Punjab, West Bengal, and Tamil Nadu—
student enrolment data from 2019 to 2023 is analysed in this paper. Gender distribution in a
variety of fields is covered by the statistics, including MCA, MBA, CSE, AIML, and EEE.
This report's goal is to provide an overview of trends, draw attention to noteworthy
developments, and pinpoint enrolments patterns for the given years.
1. Data Overview
1.1. Structure of the Dataset
• Year: Academic year (2019-2023)
• State: Name of the state
• Language: Regional language of instruction
• Branch: Academic discipline
• Gender: Male or Female
• Number of Students: Total enrolled students
1.2. Summary Statistics
• Total years analysed: 5
• Total states covered: 5
• Total branches: 5
• Total data entries: 100 (20 per year)
2. Key Findings
2.1. Enrolment Trends by Year
• Overall Growth: Over time, student enrolments at most branches increased steadily, especially
in technical subjects like CSE and AIML.
• Karnataka: A mixed picture, with female enrolment showing rises in MBA and stable
growth in MCA and CSE, especially among males.
• Maharashtra: High growth in CSE and MBA, with a peak of 130 female MBA
registrants in 2022.
• Punjab: Notable gains in female EEE, indicating a rise in engineering interest.
• West Bengal: Enrolment in CSE has increased significantly for both sexes, with men
expected to reach 160 by 2022.
• Tamil Nadu: Enrolment in MBA and MCA programs is steadily increasing, especially
for women. As of 2023, there were 160 MBA male students.
2.2. Gender Distribution
• MCA: Trends for both genders indicated growth, with considerable increases in female
enrolments observed in Tamil Nadu and Karnataka.
• MBA: Enrolments is typically greater among women, especially in Maharashtra and
Tamil Nadu, suggesting a high level of interest in management courses.
• CSE: While male students still made up the majority, female participation dramatically
rose, particularly in West Bengal.
CHAPTER-7
CODING
import pandas as pd
import [Link] as plt
import tkinter as tk
from tkinter import filedialog, messagebox
from tkinter import ttk
# Global variable to hold the dataframe
df = None
def load_data(file_path):
global df
df = pd.read_csv(file_path)
def analyze_data(df):
total_students_per_year = [Link](['Year',
'State'])['Number_of_Students'].sum().unstack(fill_value=0)
state_branch_distribution = [Link](['State',
'Branch'])['Number_of_Students'].sum().unstack(fill_value=0)
branch_year_distribution = [Link](['State', 'Branch',
'Year'])['Number_of_Students'].sum().unstack(fill_value=0)
gender_distribution = [Link](['Year', 'State',
'Gender'])['Number_of_Students'].sum().unstack(fill_value=0)
language_distribution = [Link](['Year',
'Language'])['Number_of_Students'].sum().unstack(fill_value=0)
return (total_students_per_year, state_branch_distribution, branch_year_distribution,
gender_distribution, language_distribution)
def plot_state_distribution(total_students_per_year):
colors = ['red', 'blue', 'green', 'orange', 'purple']
total_students_per_year.plot(kind='bar', stacked=False, color=colors, figsize=(12, 6))
[Link]('Total Students in Each State (2019-2023)')
[Link]('Year')
[Link]('Number of Students')
[Link](rotation=0)
[Link](title='State')
plt.tight_layout()
[Link]()
def plot_state_branch_distribution(state_branch_distribution):
ax = state_branch_distribution.plot(kind='bar', figsize=(12, 6), colormap='viridis',
position=0, width=0.8)
[Link]('State vs Branch Distribution of Students')
[Link]('State')
[Link]('Number of Students')
[Link](rotation=45)
[Link](title='Branch')
plt.tight_layout()
ax.set_xticklabels(state_branch_distribution.index, rotation=45, ha='right')
[Link]()
def plot_branch_distribution_by_year(branch_year_distribution):
states = branch_year_distribution.[Link][0]
for state in states:
state_data = branch_year_distribution.xs(state, level=0)
ax = state_data.plot(kind='bar', figsize=(12, 6), width=0.8)
[Link](f'Branch Distribution in {state} (2019-2023)')
[Link]('Branch')
[Link]('Number of Students')
[Link](rotation=45)
[Link](title='Year')
plt.tight_layout()
ax.set_xticklabels(state_data.index, rotation=45, ha='right')
[Link]()
def plot_gender_distribution(gender_distribution):
ax = gender_distribution.plot(kind='bar', figsize=(12, 6), stacked=True, colormap='Pastel1')
[Link]('Male-Female Ratio in Each State (2019-2023)')
[Link]('Year and State')
[Link]('Number of Students')
[Link](rotation=45)
[Link](title='Gender')
plt.tight_layout()
ax.set_xticklabels(gender_distribution.index, rotation=45, ha='right')
[Link]()
def plot_language_distribution(language_distribution):
ax = language_distribution.plot(kind='bar', figsize=(12, 6), colormap='Set2', width=0.8)
[Link]('Language Distribution by Year')
[Link]('Year')
[Link]('Number of Students')
[Link](rotation=0)
[Link](title='Language')
plt.tight_layout()
[Link]()
def plot_admission_distribution(total_students_per_year):
admissions_by_year = total_students_per_year.sum(axis=1) # Summing up students per
year
[Link](figsize=(8, 8))
[Link](admissions_by_year, labels=admissions_by_year.index, autopct='%1.1f%%',
startangle=140)
[Link]('Admission Distribution by Year')
[Link]('equal') # Equal aspect ratio ensures the pie chart is circular.
[Link]()
def generate_report(df):
report = []
# Total Students Over Years
total_growth = [Link]('Year')['Number_of_Students'].sum().reset_index()
[Link]("Total Students Over Years:\n")
[Link](total_growth.to_string(index=False) + "\n")
# State-wise Language Changes Over Years
[Link]("State-wise Language Changes Over Years:\n")
state_language_changes = [Link](['Year',
'Language'])['Number_of_Students'].sum().unstack(fill_value=0)
for year in state_language_changes.index:
[Link](f"\nYear: {year}\n")
[Link](state_language_changes.loc[year].to_string() + "\n")
# Branch-wise Changes Over Years
[Link]("Branch-wise Changes Over Years:\n")
branch_changes = [Link](['Year',
'Branch'])['Number_of_Students'].sum().unstack().fillna(0)
[Link](branch_changes.to_string() + "\n")
# Gender Ratio Changes Over Years
gender_ratio = [Link](['Year',
'Gender'])['Number_of_Students'].sum().unstack().fillna(0)
if 'Female' in gender_ratio.columns and 'Male' in gender_ratio.columns:
gender_ratio['Male to Female Ratio'] = gender_ratio['Male'] /
gender_ratio['Female'].replace(0, 1)
[Link]("Gender Ratio Changes Over Years:\n")
[Link](gender_ratio.to_string() + "\n")
return "\n".join(report)
def show_report():
if df is not None:
report = generate_report(df)
# Create a new window for the report
report_window = [Link](root)
report_window.title("Data Changes Report")
# Create a text widget to display the report
report_text = [Link](report_window, wrap=[Link], width=80, height=30)
report_text.pack(expand=True, fill=[Link])
# Insert the report into the text widget
report_text.insert([Link], report)
# Add a scrollbar
scrollbar = [Link](report_window, orient="vertical",
command=report_text.yview)
report_text.configure(yscrollcommand=[Link])
[Link](side=[Link], fill=tk.Y)
# Make the text widget read-only
report_text.config(state=[Link])
else:
[Link]("Error", "Please upload a CSV file first.")
def upload_file():
file_path = [Link](filetypes=[("CSV Files", "*.csv")])
if file_path:
try:
load_data(file_path)
[Link]("Success", "CSV file uploaded successfully!")
create_action_buttons()
except Exception as e:
[Link]("Error", str(e))
def create_action_buttons():
# Clear previous buttons if they exist
for widget in action_frame.winfo_children():
[Link]()
# Create buttons for showing graphs and report
show_graphs_button = [Link](action_frame, text="Show Bar Graphs",
command=show_graphs)
show_graphs_button.pack(pady=10)
show_report_button = [Link](action_frame, text="Show Data Changes Report",
command=show_report)
show_report_button.pack(pady=10)
def show_graphs():
if df is not None:
(total_students_per_year, state_branch_distribution, branch_year_distribution,
gender_distribution, language_distribution) = analyze_data(df)
plot_state_distribution(total_students_per_year)
plot_state_branch_distribution(state_branch_distribution)
plot_branch_distribution_by_year(branch_year_distribution)
plot_gender_distribution(gender_distribution)
# Plot admission distribution pie chart
plot_admission_distribution(total_students_per_year)
# Correctly plot the language distribution by year only once
language_year_distribution = [Link](['Year',
'Language'])['Number_of_Students'].sum().unstack(fill_value=0)
plot_language_distribution(language_year_distribution)
else:
[Link]("Error", "Please upload a CSV file first.")
# Create GUI window
root = [Link]()
[Link]("CSV Student Data Analysis")
# Create a frame for actions
action_frame = [Link](root)
action_frame.pack(pady=20)
# Create upload button
upload_button = [Link](action_frame, text="Upload CSV", command=upload_file)
upload_button.pack(pady=10)
# Run the application
[Link]()
CHAPTER-8
TESTING
Users can input a CSV file with student data to the application, and it will analyze and display
the data in a variety of graphs. The primary functions comprise of data loading, analysis, report
generation, and graphical display.
Test Cases
1. Upload CSV File
• Goal: Confirm that the program can properly upload and read a CSV file.
• Test: Try to upload a CSV file that is legitimate.
• Anticipated Outcome: A successful data load should be displayed by the program
along with a success message.
• Result: Success.
2. Invalid CSV File Handling
• Goal: Make sure the program gracefully handles file types that aren't valid.
• Test: Try uploading a file that isn't CSV (like [Link] file).
• Anticipated Outcome: An error message stating that the file format is not supported
should be displayed by the application.
• Result: Success.
3. Data Analysis Functions
• Goal: Verify that the data analysis functions are accurate.
• Test: Examine and contrast the outcomes of an example dataset with known values.
• Anticipated Outcome: Every analytic function, such as branch distribution and total
students annually, need to yield precise summaries.
• Result: Success.
4. Plotting Functionality
• Goal: Confirm that every charting function produces accurate visual outputs.
• Test: Examine and graph a representative dataset.
• Anticipated Outcome: Every graph need to be shown flawlessly, with the data
faithfully mirroring the input.
• Result: Success.
5. Generate Report
• Goal: Verify that the data analysis is appropriately reflected in the report production.
• Test: Produce a report for a pre-existing dataset and contrast its contents with
anticipated results.
• Anticipated Outcome: Accurate gender ratios, branch changes, total students, and
language distribution should all be included in the report.
• Result: Success.
CHAPTER-9
CONCLUSION
An efficient tool for viewing and evaluating student enrolment data across a variety of
characteristics, including state, branch, gender, and language, is the CSV Student Data Analysis
application. Using the potent powers of Matplotlib and pandas, the application enables users
to:
1. Upload and Process Data: Users can quickly and simply upload a CSV file that contains
student data, providing easy access to the data required for analysis.
2. Visualize Trends: Users can see trends in state-by-state student enrollment, branch
distribution, gender ratios, and language preferences over time by utilizing a series of
elegantly produced graphs. Making educated decisions is made possible by this
representation, which helps to comprehend how certain aspects have changed over time.
3. Produce Detailed Reports: The program has the ability to create comprehensive
reports that summarize important metrics and modifications. This allows for a deeper
comprehension of the data than is possible with merely visual depiction.
4. Interface Friendly: The Tkinter-built graphical user interface (GUI) is user-friendly
and accessible to anyone without technical expertise. The user experience and
engagement are improved when buttons are used for actions.
All things considered, this program provides educators, administrators, and researchers
with a strong platform to learn about student demographics and trends, which eventually
helps with policy formulation and strategic planning in educational settings.
CHAPTER-10
BIBLIOGRAPHY
1. Pandas Documentation. (n.d.). Retrieved from [Link]
2. Matplotlib Documentation. (n.d.). Retrieved from
[Link]
3. Tkinter Documentation. (n.d.). Retrieved from
[Link]
4. Wickham, H., & Grolemund, G. (2017). R for Data Science: Import, Tidy, Transform,
Visualize, and Model Data. O'Reilly Media.
5. Grus, J. (2019). Data Science from Scratch: First Principles with Python. O'Reilly
Media.
6. McKinney, W. (2010). Data Analysis with Python and Pandas. O'Reilly Media.
7. He, W. (2020). Matplotlib for Python Developers: Master the Basics of Data
Visualization Using Python. Packt Publishing.
8. Bansal, N. (2020). Hands-On Data Analysis with Pandas: Perform effective data
analysis and visualization using the Pandas library and Python. Packt Publishing.