Teo Jia Ling

Aspiring Data Cleaner, Analyst and Statistician

neil angelo martinez

I don't just clean, analyze and build dashboards with raw data.

I uncover the untold stories hidden within a mess of numbers and information, revealing interesting truths that one wouldn't even know they were looking for.

To me, there's something thrilling about unravelling hidden insights from complicated data.

I'm passionate about transforming dirty data into thought-provoking stories, sharing insights that inform strategy, spark curiosity and a call to action.




Linkedin Download CV Verify My Professional Credentials

People hear statistics, but I tell stories with statistics

Aspiring Statistician Ready to Make an Impact

I am an aspiring statistician and data analyst. With a degree background in Economics (NUS) and tutoring, I’ve always been passionate about learning.

Now, I channel that passion into helping others learn insights from complex data.

Revealing unexpected stories from data never fails to leave me in awe and wonder!

Oh, the joy of discovery!

>GitHub Profile Tableau Profile
  • Python

    100%
  • Tableau

    100%
  • Excel

    100%
  • SQL

    60%
  • R

    60%
  • HTML, CSS, JavaScript

    15%

Technical Skills

Data Cleaning Exploratory Data Analysis
Data Visualizations Time Series Forecasting
Data Validation (Regex) Machine Learning (Sci-Kit Learn)

Data Analysis and Visualization

Portfolio

The full code to Python Visualizations can be found on my GitHub.

Tableau
Python Visualizations
Projects
Apps Deployed
  • portfolio

    Trend of HDB Prices - Time Series Analysis

    This visualisation was conducted in Python. Using pandas, I first merged multiple HDB prices data sets (nominal) from data.gov.sg.
    Then, I adjusted the prices for inflation, by joining a seperate CPI dataset from data.gov.sg.
    This transformed the nominal prices in my existing merged data set, to reflect the real prices.
    Then, I researched economic crisises from 1990 to 2020 that could explain the steep fall and rise in HDB prices.
    Finally, this graph was plotted and annotated with matplotlib and seaborn in Python.

  • portfolio

    Sales Distribution of HDB Flat Models using Python

    The smaller visualisation was done in Python, with a different library called PyWaffle, which is
    great for displaying parts of a whole using a grid of squares. It's built on top of matplotlib.
    The outer visualisation was plotted and annotated with matplotlib and it's colormap module.
    I then stacked both visualizations on top of each other in Tableau with Story.

  • portfolio

    Ridge Plot of HDB Prices by Model Type - Time Series Analysis

    This visualisation is a ridge plot, which shows the distribution of a numeric variable for multiple
    categories using overlapping density plots. It’s useful for comparing distributions across categories. I used the joyplot library,
    together with matplotlib and seaborn in Python to plot this.

  • portfolio

    Violin Plot of HDB Prices by Town and Storey Range

    This visualisation is a violin plot, which is a combination of a box plot and a kernel density plot.
    It shows the distribution of a numeric variable, its probability density, central tendency, and spread.
    It is useful in comparing distributions across multiple categories.

  • portfolio

    Visualizing Feature Importance of a Random Tree Regressor Model -

    This visualisation is a ridge plot, which shows the distribution of a numeric variable for multiple
    categories using overlapping density plots. It’s useful for comparing distributions across categories. I used the joyplot library,
    together with matplotlib and seaborn in Python to plot this.

  • portfolio

    Visualization in Python

    Plot with annotation of overall number of intake, enrollment and graduation across all institutes in Singapore from 1982 to 2023.

  • portfolio

    Interactive Sankey Diagram in Python

    Visualizing distribution of male and female graduates across instituition groups, with an interactive sankey diagram in plotly.

  • portfolio

    Detailed Sankey Diagram of Male and Female Distribuition across specific insituition

    Visualizing the distribution of male and female graduates across specific instituitions. I really love plotting graphs in plotly as it is interactive with hover functionality that reveals specific quantities.

  • portfolio

    Interactive Treemap Visualization in Python

    Created with Plotly in Python, showing the proportion of male and female students by institution. Hovering reveals exact figures and helps explore trends in gender representation across education levels.

  • portfolio

    Donut Map Visualisation

    Gender breakdown across instituitions in 2000 and 2023. I added annotations of actual numbers and percentages to the donut map for others to easily understand upon a single look. I also made sure that colors were matched according to each group.

  • portfolio

    Visualizing Distributions with a Stacked Bar Chart

    Another way to easily visualize the gender distribution of graduates across instituitions, from 1982 to 2023.
    This was by far my favourite visualization as it clearly shows the change across time.

  • portfolio

    Time Series Forecasting with ARIMA Model

    Visualizing forecasts 3 time steps ahead with ARIMA model. The blue line represents the historical data, while the purple line represents the forecasted values, for the next 3 time stamps into the future. The purple area is the 90% confidence interval of the forecast. (Actual values tend to appear 90% of the time in that area.)

  • portfolio

    Time Series Model Evaluation on a single instituition

    Testing the accuracy of ARIMA Model on my data set. I split the data into train and test sets, where the forecasts were plotted against the actual value. The orange area reveals the 95% confidence interval of the forecast. From the plot, we observe that actual values tend to appear 95% of the time in that area. Though simple, ARIMA is a powerful model for time series forecasting as it offers great accuracy with it's generality.

  • portfolio

    ARIMA Model Evaluation across all instituitions

    Visualizing accuracy of ARIMA model across all instituitions. The metrics used to evaluate the model were Mean Absolute Error (MAE), Mean Squared Error (MSE) and Root Mean Squared Error (RMSE). The ARIMA model performed reasonably well across all instituitions, with relatively low error metrics, implying good model performance. This was really fun to code as it was interesting to see how the model performed across different instituitions.

  • portfolio

    Employment Trends Across Universities in Singapore

    Analysis of how employment rates have changed over time across different universities in Singapore and economic events that led to a steep fall in employment. This visualization was created using matplotlib and seaborn in Python.

  • portfolio

    Graduate Outcomes by Degree Group

    This visualization was created using matplotlib and seaborn in Python. It shows the distribution of graduate outcomes by degree group, highlighting differences in employment rates and median salaries across different fields of study.

  • portfolio

    Employment Rates across Universities with Pyplot

    This is an interactive violin plot created using Plotly in Python. It shows the distribution of employment rates across different universities in Singapore, allowing for interactive use to zoom in on specific points of interest.

  • portfolio

    Growth of Mean Salary across Universities over Time

    Using Matplotlib, Seaborn, and a colormap module in Python, we visualized trends in mean graduate salaries across different universities in Singapore over time. The plot illustrates how average salaries have evolved for each institution, highlighting disparities in salary growth between universities. A 90% confidence interval is included to reflect the statistical uncertainty around the mean estimates.

  • portfolio

    Growth of Employment and Salary Trends across time.

    A brief overview of employment rate and average salary trends over time. This visualization, created using Matplotlib and Seaborn in Python, presents general patterns in both employment rates and average salaries across different years.

  • portfolio

    Distribution of Average Salary across Universities

    This boxplot, created using Matplotlib and Seaborn in Python, visualizes the distribution of graduate salaries across Singaporean universities. It highlights differences in median salaries and the variability in salary outcomes between institutions.

  • portfolio

    Visualizing The Damage.. Travel is Doing To My Wallet

    A visual collection of bad life decisions 🥲.

  • portfolio

    Chaotic Travel Expenditures - Sankey

    Visualizing where my money goes on trips (spoiler: I am spending way too much!! 🥲).

  • portfolio

    Chaotic Travel Expenditures - Plotly Barplots

    Barplots using Plotly.

  • portfolio

    Chaotic Travel Expenditures - Plotly Donut

    Visualize the sadness my wallet goes through with a Donut Chart.

  • portfolio

    Travel Expenses - Plotly Sunburst

    Visualizing my poverty, after a trip with a Sunburst Chart, by dividing major expenditure categories into specific subcategories.

  • portfolio

    Travel Expenses - Plotly Treemap

    I really love Python. It simplifies my work so much with beautiful charts.

  • portfolio

    Correlation Heatmap

    I really love Python. It simplifies my work so much with beautiful charts.

  • portfolio

    Python Kmeans - Unsupervised Learning

    Finding optimal k clusters for kmeans, with elbow method. Not silhouette score as it was too computationally expensive. Data had 750k values.

  • portfolio

    Kmeans - Analysis Findings from Clusters

    Feature means across clusters. Shows aggregated characteristics of each feature from cluster 1-5.

  • portfolio

    Kmeans - Distribution of Calorie Feature by Cluster

    Visualizing the numbers for each cluster!

  • portfolio

    Visualizing KMeans Feature Importance for each PCA component

    Each PCA component is a combination of all features, each attached with different weights to the features. PC1 consist of features contributing most to the variance, followed by PC2, PC3!

  • portfolio

    2D Visualisation with PCA

    The separation of the 5 clusters from kmeans.

  • portfolio

    3D Visualisation with PCA

    The separation of the 5 clusters from kmeans.

  • portfolio

    4D Visualisation with PCA

    3D viz + 1 added component of color (calories). Pretty tough to see. We will stick to 3D and 2D for better clarity!

  • portfolio

    Cluster Visualisation by 2 Specific Features

    There were a total of 8 features. But it is helpful to visualize how the clusters are grouped in a 2D landscape with 2 different features!

  • portfolio

    Top 3 Most Important Features Contributing to PCA

    Feature Importances visualized for PCA!

  • portfolio

    Factors Affecting HDB Sales

    This visualization was done in Tableau, to analyse how certain factors affect average HDB sales over time,
    after cleaning the data set in Python.

  • portfolio

    HDB Resale Prices by Year, Area, Flat Type

    Filter the dashboard to view how HDB resale prices changes with area, year and flat type .

  • portfolio

    Time Series Forecasting

    Forecasting HDB expected total sales, total revenue and resale prices.

  • portfolio

    General Forecast Trend of HDB Resale Prices

    Forecasting HDB Resale prices by Flat Type and Town

  • portfolio

    Government Fiscal Position in Singapore

    Visualizing the areas of government expenditure by class, category and type.

  • portfolio

    Analysis of Economic Events and Government Budget Balance

    In depth analysis of the economic events leading to negative budget balance and the measures taken to overcome recession in Singapore at different years.

  • portfolio

    Analysis of Government Expenditure by Areas

    Visualizing the exact values of goverment expenditure by items with a table and expenditure flows across categories with a sankey diagram.

  • portfolio

    Breakdown of Government Expenditure by Ministry

    Visualizing ministry spending trends over the years and ranking of ministries by highest accumulative spending over time.

  • portfolio

    Sources of Government Revenue in Singapore

    Visualizing how government revenue is collected and the breakdown of revenues by classes and types.

  • portfolio

    Trends in the Education Landscape of Singapore

    We visualized how enrollment, intake and graduation trends have been steadily increasing across various tertiary institutes such as ITE, Poly, Uni by gender across the years.

  • portfolio

    Education and Graduate Career Prospects in Singapore

    We visualized of the distribution of student enrollment in various universities and distribution of academic areas chosen to study. We also analysed and compared graduate outcomes across degree groups by comparing median salaries and rate of full time employment.

  • portfolio

    Analyzing Trends in Singapore's Rental Market

    An overview of how rental prices have been increasing by flat type and region, and a detailed analysis of how the government has been trying to cushion the rise in prices and support the rental market with cooling measures.

  • portfolio

    Analyzing Trends in Singapore's Rental Market

    Detailed rental statistics by region, town, flat type and it's popularity ranking.

  • portfolio

    Does Religion Shape Marital Outcomes in Singapore?

    This was an interesting project to find out if trends in religion have a statistical significance in determining the outcome of marital status.

  • portfolio

    The Problem of Class Imbalance in Determining Statistical Significance

    Though there is a noticeable relationship between being religion type and specific marital outcomes such as married and divorced, we note that both Buddhism and Christianity takes up a large proportion of the population demographics, which would influence the proportion of marital status strongly .

  • portfolio

    Correlation does not imply causation.

    Any observed differences may reflect population demographic proportions rather than religious influence on marital status. Population class imbalance tells a more complex story, rather than a simple conclusion that being in a certain religion influences specific marital outcomes.

  • portfolio

    Transportation Trends Across Singaporean Workers

    I imagined I was working for an agency that wanted to improve the commute experience for Singaporean workers, and wanted to know which mode of transport it should focus its' expenditures on, in order to benefit majority of it's citizens. Numbers in each categories were aggregated by utilizing calculated fields and fixed LODs.

  • portfolio

    Exploring The Rise of Foreign Workers Statistics in Singapore

    Visualizing how the in-flow of foreign workers have steadily increased, by breaking down into specific components that lead to the increase, such as the in-flow by type of worker (workforce/construction/domestic workers) and by type of work pass allocated (work permit/s-pass/employment pass).

  • portfolio

    Trends in the Manufacturing Landscape of Singapore

    We visualized how the key performance metrics in Singapore's Manufacturing Sector has been steadily increasing across it's categories, over the years.

  • portfolio

    Manufacturing Financial and Operational Statistics by Year

    Visualization of the growth of each individual operational statistics category by year.

  • portfolio

    Where Did All My Money Disappear?!

    Visualizing where my money goes on trips (spoiler: I am spending way too much!! 🥲).

  • portfolio

    Fun Project : Cost Savings of Extending Your Holiday by 1 Day

    Made this project for fun to convince my friend to extend her holiday by 1 day with me by mapping out cost savings from flights, activities and affordable accomodation prices.

  • portfolio

    Fun Project : Cost Savings of Extending Your Holiday by 1 Day

    Mapping out cost savings from flights, activities and the affordable accomodation prices in Manila.

  • portfolio

    Administration App

    This app was created for an interview on 11-Dec-2025. Automates the administration workflow and visualization of data.

  • portfolio

    KMeans Clustering App

    Created this App specifically for an interview with the Prime Ministers' Office Communication Group, for a research analytics role, on 12-Nov-2025.
    I wanted to create something useful for generating insights from data, that the interviewers could use in their daily work.

  • portfolio

    Predictions with Regression Models App

    Created this App specifically for an interview with the Prime Ministers' Office Communication Group, for a research analytics role, on 12-Nov-2025.
    I wanted to create something useful for forecasting predictions from data, that the interviewers could use in their daily work.

  • portfolio

    HDB Resale Price Predictor App

    Deployed my machine learning model from a personal project, analysing past HDB resale prices to forecast future HDB resale prices, based on a user's input of desired housing features. Predictions were adjusted for inflation.
    The app was coded with with Python, then deployed on Streamlit Cloud.
    Lastly, I leveraged CSS and HTML to design the web app beautifully. It was pretty fun to deploy my model into something interesting for others to use.

  • portfolio

    Fresh Grad Salary Predictor App

    What will my estimated fresh grad salary and employment rate look like if I graduated from a XXX University, studying XXX course, graduated in XXX year?
    Lastly, I leveraged CSS and HTML to design the web app beautifully. It was pretty fun to deploy my model into something interesting for others to use.

  • portfolio

    Dad Jokes App (API, Automation and Web Scraping)

    This streamlit app was created to practice automating a connection with an API,
    to generate dad jokes infinitely without repetition.
    I created this to bring laughter to others, and practice how to deploy an app,
    as I am working on deploying future automated data analysis and prediction apps.
    Conveniently, I learnt to code my first personal portfolio page, on the app.
    This page you are currently seeing is my third attempt at making a personal portfolio,
    coded with CSS, HTML and JAVASCRIPT.
    I'm pretty new at coding websites, but it has been interesting to learn, as it is something outside of data analytics!

  • portfolio

    HDB Price Analysis and Forecasting Project

    This project aims to analyze and forecast future HDB resale prices in Singapore.
    Data pre-processing was first carried out, where I cleaned the data, handled missing values and inconsistent formats.
    Then I merged multiple resale data sets. Then, with a separate CPI data set, I adjusted nominal prices for inflation to reflect its' real value.
    Next, exploratory data analysis was conducted, where I visualized trends of resale prices by year, flat type, town, flat model and storey range.
    I then researched the economic events that resulted in steep changes in HDB prices, annotating them on the overall trend visualization with Python. Lastly, I created a machine learning model with Random Forest Regression to forecast future HDB resale prices.
    Two models were created - a more generic model that allowed for greater accuracy and a second more specific model that allowed for more feature input. The two models were then deployed on a web app to allow users to forecast HDB resale prices based on their desired HDB features. The final predicted HDB resale prices were also adjusted for inflation by using forecasted CPI values, which were attained from a separate linear regression model.
    This app can be found under "Apps Deployed" section.

  • portfolio

    Graduate Employment Analysis

    This is my GitHub Repository, where I have uploaded my Python code used to clean, merge, validate and visualize graduate outcomes in Singapore. The link to my Tableau Visualizations can be found in the repo too.


  • portfolio

    Predicting Road Accident Risk with XGB Regressor Model

    Model Accuracy Score = 0.05569 (RMSE).
    Predicting likelihood of road accidents based on different environmental and road conditions. Preprocessed data with StandardScaler and OneHotEncoding, before fitting into pipeline. Then, tuned hyperparameters with RandomSearchCV to get the best model parameters.




  • portfolio

    Predicting Loan Repayment with XGB Classifier Model

    Model Accuracy Score = 0.92142 (ROC-AUC).
    Predicting likelihood of loan default and repayment based on character demographics. Preprocessed data with StandardScaler and OneHotEncoding, before fitting into pipeline. Then, tuned hyperparameters with RandomSearchCV to get the best model parameters.

  • portfolio

    Predicting Calorie Expenditure with XGB Regressor Model

    Final Model RMSLE = 0.05903.
    Lower RMSLE = More accurate and better predictions. Predicting exercise calorie expenditure based on given character demographics.

  • portfolio

    Cleaning and Tidying Data

    All done in Python and only Python. I really love Python so much.. due to it's efficiency.

  • portfolio

    Analyzing Factors affecting Student's Test Scores

    This is my GitHub Repository, where I have uploaded my Python code used to clean, merge, validate and visualize the data.

  • Education and qualifications

    End of Portfolio

    Thank you for visiting my vizzes!