Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
79 commits
Select commit Hold shift + click to select a range
0066cea
Add files via upload
Kat-Bristol Feb 2, 2026
2ccc239
Add files via upload
Kat-Bristol Feb 2, 2026
c9be14f
Create blog post on Coffee & Python
Kat-Bristol Feb 2, 2026
2a2ba53
Modify site configuration for new user details
Kat-Bristol Feb 2, 2026
c2ce97f
Reformat _config.yml for consistency
Kat-Bristol Feb 2, 2026
84672bf
Update _config.yml
Kat-Bristol Feb 2, 2026
58eec96
Update _config.yml
Kat-Bristol Feb 2, 2026
9c5f699
Update _config.yml
Kat-Bristol Feb 2, 2026
a875b26
Add files via upload
Kat-Bristol Feb 2, 2026
79d18ca
Modify resume URL and avatar image in config
Kat-Bristol Feb 2, 2026
6ea5856
Reformat _config.yml with consistent indentation
Kat-Bristol Feb 2, 2026
25136a3
Fix resume URL format in _config.yml
Kat-Bristol Feb 2, 2026
ff211e3
Add files via upload
Kat-Bristol Feb 3, 2026
e460469
Add files via upload
Kat-Bristol Feb 3, 2026
ad92c94
Add Earthquake Tracking Dashboard post
Kat-Bristol Feb 4, 2026
4bb383c
Add files via upload
Kat-Bristol Feb 4, 2026
8dd556e
Add files via upload
Kat-Bristol Feb 4, 2026
a46e003
Add new post for Earthquakes Map in Tableau
Kat-Bristol Feb 4, 2026
92ca209
Enhance Earthquake Dashboard description and iframe
Kat-Bristol Feb 4, 2026
d75991b
Rename 2026-02-01-Earthquakes-Map-Tableau to 2026-02-01-Earthquakes-M…
Kat-Bristol Feb 4, 2026
b47ddcb
Update Earthquakes Map Tableau post content
Kat-Bristol Feb 4, 2026
a4b3d90
Add files via upload
Kat-Bristol Feb 4, 2026
0cf6c0b
Add files via upload
Kat-Bristol Feb 4, 2026
58e2cad
Update 2026-02-01-Earthquakes-Map-Tableau.md
Kat-Bristol Feb 4, 2026
9910483
Rename 2021-06-25-coffee-and-python.md to 2026-01-25-coffee-and-pytho…
Kat-Bristol Feb 4, 2026
c45698a
Add new post on finding prime numbers with Python
Kat-Bristol Feb 4, 2026
b8763dd
Rename 2026-01-25-coffee-and-python.md to 2021-06-25-coffee-and-pytho…
Kat-Bristol Feb 4, 2026
51640ab
Rename 2026-01-30-Finding-Prime-Numbers-With-Python.md to 2021-06-09-…
Kat-Bristol Feb 4, 2026
eb63317
Clean up markdown formatting in Tableau post
Kat-Bristol Feb 4, 2026
d109814
Add header to Earthquake Tracking Dashboard post
Kat-Bristol Feb 4, 2026
4bea7b0
Clean up formatting in Earthquakes Map post
Kat-Bristol Feb 4, 2026
9145713
Add coffee_and_python.txt display section
Kat-Bristol Feb 4, 2026
9a3e484
Enhance description of Tableau Dashboard features
Kat-Bristol Feb 4, 2026
fb7f5b8
Rename 2021-06-09-Finding-Prime-Numbers-With-Python.md to 2026-01-30-…
Kat-Bristol Feb 4, 2026
4ff4e33
Reformat _config.yml with consistent spacing
Kat-Bristol Feb 4, 2026
b3c1ae1
Add files via upload
Kat-Bristol Feb 4, 2026
9cfa25c
Create 2026-02-04-Guessing-Number-Game
Kat-Bristol Feb 4, 2026
9d2fedd
Update post metadata
Kat-Bristol Feb 4, 2026
644a3c9
Add files via upload
Kat-Bristol Feb 4, 2026
3f052c4
Update post title, image, and tags for guessing game
Kat-Bristol Feb 4, 2026
495d5f4
Add guessing number game in Python
Kat-Bristol Feb 4, 2026
5ad3f54
Rename 2026-02-04-Guessing-Number-Game to 2026-02-04-Guessing-Number-…
Kat-Bristol Feb 4, 2026
62e6c73
Update Guessing Number Game post content
Kat-Bristol Feb 4, 2026
255de40
Update 2026-02-04-Guessing-Number-Game.md
Kat-Bristol Feb 4, 2026
04e379c
Update guessing number game with bounds and limits
Kat-Bristol Feb 5, 2026
4dd6728
Create 2026-02-10-Image-Procesing-NumPy.md
Kat-Bristol Feb 10, 2026
28e15af
Initialize Image Processing post with front matter
Kat-Bristol Feb 10, 2026
9bc2918
Add introduction to image processing with NumPy
Kat-Bristol Feb 10, 2026
ce1c212
Add NumPy image processing examples
Kat-Bristol Feb 10, 2026
b606495
Update image reference in Image Processing post
Kat-Bristol Feb 10, 2026
5baeeca
Add files via upload
Kat-Bristol Feb 10, 2026
2e0b586
Update headers to improve Markdown formatting
Kat-Bristol Feb 10, 2026
ac5769d
Add numpy import to image processing tutorial
Kat-Bristol Feb 10, 2026
b424c27
Enhance post description for image processing with NumPy
Kat-Bristol Feb 10, 2026
f339c5b
Update 2026-02-10-Image-Procesing-NumPy.md
Kat-Bristol Feb 10, 2026
2997d5e
Update 2026-02-10-Image-Procesing-NumPy.md
Kat-Bristol Feb 10, 2026
c891e1e
Update 2026-02-10-Image-Procesing-NumPy.md
Kat-Bristol Feb 10, 2026
0dbc925
Update 2026-02-10-Image-Procesing-NumPy.md
Kat-Bristol Feb 10, 2026
2c89e48
Add files via upload
Kat-Bristol Feb 10, 2026
ce45882
Add files via upload
Kat-Bristol Feb 10, 2026
9b544f3
Update 2026-02-10-Image-Procesing-NumPy.md
Kat-Bristol Feb 10, 2026
a165721
Update 2026-02-04-Guessing-Number-Game.md
Kat-Bristol Feb 10, 2026
67801f8
Update 2026-02-04-Guessing-Number-Game.md
Kat-Bristol Feb 10, 2026
38be566
Update 2026-02-04-Guessing-Number-Game.md
Kat-Bristol Feb 10, 2026
3350495
Create 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
ac7830d
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
8d6752d
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
32b4c6b
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
23058f8
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
73a5a5a
Add files via upload
Kat-Bristol Feb 11, 2026
8670347
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
a0f144f
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
e680522
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
31b0184
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
66d5ab3
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
a4bf8af
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
8e55555
Update 2026-02-07-AB-Testing.md
Kat-Bristol Feb 11, 2026
afdcc81
Add files via upload
Kat-Bristol Feb 11, 2026
2e4e68f
Add files via upload
Kat-Bristol Feb 11, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 16 additions & 7 deletions _config.yml
Original file line number Diff line number Diff line change
Expand Up @@ -8,22 +8,22 @@ plugins:

#-------------------------------
# General Site Settings
title: Johnny Hopkins
description: "Hi I'm Johnny, and I'm a Data Scientist. My portfolio focuses on interesting projects I've recently undertaken, with a strong emphasis on business impact. Please visit my Github & LinkedIn pages (or download my Resume) by using the links below!"
title: Aikaterini Tsaousi
description: "Hi I'm Kat and I'm a Data Scientist. My portfolio focuses on interesting projects I've recently undertaken. Please visit my Github & LinkedIn pages (or download my Resume) by using the links below!"
baseurl: "" # the subpath of your site, e.g. /blog
url: "" # the base hostname & protocol for your site, e.g. http://example.com

#-------------------------------
# About Section
subtitle: Data Science <span style="color:#f58506"> Portfolio </span>
location: "London, UK"
resume_url: /docs/resume.docx
avatar_image: /img/profile_picture.JPG
location: "Bristol, UK"
resume_url: /docs/Draft_CV_Jan_2026.pdf
avatar_image: /img/SoY_Profile_Photo.jpg

#-------------------------------
# Contact links
linkedln: "https://linkedln.com/#" # Add your linkedln handle
github: "https://github.com/#" # Add your github handle
linkedln: "https://www.linkedin.com/in/aikaterini-tsaousi/" # Add your linkedln handle
github: "https://github.com/Kat-Bristol" # Add your github handle

paginate: 6
paginate_path: "/page/:num"
Expand Down Expand Up @@ -52,3 +52,12 @@ defaults:
# - vendor/gems/
# - vendor/ruby/










77 changes: 77 additions & 0 deletions _posts/2021-06-25-coffee-and-python.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@


coffee_and_python.txt
Page
1
/
1
100%
---
layout: post
title: Coffee & Python
image: "/posts/coffee_python.jpg"
tags: [Python, Coffee]
---

# My first project
## is all about
### how much
#### I LOVE
##### Python & Coffee!

---

Firstly, I love Python so much, here is some code!

```
my_love_for_python = 0
my_python_knowledge = 0

for day in lifetime:
my_love_for_python += 1
my_python_knowledge += 1
```

Just so you really see how much I love Python, here is some code BUT with some colours for keywords & functionality!

```python
my_love_for_python = 0
my_python_knowledge = 0

for day in lifetime:
my_love_for_python += 1
my_python_knowledge += 1
```

Here is an **unordered list** showing some things I love about Python

* For my work
* Data Analysis
* Data Visualisation
* Machine Learning
* For fun
* Deep Learning
* Computer Vision
* Projects about coffee

Here is an _ordered list_ showing some things I love about coffee

1. The smell
1. Especially in the morning, but also at all times of the day!
2. The taste
3. The fact I can run the 100m in approx. 9 seconds after having 4 cups in quick succession

I love Python & Coffee so much, here is that picture from the top of my project AGAIN, but this time, in the BODY of my project!

![alt text](/img/posts/coffee_python.jpg "Coffee & Python - I love them!")

The above image is just linked to the actual file in my Github, but I could also link to images online, using the URL!

A line break, like this one below - helps me make sense of what I'm reading, especially when I've had so much coffee that my vision goes a little blurry

---

I could also add things to my project like links, tables, quotes, and HTML blocks - but I'm starting to get a cracking headache. Must be coffee time.
Displaying coffee_and_python.txt.

---
11 changes: 11 additions & 0 deletions _posts/2026-02-01-Earthquakes-Map-Tableau.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
---
layout: post
title: Earthquake Tracking Dashboard Using Tableau
image: "/posts/Map.png"
tags: [Tableau, Data Viz]
---

This is a Tableau Dashboard that tracks global Earthquake activity across a 30-day period. You can use the slide bar to select the magnitude of earthquakes shown and/or the drop down menus to select the days and countries you want to include.

<iframe seamless frameborder="0" src="https://public.tableau.com/views/DSIEarthquakeDashboard_17696419825620/Map?:embed=yes&:display_count=yes&:showVizHome=no" width = '1090' height = '900'></iframe>

58 changes: 58 additions & 0 deletions _posts/2026-02-04-Guessing-Number-Game.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,58 @@
---
layout: post
title: Python Guessing Number Game
image: "/posts/games_guess_the_number.png"
tags: [Python]
---

Here is the Python Script for the game

---




import random

random.randint(1, 10)

LOWER_BOUND = 0

UPPER_BOUND = 100

GUESS_LIMIT = 5

GUESS_COUNTER = 0


CORRECT_NUMBER = random.randint(LOWER_BOUND, UPPER_BOUND)

print(f'Try guessing the number that I am thinking. It is between {LOWER_BOUND} and {UPPER_BOUND}. '
f'Good luck, you have {GUESS_LIMIT} guesses')

while True:
try:
user_guess = int(input('What is your guess?? '))
except ValueError:
print('Please enter a valid number')
continue

if not (LOWER_BOUND <= user_guess <= UPPER_BOUND):
print(f'Your guess is out of range! Try a guess between {LOWER_BOUND} and {UPPER_BOUND}')
continue

GUESS_COUNTER += 1
remaining_guesses = GUESS_LIMIT - GUESS_COUNTER

if user_guess == CORRECT_NUMBER:
print(f'Wow, you got it in {GUESS_COUNTER} guesses - well done!')
break
elif user_guess < CORRECT_NUMBER:
print(f'Your guess is too low, try again! Guesses remaining: {remaining_guesses}')
else:
print(f'Your guess is too high, try again! Guesses remaining: {remaining_guesses}')

if remaining_guesses == 0:
print(f"Sorry, you're out of guesses. The number you were after was {CORRECT_NUMBER}")
break
---
110 changes: 110 additions & 0 deletions _posts/2026-02-07-AB-Testing.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,110 @@
---
layout: post
title: Assessing Campaign Performance
image: "/posts/Performance_Marketing_mod.jpg"
tags: [A/B Testing, Chi-Square, Stats]
---

A/B tests are used in business to describe a hypothesis test. An A/B Test is essentially a randomised experiment containing two groups, A & B that receive different experiences. Within an A/B test, we look to understand and measure the response of each group. Marketing campaign performance analysis measures the effectiveness of marketing initiatives against defined goals.


---

Example of a Marketing Campaign Pilot:

- Group 1 – customers received Mailer 1 (a basic cheaper version) to sign up to loyalty scheme
- Group 2 – customers received Mailer 2 (a colourful more expensive version) to sign up to loyalty scheme
- Group 3 = control group - received no Mailer at all (but can still sign up to loyalty scheme via main menu)

The marketing team is certain that customers who received a mailer (i.e. Groups 1 or 2) signed up to the company's loyalty scheme more than the control group but are unsure whether the quality of mailer they received made a significant difference.

We can answer this question using hypothesis testing, in particular using the chi-square test for independence.

---



##### IMPORT REQUIRED PACKAGES
```
import pandas as pd
from scipy.stats import chi2_contingency as cc
from scipy.stats import chi2
```

##### IMPORT DATA (ensure the spreadsheet is located in the same directory as this Python Script File)
```
campaign_data = pd.read_excel('grocery_database.xlsx', sheet_name = 'campaign_data')
```



##### FILTER THE DATA (i.e take out all rows with CTL group using the .loc method)
```
campaign_data = campaign_data.loc[campaign_data['mailer_type'] != 'Control']
```



##### SUMMARISE TO GET OUR OBSERVED FREQUENCIES using .crosstab() method
```
observed_values = pd.crosstab(campaign_data['mailer_type'], campaign_data['signup_flag']).values
observed_values = pd.crosstab(campaign_data["mailer_type"], campaign_data["signup_flag"])
print(observed_values)

mailer1_signup_rate = 123 / (252 +123)
mailer2_signup_rate = 127 / (209 +127)
print(mailer1_signup_rate, mailer2_signup_rate)
```



##### STATE HYPOTHESES & SET ACCEPTANCE CRITERIA
```
null_hypothesis = 'there is no relationship between mailer type and signup rate. They are independednt.'
alternate_hypothesis = 'there is a relationship between mailer type and signup rate. They are NOT independednt.'
acceptance_criteria = 0.05
```



##### CALCULATE EXPECTED FREQUENCIES & CHI SQUARE STATISTIC
```
chi2_statistic, p_value, dof, expected_values = cc(observed_values, correction = False)
print(chi2_statistic, p_value)
```


##### FIND THE CRITICAL VALUE FOR THE TEST using the percentage point function
```
critical_value = chi2.ppf(1- acceptance_criteria, dof)
print(critical_value)
```


##### PRINT THE RESULTS/CONCLUSION (Chi Square Statistic)
```
if chi2_statistic >= critical_value:
print(f'As our chi-suqre-statistic of {chi2_statistic} is HIGHER than our citical value of {critical_value}, we REJECT the null hypothesis and conclude that {alternate_hypothesis}')
else:
print(f'As our chi-suqre-statistic of {chi2_statistic} is LOWER than our citical value of {critical_value}, we ACCEPT the null hypothesis and conclude that {null_hypothesis}')
```


##### PRINT THE RESULTS/CONCLUSION (p-value)
```
if p_value <= acceptance_criteria:
print(f'As our p-value of {p_value} is LOWER than our citical value of {acceptance_criteria}, we REJECT the null hypothesis and conclude that {alternate_hypothesis}')
else:
print(f'As our p-value of {p_value} is HIGHER than our citical value of {acceptance_criteria}, we ACCEPT the null hypothesis and conclude that {null_hypothesis}')
```
---


#### Output in our console (after the code is run):
```
As our chi-suqre-statistic of 1.9414468614812481 is LOWER than our citical value of 3.841458820694124, we ACCEPT the null hypothesis and conclude that there is no relationship between mailer type and signup rate. They are independednt.
As our p-value of 0.16351152223398197 is HIGHER than our citical value of 0.05, we ACCEPT the null hypothesis and conclude that there is no relationship between mailer type and signup rate. They are independednt.
```
---

#### *Business Insight: The Marketing Team can safely utilise the basic (cheaper) mailer as a means to increase signups. Using the colourful more expensive mailer would result in unnecessary costs/expenses for the company.*
Loading