Mauro Moraes Jr’s Portfolio
I’ve been working in the digital analysis for the past few years. I’ve experience with multiple business intelligence tools and E-commerce website development.
I’m passionate about digital marketing and love working with it to find insights that can help businesses improve their key performance indicators.
This portfolio page gives recruiters the opportunity to analyse highlights of some of my personal digital projects. These projects that I have chosen to showcase below are those that I am most proud of and that I believe best represent my skills and abilities.
Personal Website Portfolio
I have experience in working across a wide range of business website niches. I’m the senior manager developer responsible for creating all digital marketing content, website design, and innovative ideas within this website portfolio. By entrusting your business to my expertise, you can expect an elevated level of content that surpasses expectations.
Website Portfolio by Mauro Moraes Jr
Communications Officer
As a political analyst, I had the privilege of working as a communications officer for the Liberal Democrat in the UK. My role proved pivotal in the party’s historic success in the 2024’s election, where Lib Dems secured 71 seats in Westminster, re-establishing themselves as the third-largest party. This remarkable achievement was the result of a combined effort to revitalise their political messaging and engage voters through innovative digital strategies.
I worked remotely alongside Penelope James, I lead various aspects of the digital marketing campaign. My responsibilities included crafting compelling political campaign, wrote impactful scripts, developed social media content strategies, and sighted online content publication. This multifaceted approach allowed the content to reach a broader audience and effectively communicate the party’s vision for the future.
This work experience improved my skills in political communication, social media content strategy, and digital marketing within the fast-paced world of British politics. It demonstrated my ability to adapt to rapidly changing situations and deliver results under pressure. The success of our campaign strategy not only contributed to the Liberal Democrats’ best-ever electoral performance but also showcased my capacity to drive meaningful change through effective communication.
For a more detailed account of my contributions and capabilities, I invite you to read Penelope James’s recommendation on my LinkedIn profile. You can read it here: https://www.linkedin.com/in/mauro-moraes/details/recommendations
This endorsement provides further insight into my work ethic, skills, and the impact I made during this pivotal campaign. I’ll bring this level of professional experience and proven track record of success to new challenges in political campaigns.
Digital Analytics
Digital analytics is the practice of collecting, analysing, and interpreting data from various digital channels and platforms in order to understand how people are interacting with a company’s online presence.
By measuring key performance indicators “KPIs”, we can gain insights into how well a business is achieving its key objectives, such as increasing revenue, improving customer satisfaction, and maximising ROI.
In this analysis, we will be looking at a range of KPIs, including revenue, sales, profit, customer satisfaction, employee satisfaction, and market alignment goals. By analysing this data, we aim to make informed decisions that will drive business growth and success.
Python
Python is a programming language that is widely used in the digital analytics field. It’s a powerful tool that helps businesses to perform digital marketing analysis, data mining, and machine learning.
Olympics Data Analysis with Python
The purpose of this project is to analyse data from 1896 to 2016 Olympics using Python. We will further explore the data from the Olympic games in Rio 2016. The data will include information on the athletes, type of events, ranking and medal results. We will use Python to analyse this data and to create graphs and charts to visualise the data.
Data Summary:
The data shows the top 10 countries in terms of team participation in the Olympic games from 1896 to 2016. The United States had the highest number of team participation with 17,847, followed by France with 11,988, Great Britain with 11,404, Italy with 10,260, Germany with 9,326, Canada with 9,279, Japan with 8,289, Sweden with 8,052, Australia with 7,513, and Hungary with 6,547.
Data Analysis:
- The United States had the highest number of team participation in the Olympic games, with almost 18,000 teams representing the country.
- France, Great Britain, Italy, and Germany all had a significant number of team participation, with over 10,000 teams representing each of these countries.
- The remaining countries on the list (Canada, Japan, Sweden, Australia, and Hungary) all had a somewhat lower number of team participation, but still a significant presence in the Olympic games.
Conclusion:
- The data shows that the United States has had the highest number of team participation in the Olympic games from 1896 to 2016, followed by France, Great Britain, Italy, and Germany.
1898 - 2016 United States 17847 France 11988 Great Britain 11404 Italy 10260 Germany 9326 Canada 9279 Japan 8289 Sweden 8052 Australia 7513 Hungary 6547
Since the table above doesn’t look visually appealing. A stylish bar graph has been coded in order to create a more visual comparison between countries.
Age Distribution
An age distribution graph shows the number or percentage of individuals within a population that fall into different age ranges. In the case of the Olympic Games, the age distribution graph is showing the distribution of ages among the athletes competing in the games over time.
For example, if the graph showed a high number of athletes in the 18-35 age range and a low number of athletes in the 40-55 age range, it could indicate that there are relatively more young athletes competing in the games compared to older athletes.
The age distribution of athletes in the Olympic Games can be influenced by a variety of factors, such as the rules and eligibility requirements for the games, the physical demands and training requirements of different sports, and the overall demographics of the athletes.
Understanding the age distribution of athletes in the games can provide insight into these and other factors that may be impacting the makeup of the athlete’s population.
Modalities
Based on these lists, we can see that the Olympic games have included a wide range of sports across both winter and summer categories. Some of the notable sports included in the winter Olympics are ice hockey, alpine skiing, and figure skating, while some of the notable sports included in the summer Olympics are athletics (track and field), swimming, and gymnastics.
It is interesting to note that some sports, such as ice hockey and figure skating, are included in both the winter and summer Olympics, while others, like alpinism and aeronautics, are included in only one category. The inclusion of such a diverse range of sports in the Olympic games highlights the international and inclusive nature of the event.
Winter sport modalities from 1896 to 2016
array([‘Speed Skating’, ‘Cross Country Skiing’, ‘Ice Hockey’, ‘Biathlon’, ‘Alpine Skiing’, ‘Luge’, ‘Bobsleigh’, ‘Figure Skating’, ‘Nordic Combined’, ‘Freestyle Skiing’, ‘Ski Jumping’, ‘Curling’, ‘Snowboarding’, ‘Short Track Speed Skating’, ‘Skeleton’, ‘Military Ski Patrol’, ‘Alpinism’], dtype=object)
Summer sport modalities from 1896 to 2016
array([‘Basketball’, ‘Judo’, ‘Football’, ‘Tug-Of-War’, ‘Athletics’, ‘Swimming’, ‘Badminton’, ‘Sailing’, ‘Gymnastics’, ‘Art Competitions’, ‘Handball’, ‘Weightlifting’, ‘Wrestling’, ‘Water Polo’, ‘Hockey’, ‘Rowing’, ‘Fencing’, ‘Equestrianism’, ‘Shooting’, ‘Boxing’, ‘Taekwondo’, ‘Cycling’, ‘Diving’, ‘Canoeing’, ‘Tennis’, ‘Modern Pentathlon’, ‘Golf’, ‘Softball’, ‘Archery’, ‘Volleyball’, ‘Synchronized Swimming’, ‘Table Tennis’, ‘Baseball’, ‘Rhythmic Gymnastics’, ‘Rugby Sevens’, ‘Trampolining’, ‘Beach Volleyball’, ‘Triathlon’, ‘Rugby’, ‘Lacrosse’, ‘Polo’, ‘Cricket’, ‘Ice Hockey’, ‘Racquets’, ‘Motorboating’, ‘Croquet’, ‘Figure Skating’, ‘Jeu De Paume’, ‘Roque’, ‘Basque Pelota’, ‘Alpinism’, ‘Aeronautics’], dtype=object)
Proportion of Athletes
M 196594 F 74522
Over the past few decades, the proportion of female athletes participating in the Olympic games has significantly increased. This trend towards greater gender equality in sports is encouraging and highlights the progress that has been made towards ensuring that women have the opportunity to compete and succeed at the highest levels of international sports.
Data Summary:
The data shows the overall number of male and female athletes who participated in the modern era of the Olympic games, from 1896 to 2016. There were a total of 271,116 athletes, of which 27.5% were female and 72.5% were male.
Data Analysis:
- The data shows that there were significantly more male athletes than female athletes in the Olympic games from 1896 to 2016. Out of the total number of athletes, 72.5% were male and only 27.5% were female.
- The difference in the number of male and female athletes is significant, with almost three times as many male athletes as female athletes.
Conclusions:
- The data suggests that there is a significant gender imbalance in the Olympic games, with far more male athletes participating compared to female athletes.
- This gender imbalance may be due to a variety of factors, including societal attitudes and cultural norms that may discourage or restrict women’s participation in sports.
Overall number of the Olympic games medals from 1896 to 2016:
Gold 13372 Bronze 13295 Silver 13116
Data Summary:
The data shows the overall number of Olympic medals that were awarded in the era of the Olympic games, from 1896 to 2016. There were a total of 13,372 gold medals awarded, 13,295 bronze medals awarded, and 13,116 silver medals awarded.
Conclusions:
- Overall, the data shows that there were a relatively equal number of gold, bronze, and silver medals awarded in the Olympic games from 1896 to 2016.
Olympic Games in Rio de Janeiro | 2016
The Olympic games are a global sporting event that brings together athletes from around the world to compete at the highest level of international sports.
The 2016 Olympic games, held in Rio de Janeiro, Brazil, were no exception, with athletes from over 207 countries participating in a wide range of summer sports. This report will focus on the Olympic games in Rio 2016, examining various aspects of the event and its impact on the host city and country.
Through analysis of data and other relevant information, we will explore the successes and challenges of the 2016 Olympic games, as well as their lasting legacy. Whether you are a sports fan, a member of the Olympic community, or simply interested in international events, this report aims to provide a comprehensive overview of the Olympic games in Rio 2016.
2016
United States 137 Great Britain 64 Russia 50 Germany 47 China 44 Brazil 34 Australia 23 Argentina 21 France 20 Japan 17
Data Summary:
The data shows the top 10 countries in terms of the number of gold medals won in the Olympic games in Rio 2016. The United States had the highest number of medals with 137, followed by Great Britain with 64, Russia with 50, Germany with 47, China with 44, Brazil with 34, Australia with 23, Argentina with 21, France with 20, and Japan with 17.
Data Analysis:
- The United States had the highest number of medals in the Olympic games in Rio 2016, with almost 140 medals. This represents a strong performance for the United States team in the games.
- Great Britain, Russia, Germany, and China all had a significant number of medals, with over 40 medals each. These countries had a strong presence in the Olympic games in Rio 2016.
- The remaining countries on the list (Brazil, Australia, Argentina, France, and Japan) all had a somewhat lower number of medals, but still had a notable presence in the games.
Conclusions:
- The data shows that the United States had the highest number of medals in the Olympic games in Rio 2016, followed by Great Britain, Russia, Germany, and China.
- These top 5 countries had a strong presence in the Olympic games, with many medals won by each country.
- The remaining countries on the list (Brazil, Australia, Argentina, France, and Japan) also had a notable presence in the games, although with a somewhat lower number of medals.
Tableau
Tableau is a data visualisation tool that is widely used in the business world. It helps businesses to display data visualisations, create dashboards, and perform data analysis.
My Tableau viz profile: Mauro Moraes Jr
Political Party Expenditure Analysis: Labour & Conservative
This report analysis the expenditure patterns of the Labour Party and the Conservative Party while leading the British government. By analysing the net borrowing data from 1997 to 2023, we aim to understand which party has spent more on average. It’s important to note that net borrowing is just one aspect of government expenditure, and a comprehensive analysis requires considering various economic indicators.
The Office for National Statistics provided the dataset, which was linked to the political party in power during each year. The table below presents the findings:
Based on the data analysed, the Conservative Party has, on average, borrowed more while leading the British government compared to the Labour Party. However, it’s crucial to consider that net borrowing alone does not provide a complete picture of a party’s economic policies. Evaluating other indicators like GDP, unemployment, and inflation rates would yield a more comprehensive understanding of the overall economic health.
The British economy has faced significant challenges in recent years. Global economic conditions, such as the 2008 financial crisis and the ongoing COVID-19 pandemic, have had profound impacts on government borrowing. During the financial crisis, the Labour Party’s borrowing aimed to prevent an economic collapse. Similarly, the Conservative Party’s borrowing during the pandemic aimed to mitigate the economic damage caused. However, corruption and lack of transparency have posed additional challenges and harmed both the public and the economy.
Analysing the nature of government spending is crucial. Not all expenditures have equal impacts on the economy. Investments in infrastructure, health, education, research and development can have positive long-term effects, while spending on corrupted schemes and military defence may not yield the same benefits.
The relationship between government borrowing, interest rates, and inflation is essential to consider. Excessive borrowing and spending in certain sectors can lead to increased interest rates and inflation, negatively impacting the economy. The Conservative Party’s borrowing during its time in power has resulted in a substantial national debt, which has long-term implications for interest rates and inflation.
The Conservative Party has indeed borrowed considerably more while leading the British government compared to the Labour Party. This increase in net borrowing has not yielded significant positive impacts on the economy thus far.
A comprehensive analysis that takes into account internal and external factors, the nature of spending, and the relationship between borrowing, interest rates, and inflation would provide a clearer understanding of the economic policies of both parties.
Such an analysis is crucial for informed decision-making by policymakers and voters in future general elections. It would enable a thorough evaluation of the economic strategies proposed by each party and their potential implications for the overall economic well-being of the country.
India Visitor Influx
India is a country rich in culture and history, with numerous tourist attractions, ranging from ancient temples and monuments to stunning beaches and hill stations. In recent years, the country has seen a significant influx of tourists from all over the world. The data presented here showcases the trends in tourist arrivals to India from various regions and countries from the year 2001 to 2016.
The data has been categorised based on the region of the world from which the tourists comes from. These regions include North America, Central and South America, Western Europe, Eastern Europe, Africa, Middle East, Southeast Asia, East Asia, Australasia, and Others. The data points for each region have been further categorised by country, and the number of tourists arriving in India in each year has been presented in tabular form.
The data presented here is interactive, as viewers can click on each data point to filter the data by a specific country, region, or year. This feature allows viewers to obtain insights into the patterns and trends of tourist inflows to India over the years. Additionally, the data can be analyzed to identify the percentage increase or decrease in tourist arrivals from the previous year, enabling informed business intelligence decision-making.
Overall, this data is a valuable resource for anyone interested in studying the tourism industry in India. It provides valuable insights into the regions and countries that contribute the most to India’s tourism industry and can assist policymakers, travel agencies, and other stakeholders in making informed decisions.
Tourist Arrivals to India by Region:
- Western Europe: The number of visitors from Western Europe has steadily increased over the years, reaching over 2 million in 2016. The United Kingdom is the top contributor to the region, with over 942,000 visitors in 2016 with 23%
- North America: The number of visitors from North America has steadily increased from around 418,000 in 2001 to over 1,6 million in 2016. The United States is the top contributor to the region in 2016 with 18%.
- South Asia: The number of visitors from this region has steadily increased over the years, reaching 2,2 million in 2016. Bangladesh is the top contributor to the region, with around 1,400,000 visitors in 2016 with 25%.
Overall, the data indicates that Western Europe, North America and South Asia are the top contributors to tourist inflows to India. The number of visitors from these regions has steadily increased over the years, while the number of visitors from other regions has fluctuated.
Viz of the Day
This Tableau project demonstrates a strong understanding of business intelligence fundamentals and the ability to design and customise interactive dashboards. The project includes the use of dimensions and measures, as well as various types of charts, such as average by region, donut, and pie charts. The portfolio also includes the creation of sales and profit dashboards, as well as the ability to link overall dashboards to sales dashboards and create segment dashboards.
In addition to these skills, the portfolio showcases the use of actions in Tableau, such as sales by category stacked with reference bands and lines. The project also includes dashboards focused on profit, population, health and economy with the goal of improving KPI for the business.
Overall, this project demonstrates a strong foundation in business intelligence and data visualisation through the use of Tableau. The ability to create various types of charts and dashboards, as well as utilise actions in Tableau, highlights the skills needed to succeed as a data analyst. I am confident in my abilities and I’m open to taking on similar projects in the role of a data analyst.
Data Studio
Data Studio is another data visualisation tool that helps businesses to visualise data, create reports, and perform data analysis. It’s a powerful tool that can be used to improve business performance.
Online Store Dashboard
This dashboard provides key performance indicators “KPI” that measure session, transaction, conversion, and revenue performance over a week compared to the previous week.
This is just a basic online store sale report. If we work together, we can select different metrics and dimensions. We could also investigate further on KPIs that would be important to increase total sales for your company. I provided this report regularly, so you can make intelligent business decisions.
I’ve covered a variety of metrics and dimensions to measure performance to give a glimpse into the future of online store sales.
What do you think will be significant to measure over the next upcoming weeks?
SQL
SQL is a programming language that is used for managing and querying data. It’s a powerful tool that helps businesses to store and access data.
Exploring Employee Hierarchy with Recursive Queries
Objective: In this project, I used a random dataset sample of employees and their managers to explore the employee hierarchy using recursive SQL queries.
Steps:
- Created a dataset sample of employees and their managers. This dataset includes columns of employee’s name, employee ID, manager ID, and the level of the employee in the hierarchy.
- Coded SQL queries that use a recursive CTE (Common Table Expression) to generate the hierarchy of employees, starting with the CEO.
- Used window functions to calculate the number of employees under each manager and the average salary of the employees under each manager.
- Deployed sub-queries to find the highest-paid employee at each level of the hierarchy.
- Wrote a final report summarising the findings and including visualisation of the data.
This project showcase my ability to use recursive queries, window functions, and sub-queries to solve real-business problems and extract insights from data. I also include the code and the final report in this portfolio to demonstrate my skills in advanced SQL queries.
Query Flow
This schema consists of a single table called “Employee_Hierarchy” which has the following columns:
- Employee_ID: the unique identifier for each employee
- Employee_Name: the name of the employee
- Manager_ID: the employee ID of the employee’s manager
- Salary: the salary of the employee
- Level: the level of the employee in the hierarchy (e.g. CEO, Manager, Employee)
#Project: Employee Hierarchy
#Create a database:
CREATE DATABASE Employee_Hierarchy;
USE Employee_Hierarchy;
#Create Employee table:
CREATE TABLE `Employee` (
`Employee_ID` INT PRIMARY KEY,
`Employee_Name` VARCHAR(50),
`Manager_ID` INT,
`Salary` INT,
`Level` VARCHAR(20)
);
#Insert Employee’s data:
INSERT INTO `Employee` (`Employee_ID`, `Employee_Name`, `Manager_ID`, `Salary`, `Level`)
VALUES (‘1’, ‘John Smith’, NULL, ‘80000’, ‘CEO’),
(‘2’, ‘Jane Doe’, ‘1’, ‘60000’, ‘Manager’),
(‘3’, ‘Bob Johnson’, ‘2’, ‘55000’, ‘Employee’),
(‘4’, ‘Samantha Williams’, ‘2’, ‘50000’, ‘Employee’),
(‘5’, ‘Michael Brown’, ‘1’, ‘65000’, ‘Manager’),
(‘6’, ‘Emily Davis’, ‘2’, ‘58000’, ‘Employee’),
(‘7’, ‘Jacob Miller’, ‘2’, ‘56000’, ‘Employee’),
(‘8’, ‘Jessica Wilson’, ‘3’, ‘52000’, ‘Employee’),
(‘9’, ‘Matthew Moore’, ‘3’, ‘51000’, ‘Employee’),
(’10’, ‘Nicholas Taylor’, ‘4’, ‘50000’, ‘Employee’),
(’11’, ‘Amanda Anderson’, ‘1’, ‘64000’, ‘Manager’),
(’12’, ‘Daniel Jackson’, ’11’, ‘55000’, ‘Employee’),
(’13’, ‘William White’, ’11’, ‘54000’, ‘Employee’),
(’14’, ‘Ashley Harris’, ’12’, ‘53000’, ‘Employee’),
(’15’, ‘Brian Lewis’, ’12’, ‘52000’, ‘Employee’),
(’16’, ‘Stephanie Green’, ’13’, ‘50000’, ‘Employee’),
(’17’, ‘Andrew Adams’, ’13’, ‘49000’, ‘Employee’),
(’18’, ‘Karen Nelson’, ’14’, ‘48000’, ‘Employee’),
(’19’, ‘Richard Carter’, ’14’, ‘47000’, ‘Employee’),
(’20’, ‘Brittany Mitchell’, ’15’, ‘46000’, ‘Employee’);
#Keep in mind, these are random generated data!
SELECT * FROM Employee;
Exploring Employee Hierarchy using Recursive Queries
Exploring employee’s hierarchy using recursive query is a technique used to navigate through hierarchical data structures, such as the relationships between employees and their managers within an organisation.
This method utilises a special type of query called a Recursive Common Table Expression (CTE) to traverse the hierarchy, starting from the top-level employees and drop down to it’s initial level.
The resulting data set can provide valuable insights into the organisation’s structure and can be used to make informed decisions about staffing, team formations, promotions, and other HR related matters.
#Creating a recursive CTE:
WITH RECURSIVE employee_hierarchy AS (
SELECT Employee_ID, Employee_Name, Manager_ID, Salary, Level, 0 AS hierarchy_level
FROM Employee
WHERE Manager_ID IS NULL
UNION ALL
SELECT e.Employee_ID, e.Employee_Name, e.Manager_ID, e.Salary, e.Level, hierarchy_level + 1
FROM Employee e
JOIN employee_hierarchy ch ON e.Manager_ID = ch.Employee_ID
)
SELECT * FROM employee_hierarchy;
This query uses a recursive CTE to generate the hierarchy of employees, starting with the CEO at the top.
#Calculate number of employee under each manager + avg salary:
SELECT e1.Manager_ID, e2.Employee_Name as Manager_Name, COUNT(e1.Employee_ID) as Num_Employees, AVG(e1.Salary) as Avg_Salary
FROM Employee e1
LEFT JOIN Employee e2 ON e1.Manager_ID = e2.Employee_ID
GROUP BY e1.Manager_ID;
This query uses window functions to calculate the number of employees under each manager and the average salary of the employees under each manager. However, as you can notice on the table above, the query is incorrect.
The query uses a LEFT JOIN, which includes all rows from the left table Employee_e1 and any matching rows from the right table Employee_e2, but it returns NULL for any non-matching rows in the right table. This means that if there are employees in the e1 table who do not have a matching manager in the e2 table, those employees will be included in the result set with NULL values for Manager_ID and Manager_Name.
I need to review the data and the join condition to make sure the join is correctly matching the manager and employee. I decided to use an INNER JOIN instead of a LEFT JOIN. This will only return the matched records and not include the non-matching records.
Here’s the modified code:
SELECT e1.Manager_ID, e2.Employee_Name as Manager_Name, COUNT(e1.Employee_ID) as Num_Employees, AVG(e1.Salary) as Avg_Salary
FROM Employee e1
INNER JOIN Employee e2 ON e1.Manager_ID = e2.Employee_ID
GROUP BY e1.Manager_ID;
This only return the results where there is a match between the Manager_ID in the e1 table and the Employee_ID in the e2 table, avoiding the NULL values on Manager_ID and Manager_Name.
Final Query
This final query has been used to retrieve a list of all the Employee’s salary in descending order. The query starts by selecting the Level, Employee_Name and Salary columns from the Employee table.
It then filters the results using a WHERE clause that checks if the Level and Salary combination exists in a sub-query. The sub-query retrieves the Level and Salary columns from the Employee table and groups them by Level.
Finally, the outer query orders the results by Salary in descending order.
#List of all the Employee’s salary by DESC:
SELECT Level, Employee_Name, Salary FROM Employee
WHERE (Level, Salary) IN (
SELECT Level, Salary FROM Employee GROUP BY Level
) ORDER BY Salary DESC;
Conclusions
In this report, we explored the employee hierarchy of a random company using recursive queries in MySQL Workbench. We first created a table called “Employee” which stored information about each employee, including their ID, name, manager ID, salary, and hierarchy level within the company.
By using a recursive CTE, I was able to create a hierarchical view of the company’s employees, with the CEO at the top and individual employees at the bottom. I then used window functions to calculate the number of employees under each manager and the average salary of those employees.
Additionally, I used sub-queries to find the highest-paid employee at each level of the hierarchy. The results showed that the highest-paid employee is the CEO level who has a salary of £80.000, the highest paid Manager level has a salary of £65.000, at the heights paid Employee level has a salary of £58.000.
Overall, this report provides a comprehensive view of the company’s employee hierarchy and allows us to gain insights into the organisation’s structure, salary distribution, and key employees.