Data Analytics · GitHub Portfolio
How to Showcase Data Analytics Projects on GitHub Properly
Quick summary — showcasing analytics projects on GitHub
To showcase data analytics projects on GitHub properly, use a clear folder structure, write a README that starts with the business question and key findings, store SQL in named files, keep notebooks clean and in order, add chart images and dashboard screenshots, and pin your best repositories on a tidy profile. Recruiters should understand the project without running code.
In this guide you will learn:
- Repository structure — for analytics projects.
- README sections — that recruiters read first.
- SQL, notebooks and dashboards — presented well.
- Repo and profile templates — to copy.
- Interview questions — about your GitHub projects.
SECTION 01Repository structure for analytics projects
A recruiter opening your repository should see a tidy layout that explains itself. Separate raw data, SQL queries, notebooks and images into folders, and avoid uploading large or private datasets. If the data is public, link to the source instead of committing big files. A clear structure tells reviewers that you work in an organised way, which matters in any analytics team:
| Item | Weak version | Strong version | Why it matters |
|---|---|---|---|
| Folders | Everything in the root | data/, sql/, notebooks/, images/, dashboard/ | Easy to navigate |
| Data files | Huge CSVs committed | Small sample + link to the public source | Repo stays light and legal |
| File names | final_v2_new.ipynb | 01_cleaning.ipynb, 02_analysis.ipynb | Shows the order of work |
| Ignored files | Checkpoints and caches committed | .gitignore for caches and secrets | Clean history |
retail-sales-analysis/
|-- README.md
|-- requirements.txt
|-- .gitignore
|-- data/
| |-- README.md # source link and licence
| `-- sample_orders.csv # small sample only
|-- sql/
| |-- 01_monthly_revenue.sql
| |-- 02_repeat_customers.sql
| `-- 03_top_categories.sql
|-- notebooks/
| |-- 01_cleaning.ipynb
| `-- 02_analysis.ipynb
|-- images/
| |-- monthly_revenue.png
| `-- dashboard.png
`-- dashboard/
`-- sales_dashboard.pbix
# Python and Jupyter
__pycache__/
.ipynb_checkpoints/
.venv/
# Data: keep only small samples in the repo
data/raw/
*.parquet
# Secrets
.env
*.key
# OS files
.DS_Store
Thumbs.db
SECTION 02README: the page recruiters actually read
Most visitors read the README and nothing else, so it must stand on its own. Start with the business question and the main finding, then show one or two charts as images, explain the data and cleaning briefly, and finish with recommendations and limitations. Avoid long technical walls of text at the top. A reader should understand the project's value within a minute or two:
| Section | What to include | Common mistake | Tip |
|---|---|---|---|
| Title and summary | Project name and a two-line summary | Only the dataset name | Lead with the business angle |
| Key findings | Three bullet findings with one chart | Findings buried at the bottom | Put findings near the top |
| Data and method | Source, size, cleaning steps, tools | No source or licence | Link the public source |
| Recommendations and limits | What to do and what the analysis cannot say | Overclaiming | Be honest about limits |
# Retail Sales Analysis
Which product categories drive repeat purchases, and when do
sales peak? Analysis of a public retail dataset using SQL,
Python and Power BI.
## Key findings
- Two categories account for most repeat purchases
- Sales peak in the festive season and on weekends
- Repeat rate is lower for customers whose first order was discounted

## Data
Public dataset (link), 12 months, cleaned as described below.
## Recommendations
1. Focus retention offers on the two strongest categories
2. Test smaller first-order discounts
## Limitations
One retailer, one year; no cost data.
import pandas as pd
import matplotlib.pyplot as plt
from pathlib import Path
Path("images").mkdir(exist_ok=True)
monthly = pd.DataFrame({
"month": pd.date_range("2025-11-01", periods=12, freq="MS"),
"revenue": [42, 38, 35, 37, 40, 39, 41, 43, 45, 52, 61, 48],
})
ax = monthly.plot(x="month", y="revenue", legend=False, marker="o")
ax.set_title("Monthly revenue (thousands)")
ax.set_xlabel("")
plt.tight_layout()
plt.savefig("images/monthly_revenue.png", dpi=150)
print("saved images/monthly_revenue.png")
SECTION 03SQL, notebooks and dashboards
Analytics work often uses three kinds of files: SQL queries, Python or R notebooks, and dashboard files from Power BI or Tableau. Each needs a little care to be readable on GitHub. SQL should be in named files with comments, notebooks should run top to bottom with clear headings, and dashboard files should be accompanied by screenshots or a public link, because most reviewers will not open them:
| File type | Good practice | Avoid | Why |
|---|---|---|---|
| SQL | One query per file, comments at the top | All queries in one huge file | Easy to find and read |
| Notebooks | Headings, short explanations, run in order | Errors, unused cells, unexplained outputs | Shows clean thinking |
| Dashboards | Screenshots plus a public link if allowed | Only a .pbix or .twbx file | Reviewers rarely open these files |
| Requirements | requirements.txt with versions | No setup information | Others can reproduce your work |
-- sql/02_repeat_customers.sql
-- Purpose: share of customers who ordered more than once, by first-order month
-- Input: orders(order_id, customer_id, order_date, amount)
-- Output: first_month, customers, repeat_customers, repeat_pct
WITH firsts AS (
SELECT customer_id,
MIN(order_date) AS first_order,
COUNT(*) AS orders
FROM orders
GROUP BY customer_id
)
SELECT strftime('%Y-%m', first_order) AS first_month,
COUNT(*) AS customers,
SUM(orders > 1) AS repeat_customers,
ROUND(100.0 * SUM(orders > 1) / COUNT(*), 1) AS repeat_pct
FROM firsts
GROUP BY first_month
ORDER BY first_month;
# Run before pushing: executes the notebook top to bottom
# pip install nbconvert nbformat
import subprocess, sys
for nb in ["notebooks/01_cleaning.ipynb", "notebooks/02_analysis.ipynb"]:
result = subprocess.run(
[sys.executable, "-m", "jupyter", "nbconvert", "--to", "notebook",
"--execute", "--inplace", nb],
capture_output=True, text=True)
print(nb, "OK" if result.returncode == 0 else "FAILED")
if result.returncode != 0:
print(result.stderr[-500:])
SECTION 04Analytics repository and profile templates
Use these templates to upgrade your repositories and GitHub profile:
[ ] Clear repo name (retail-sales-analysis, not project1)
[ ] One-line description and topics set
[ ] README: question, findings, chart, data, recommendations, limits
[ ] SQL in numbered, commented files
[ ] Notebooks run top to bottom
[ ] Dashboard screenshots in images/
[ ] Data source and licence linked
[ ] No large or private data committed
# Hi, I am <Name>
Aspiring data analyst working with SQL, Excel, Power BI and Python.
## Projects
- **Retail Sales Analysis**: repeat purchases and seasonality (SQL, Power BI)
- **Appointment No-shows**: which slots are missed most (Python)
- **Delivery KPI Dashboard**: on-time performance (Excel, Power BI)
LinkedIn: <link>
Good commit messages for analytics work
add monthly revenue query and chart
clean city names and document steps in README
add repeat customer analysis by first-order month
add dashboard screenshots
fix date parsing in cleaning notebook
Avoid: 'update', 'final', 'changes', 'asdf'
SECTION 05Tips for analytics portfolios on GitHub
These habits make your analytics repositories stand out:
- Lead with the question — the first lines of the README should say what you answered.
- Show charts as images — reviewers should see results without running code.
- Keep data legal and light — link public sources; never commit private data.
- Pin your best three — a focused profile beats a crowded one.
- Commit steadily — regular, meaningful commits show real work.
SECTION 06Interview Q&A — analytics GitHub
Q1Walk me through one of your GitHub analytics projects.
Give the business question, data source, cleaning steps, key SQL or analysis, main finding with a chart, recommendation and limitations.
Q2Why did you structure your repository this way?
Explain how folders separate data, SQL, notebooks and images so others can follow the work and reproduce it.
Q3How do you handle large or private datasets in a public repo?
Commit only a small sample or none at all, link to the public source with its licence and never upload private data.
Q4How do you make sure your notebook results are reproducible?
List dependencies, set random seeds where used, avoid manual edits and run the notebook fully from top to bottom before pushing.
Q5What would you improve in this project with more time?
Name concrete steps, such as adding more months of data, testing a recommendation or building an interactive dashboard.
SECTION 07Test yourself — analytics GitHub quiz
Five questions. No sign-up.
0 / 5Pick an answer to see why it is right or wrong.
SECTION 08Frequently asked questions
Should data analysts use GitHub?
Yes. GitHub lets recruiters see your SQL, notebooks and documentation, and shows you can organise and version your work.
What should a data analytics GitHub repository include?
A README with question and findings, numbered SQL files, clean notebooks, chart images, dashboard screenshots, a data source link and requirements.
Can I upload Power BI or Tableau files to GitHub?
You can, but add screenshots and a public link where allowed, because most reviewers will not open the files themselves.
How many projects should be on my analytics GitHub?
Two to four strong, well-documented projects are usually enough. Pin your best ones.
Is it okay to use public datasets in a GitHub portfolio?
Yes, if the licence allows it. Link the source, credit it and avoid committing very large files.
SECTION 09Related reads
Classroom & online · Noida
Build analytics projects worth showcasing
Our Data Analytics Training Course helps you build SQL, Excel, Power BI and Python projects with GitHub-ready documentation and mentor reviews.
₹15,500 · full programme- Portfolio-ready projects
- SQL, Excel and Power BI
- GitHub and README reviews
- Weekday & weekend batches