-
Notifications
You must be signed in to change notification settings - Fork 0
/
index.html
953 lines (947 loc) · 92.6 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<meta name="description" content="">
<meta name="author" content="Dimitri Gatsos">
<title>Dimitris Gatsos - Portfolio</title>
<link rel="icon" href="/assets/img/fround.ico" type="image/x-icon">
<!-- Font Awesome icons (free version)-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.13.0/js/all.min.js" crossorigin="anonymous"></script>
<!-- Core theme CSS (includes Bootstrap)-->
<link href="css/styles.css" rel="stylesheet">
<!-- Fonts CSS-->
<link rel="stylesheet" href="css/heading.css">
<link rel="stylesheet" href="css/body.css">
</head>
<body id="page-top">
<nav class="navbar navbar-expand-lg bg-secondary fixed-top" id="mainNav">
<div class="container"><a class="navbar-brand js-scroll-trigger" href="#page-top">Dimitris Gatsos</a>
<button class="navbar-toggler navbar-toggler-right font-weight-bold bg-primary text-white rounded" type="button" data-toggle="collapse" data-target="#navbarResponsive" aria-controls="navbarResponsive" aria-expanded="false" aria-label="Toggle navigation">Menu <i class="fas fa-bars"></i></button>
<div class="collapse navbar-collapse" id="navbarResponsive">
<ul class="navbar-nav ml-auto">
<li class="nav-item mx-0 mx-lg-1"><a class="nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger" href="#portfolio">PORTFOLIO</a>
</li>
<li class="nav-item mx-0 mx-lg-1"><a class="nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger" href="#about">ABOUT</a>
</li>
<li class="nav-item mx-0 mx-lg-1"><a class="nav-link py-3 px-0 px-lg-3 rounded js-scroll-trigger" href="#contact">CONTACT</a>
</li>
</ul>
</div>
</div>
</nav>
<header class="masthead bg-primary text-white text-center">
<div class="container d-flex align-items-center flex-column">
<!-- Masthead Avatar Image--><img class="masthead-avatar mb-5" src="assets/img/dimiAvatar.png" alt="">
<!-- Masthead Heading-->
<h1 class="masthead-heading mb-0">Dimitris Gatsos</h1>
<!-- Icon Divider-->
<div class="divider-custom divider-light">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Masthead Subheading-->
<p class="pre-wrap masthead-subheading font-weight-light mb-0">Data Analytics & HubSpot Specialist</p>
</div>
</header>
<section class="page-section portfolio" id="portfolio">
<div class="container">
<!-- Portfolio Section Heading-->
<div class="text-center">
<h2 class="page-section-heading text-secondary mb-0 d-inline-block">PORTFOLIO</h2>
</div>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Grid Items-->
<div class="row justify-content-center">
<!-- Portfolio Items-->
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal2">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/Hubspot-crm-integrations.png" alt="Hubspot 1"/>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal2">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/Hubspot-crm-integrations.png" alt="Hubspot 2"/>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal2">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/Hubspot-crm-integrations.png" alt="Hubspot 3"/>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal3">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/season1.jpg" alt="Impact of Seasonal Fluctuations on Used Car Prices in Greece"/>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal6">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/ireland.PNG" alt="irish_rental_market"/>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal5">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/frontimage.jpg" alt="Google Data Analytics Proj 1"/>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal0">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/dalldashboard.jpg" alt="Betting Account Performance Breakdown"/>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal4">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/75788ee6-225c-48ba-8ba7-ed45575153e7.jpg" alt="The comparative betting project"/>
</div>
</div>
<div class="col-md-6 col-lg-4 mb-5">
<div class="portfolio-item mx-auto" data-toggle="modal" data-target="#portfolioModal1">
<div class="portfolio-item-caption d-flex align-items-center justify-content-center h-100 w-100">
<div class="portfolio-item-caption-content text-center text-white"><i class="fas fa-plus fa-3x"></i></div>
</div><img class="img-fluid" src="assets/img/portfolio/SW1.PNG" alt="Analyzing Value in the 'Star Wars Unlimited' Collection: A Data-Driven Approach"/>
</div>
</div>
</div>
</div>
</section>
<!-- Portfolio Modal-->
<div class="portfolio-modal modal fade" id="portfolioModal0" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal0Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Betting Account Performance Breakdown</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.betAccPerf/dash1.PNG" alt="Betting Account Performance Breakdown"/>
<!-- Portfolio Modal - Text-->
<p class="mb-5"><h2>Project Overview</h2>
<p>This project was a routine part of my duties as a Data Analytics Assistant within a local Value Betting Syndicate (You can find the source file <a href="https://github.com/dmgts/dmgts.github.io/tree/main/assets/pjDataFiles/pj.betAccPerf" target="_blank">here</a>). Tasks included:
<ul>
<li>Collecting and converting PDF wagering histories to Excel.</li>
<li>Verifing data accuracy and cleaning data.</li>
<li>Processing data as needed (datetime segmentation, odds standardization, calculated fields).</li>
<li>Calculated key metrics like ROI and P/L using pivot tables.</li>
<li>Incorporating calculated metrics into dashboard.</li>
</ul>
</p>
</p>
<hr>
<p class="mb-5"><h2>Data Processing Steps</h2>
<p>During the data processing phase of this project, several key steps were undertaken to refine and structure the dataset for in-depth analysis, including:</p>
<p><strong>1. Seperated Datetime column</strong> into Date and Time for detailed analysis.</p>
<p><strong>2. Refined column labels</strong> for better interpretability and clarity.</p>
<p><strong>3. Extracted and standardized odds</strong> data for consistency.</p>
<p><strong>4. Cleanup Selection Column</strong> to remove irrelevant information.</p>
<p><strong>5. Standardized data</strong> via 'Find and Replace' to unify the bet_type and result columns.</p>
<p><strong>6. Extracted and cleansed market</strong> information from the event column for data integrity.</p>
<p><strong>7. Profit and Loss (P/L) calculation</strong> into a new column to measure financial performance.</p>
<p><strong>8. Introduced Live Bet</strong> column to mark live bets based on the selection column data.</p>
<p><strong>9. Calculated ommited data</strong>, where possible, to enhance dataset reliability and completeness.</p>
<p><strong>10. Created Odds Buckets</strong> to categorize bets and analyze outcomes.</p>
<p><strong>11. Classified Market Category</strong> to categorize bets and analyze market-specific trends.</p>
<p>The processed document went from this:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.betAccPerf/cleaning__from_this.PNG" alt="Cleaning from this">
<p>To this:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.betAccPerf/to_this.PNG" alt="Cleaning output">
</p>
<hr>
<p class="mb-5"><h2>Analysis and Metrics Calculation</h2>
<p>Next, I used pivot table functionalities to calculate key metrics to assess the strategic effectiveness and financial health of the betting account, including:</p>
<ol>
<li><strong> Return on Investment (ROI):</strong> Evaluates the profitability of betting activities.</li>
<li><strong> Picks Volume:</strong> Reflects the frequency of betting activity</li>
<li><strong> Hit Rate:</strong> Measures the precision of bet selections.</li>
<li><strong> Profit/Loss (P/L):</strong> Financial summary indicating net outcomes.</li>
<li><strong> Average Stake:</strong> Reveals the standard bet size, indicating the risk tolerance.</li>
<li><strong> Average Odds:</strong> Offers insights into the risk-return profile.</li>
</ol>
<p>Below we see each of these in comparison to their twelve month average for a quick performance comparison of the account.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.betAccPerf/p1_perfor.PNG" alt="p1_perfor">
</p>
<hr>
<p class="mb-5"><h2>Performance Evaluation</h2>
<p>This specific account showed around average results on 'Hit Rate', 'Average Stake' and 'Average odds'. However, the amount of bets this account placed (47% above average)
and a rare ROI performance (60% above average) drove its high profitability compared to a 12-months average P/L. The high ROI, coupled with the insights from the 'Monthly Growth'
in the dashboard below might indicate that the account was in a pick in variance. </p>
<p>The dashboard below effectively captures all the critical information. It allows for advanced filtering, making it easy to interactively explore and analyze the account’s performance in detail.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.betAccPerf/dash2.PNG" alt="p1_perfor">
<p>For example, we can easily see above that 'Handicaps' were responsible for most of the P/L and almost 2/3 of the picks on this account.</p>
<p>While below we can easily see that the Odds bucket 1.5-1.99 in December returned 110% of the total P/L. That is how a great run looks like!</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.betAccPerf/dash3.PNG" alt="p1_perfor">
</p>
<hr>
<p class="mb-5"><h2>Project Impact</h2>
<p>This project, which I managed end-to-end on my own, transformed from a bi-monthly task to several times within the same period.
Primarily focused on reporting, my work facilitated smoother operations and informed decision-making across the organization.
</p>
</p>
<hr>
<p>Thanks for reading. Some information have been altered to ensure privacy. Feel free to reach out for any comment.</p>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal1" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal1Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Analyzing Value in the 'Star Wars Unlimited' Collection: A Data-Driven Approach</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/dashboard.PNG" alt="SWdashboard"/>
<!-- Portfolio Modal - Text-->
<p class="mb-5"><h2>Project Overview</h2>
<p>Welcome to our analytical journey through the galaxy of "Star Wars Unlimited" card game! After following my brother;s passion for card/ board games and
his advise to purchase a "Spark of Rebellion" case full of collectibles, I wanted to:
<ul>
<li>Better understand the economic value of our collection.</li>
<li>Identify possible strategies for reselling part of our collection with a break even return on our investment in mind.</li>
</ul>
</p>
<p> Therefore, I asked myself:
<ul>
<li>What is the total estimated market value of our collection, and how does this breakdown by card rarity and type? </li>
<li>What is the distribution of card values within each rarity category AND how does rarity affect the card's value?</li>
</ul>
</p>
<p>To answer these I performed a detailed value analysis against the vibrant marketplace of cardmarket.com.
To keep everything organized and make sense of it all, I used Excel. It helped me catalog every card and set up a dashboard. (You can find the source file <a href="https://github.com/dmgts/dmgts.github.io/tree/main/assets/pjDataFiles/pj.SWCards" target="_blank">here</a>).
</p>
<p>Some snapshot insights include:
<ul>
<li>We have a collection predominantly composed of cards valued under 3 euros, yet boasting an overall approximate expected market value of 770€.</li>
<li>A mere 9 cards, out of the 2304 purchased, belonging in the above 15€ bracket hold a treasure trove worth approximately 390€.</li>
<li>The initial investment was 550€.</li>
</ul>
</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/actualCards.jpg" alt="actualcards">
</p>
<hr>
<p class="mb-5"><h2>Card Indexing and Market Search</h2>
<p>At the start of our project, we took every card in our "Star Wars Unlimited" collection and listed them in an Excel spreadsheet.
For each card, we also found its current selling price on the "https://www.cardmarket.com/" website.
This way, we could see both the name of each card and how much it might sell for, all in one place.
</p>
<p>To make our spreadsheet even more useful, we used Excel's conditional formatting feature. This let us color-code the cards. With different colors,
we could quickly tell which cards were available for certain game functions, which ones were rare or common, and how their market prices compared.
This color-coding made it easy to spot patterns and differences at a glance, setting us up nicely to dive deeper into analyzing our collection.
This first step of organizing and pricing was key to getting a clear picture of what our collection looked like in terms of variety and potential value.
</p>
<p>This is how part of our Excel Sheet looks after we are done:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/swdata.PNG" alt="swdata">
</p>
<hr>
<p class="mb-5"><h2>Analysis and Metrics Calculation</h2>
<p>Moving forward with our analysis, we honed in on two critical questions:</p>
<p>First,what is the total worth of our "Star Wars Unlimited" collection, and how is this value distributed?</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/expvalue.PNG" alt="expvalue">
<p>At the time of our market search, our total expected value amounted to 776.51€. Of course, this is only an approximate evaluation and does not take into account transportation, packaging, and other potential costs.</p>
<p>Now, on value distribution, we first checked total value by type.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/valuebytype.PNG" alt="valuebytype">
<p>And then, total value by rarity.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/valuebyrarity.PNG" alt="valuebyrarity">
<p>Total value, though, is only half the picture. In how many cards is this value distributed? Normal cards seem to hold much value, almost 47% of the total expected value, but would it be a viable strategy to try and harvest this value?</p>
<p>We needed a bit more information:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/totalcards.PNG" alt="totalcards">
<p>Okay, percentage-wise, normals do hold a decent amount of value, but €364 in 2039 cards could be a tricky play. With an average of 0.17€ per card, selling them in bulk seems like the only way. That's a good insight, but probably not our first strategy to pursue; we'll need to keep looking!</p>
<p>So then, what are some effective strategies for extracting value through reselling parts of our collection without compromising our competitive edge in the game?</p>
<p>Strategy number one comes directly from here:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/top5.PNG" alt="topfive">
<p>Now, this is valuable information. The top 5 cards represent €323 or 41.6% of the total expected value. Interestingly, the Darth Vader card, which is allowed up to three times in play according to game rules, appears three times in our collection. Given Darth Vader's popularity, this could be a significant advantage. Though it means I'd need to stick to playing Rebel, it's a trade-off I'm willing to make. We might be onto a winning strategy here.</p>
<p>Then, we can either focus on selling a few other valuable cards:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/valuablecards.PNG" alt="valueablecards">
<p>Or, utilising some bulk selling.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SWCards/rest.PNG" alt="rest">
<hr>
<p class="mb-5"><h2>Wrapping up</h2>
<p>As we wrap up our look at the "Star Wars Unlimited" cards, we learned a lot about their worth and how to smartly sell some without spoiling the fun of the game.
This project showed us how to balance making money with keeping the game exciting. I had a great time figuring out my collection's value, just as I love playing the game.
These lessons on card value are something I'll use as I keep collecting and playing.
This adventure into the world of card collecting was as fun as it was educational, and I can't wait to put what I've learned into action.
</p>
</p>
<hr>
<p class="mb-5">Thanks for reading. Feel free to reach out for any comment.</p>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal2" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal2Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Hubspot BGpatrasso</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/Hubspot-crm-integrations.png" alt="Hubspot BGpatrasso"/>
<!-- Portfolio Modal - Text-->
<p class="mb-5">After helping in a critical migration error from Capsule to HubSpot CRM, a project found through Upwork, I was hired as a HubSpot Administration & Implementation support.
This led me to learn more for the CRM through its Academy and compile an easy solution for a real business. This project is the sales pitch I prepared for solving the real life business problem.
</p>
<hr>
<p class="mb-5">This project's presentation is still on development. Further information will be published soon.</p>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal3" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal3Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Impact of Seasonal Fluctuations on Used Car Prices in Greece</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/season1.jpg" alt="Impact of Seasonal Fluctuations on Used Car Prices in Greece"/>
<!-- Portfolio Modal - Text-->
<p class="mb-5"><h2>Project Overview</h2>
<p>In this project, the aim was to explore the data and see if car prices indeed rise in the winter months and drop in the summer.
Along the way, I also hoped to improve my Python skills, especially when it came to web scraping and data analysis.
Inspired by the thought of selling my car the next year and after hearing a similar advice from a merchand friend,
I decided to gather some data to have a more solid understanding of the market trends and pricing.
So, I decided to use python and Selenium to scrap data from Greece's largest used car website in 3 month intervals in 2024.
</p>
<p> Here's a snapshot of the web scraping script I used to collect the data:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/car_scrapper.PNG" alt="web_scrappers">
</p>
<hr>
<p class="mb-5"><h2>First steps processing and cleaning the data</h2>
<p>Once the data was successfully scraped, the next step was to clean and process it for analysis. </p>
<p>
First, I needed to consolidate the CSV files where the scraped data was saved. Since I scraped thousands of pages each time,
I often hit the server's request limit and had to pause before resuming the process. To prevent losing all the data in case the server banned me or the script failed,
I chose to break the data into several smaller files. This way, I could avoid starting over from scratch.
</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/CSV_consolidation_script.PNG" alt="consolidation_script">
<p>
Next I moved on on loading and cleaning the data. This involved removing duplicates, handling missing values and outliers, and formatting the data for easier manipulation.
Up until this point, I hadn't worked with Jupyter Notebooks, but from here on, I switched to using them to make data handling and manipulation more efficient.
The interactive environment of Jupyter made it easier to test code snippets, visualize the data, and keep track of my progress as I cleaned and analyzed the dataset.
Here's how I approached the data processing phase:
</p>
<p>First, I installed and imported the necessary libraries:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/1_installLibraries.PNG" alt="cleaning_car_data">
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/1a_import_libraries.PNG" alt="cleaning_car_data">
<p>Then, imported the data and took a first look:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/2_import_&_first_look.PNG" alt="cleaning_car_data">
<p>Decided to drop 'date' and 'pagenumber' columns, since they were only helper columns for scrapping and not usefull anymore. Also, renamed a few columns for clarity</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/3_drop_and_renameColumns.PNG" alt="cleaning_car_data">
<p>Next, I checked data types and shape:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/4a_closerLook_basicInfo_(305535 rows).PNG" alt="cleaning_car_data">
<p>Many unexpected objects types, so I checked for missing values before I attempt to .describe():</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/4b_closerLook_missing_values.PNG" alt="cleaning_car_data">
<p>The scrapper did a good job of not leaving blank values. So, I formatted the data types appropriately:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/5_changeDataTypes.PNG" alt="cleaning_car_data">
<p>And took a look at the data again:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/5b_head_ descsribe_after_processing.PNG" alt="cleaning_car_data">
<p>Next, looked for duplicates and deleted them:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/6_deduplicate.PNG" alt="cleaning_car_data">
<p>Out of the initial 305,595 rows, the data was reduced to 282,995 after deduplicating, meaning 22,600 entries were deleted—about 7.39% of the original dataset.
This reduction is reasonable, given the high volume of pages scraped and the fact that the website mixed in a couple of ads with the listings using a dynamic object,
making it impossible to filter them out while scraping frontend with Selenium.</p>
<p>Next, I looked for outliers in the price(€), mileage(km), and engine(cc) columns. I started by visualising the price(€) column for a first look:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/7_boxplot_price.PNG" alt="cleaning_car_data">
<p>Listings costing under 1500€ where excluded during scrapping. There are a few very expensive cars close to 1m euros, that are definatelly outliers,
and many that according to the right whisker of this boxplot are branded outliers. I thought it would be helpfull to see the price of that right whisker:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/8_right_whiskers_on_price.PNG" alt="cleaning_car_data">
<p>Almost 32000€, which felt too low to exclude all cars above it, perhaps something around the 100k mark is more reasonable for the car market.
Retrieved the number of listings above 100k euros, 2016 listings or the 0.71% of our initial data, seemed as a safer option for exlusion.
Followed the same process for the 'mileage(km)' column, where I excluded the 1st and 99th percentile, and 'engine(cc)' column, where I excluded anything
below the 0.4% and 99.9% of the data, and ended up with 274192 listings:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/9_mileage_2_percentiles.PNG" alt="cleaning_car_data">
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/10_cleaned_df.PNG" alt="cleaning_car_data">
</p>
<hr>
<p class="mb-5"><h2>Exploratory Data Analysis (EDA)</h2>
<p>By this point, I had already gotten a first look at the data and was ready to dive deeper now that it was cleaned:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/11_clean_describe.PNG" alt="eda_car_data">
<p>First look in the clean data:
<ul>
<li>The median price of €11,000 suggests that typical cars in the dataset are more affordable, while the higher mean price of €14,425 indicates that a few expensive cars are skewing the average upward.</li>
<li>Mileage: The mileage data shows that most cars have significant usage, with a median mileage of 133,300 km. The high mileage is typical for a used car dataset.</li>
<li>Engine Size: Most cars in the dataset fall within the typical range of 1,300 cc to 1,800 cc.</li>
</ul>
</p>
<p>Visualised the price distribution, and saw that most car prices fall between €5,000 and €20,000. The distribution is right-skewed, indicating a small number of high-priced cars:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/12_plotting_price_distribution.PNG" alt="eda_car_data">
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/Price_distribution_plot.png" alt="eda_car_data">
<p>Followed, similar process for the engine sizes and found that the majority of cars have engines between 1,000 cc and 2,000 cc, which is typical for personal vehicles:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/engine_distribution.png" alt="eda_car_data">
<p>And the same for mileage, where most cars have mileage between 50,000 and 200,000 kilometers, with very few having extremely high or low mileage:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/mileage_distribution.png" alt="eda_car_data">
<p>Then, I looked at my categorical data, starting with fuel types, where by far the most common fuel types are Petrol and Diesel, consisting almost the 91% of the total listings.
Another noticable insight here, is that almost one in every twenty cars sold, use Gas/lpg as a fuel:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/13_plot_fuel_types.PNG" alt="eda_car_data">
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/fuel_types.png" alt="eda_car_data">
<p>Lastly, I looked at the number of listings by season. They are fairly even across seasons, with a slight increase during the Spring:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/14_plotting_the_listings_by_season.PNG" alt="eda_car_data">
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/listings_by_season.png" alt="eda_car_data">
</p>
<hr>
<p class="mb-5"><h2>Testing the Seasonal Pricing Hypothesis</h2>
<p>After gaining a better understanding of the dataset through the EDA, it was time to focus on testing my initial hypothesis:
whether car prices tend to rise in the winter and drop in the summer. For that, I calculated and visualized the mean and median car prices for each season</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/15_mean_median_per_season.PNG" alt="hypothesis_car_data">
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/mean_median_per_season.png" alt="hypothesis_car_data">
<p>From this, I could see that:
<ul>
<li>The mean prices across the three seasons—Winter (€14,290), Spring (€14,256), and Summer (€14,745)—are relatively close. The mean increase from winter to summer of 3.18%, and the median increase in the same period suggests that, overall, car prices are fairly stable throughout the year, with no drastic seasonal fluctuations.</li>
<li>More, it contradicts the initial hypothesis, that car prices tend to rise in the winter. The data at hand show the exact opposite; car prices increase during the summer.</li>
</ul>
</p>
<p>So, what if I tried to make similar comparisons in various segments of the data?</p>
<p>I intially segmented the data based on engine sizes, using the Greek vehicle tax categories as a framework:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/16_count_car_by_price_category.PNG" alt="hypothesis_car_data">
<p>And used a bar graph to quickly view them:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/count_of_cars_by_engine_category.png" alt="hypothesis_car_data">
<p>Then, grouped by 'Engine Category' and 'Season'; calculated the mean and median of 'price(€)', and visualised them:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/17_calculate_&_visualise_mean_meadian_car_price_by_season_&_engine_category.PNG" alt="hypothesis_car_data">
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/Mean_Price_Trends_by_Engine_Category_&_Season.png" alt="hypothesis_car_data">
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/Median_Price_Trends_by_Engine_Category_&_Season.png" alt="hypothesis_car_data">
<p>Both graphs are consistent in indicating that car prices tend to increase from Winter to Summer. This suggests a seasonal trend where prices
rise as we move toward the summer months, which is again contradicting my initial hypothesis. What is more, the flatter trend for smaller
engine categories (A, B) in the second and third graph suggests that these categories don't contribute much to the overall price increases from the winter to summer.</p>
<p>To explore further segments of my dataI followed the same logic starting with mileage categories and season:</p>
<div class="row">
<div class="col-md-6">
<p>Mean Price Trends by Mileage Category and Season</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/Mean_Price_Trends_by_Mileage_Category_&_ Season.png" alt="hypothesis_car_data">
</div>
<div class="col-md-6">
<p>Mean Price Trends by Mileage Category and Season</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/Median_Price_Trends_by_Mileage_Category_&_ Season.png" alt="hypothesis_car_data">
</div>
</div>
<p>
And then segmenting to price categories and combine them with season:
</p>
<div class="row">
<div class="col-md-6">
<p>Mean Price Trends by Price Category and Season</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/Mean_Price_Trends_by_Price_Category_&_ Season.png" alt="hypothesis_car_data">
</div>
<div class="col-md-6">
<p>Median Price Trends by Price Category and Season</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.SeasonalCarPrices/Mean_Price_Trends_by_Price_Category_&_ Season.png" alt="hypothesis_car_data">
</div>
</div>
<p>Staying consitent with the analysis so far, across both mileage and price categories, car prices tend to increase from Winter to Summer.
This trend is visible whether we look at mean or median values. Although, not all sub-groups contribute the same to the total increase, some lines are flatter than others.</p>
</p>
<hr>
<p class="mb-5"><h2>Concluding remarks</h2>
<p>I truly enjoyed the entire process and learned a lot along the way. Interestingly, the initial hypothesis—that car prices tend to rise in the
winter and fall during the summer—was not supported by the data I collected. In fact, the opposite seemed to be true: prices actually increased
during the summer months.
</p>
<p>Some key insights in bite sizes:
<ul>
<li>The overal <strong>Mean</strong> price tends to increace by <strong>3.18%</strong>, while the <strong>Median</strong> in the same period increases by <strong>4.36%</strong>.</li>
<li>Cars with <strong>larger engine sizes</strong> appear to drive the mean price increase from winter to summer.</li>
<li>In general, the <em>mean tends to increase more sharpy than the median</em>, suggesting that a small amount of listings with extreme values in mileage, price, and engine sizes still have a noticeable impact.</li>
</ul>
</p>
<p>There is plenty to do to expand this project, like including cars priced below 1,500€, which were excluded from this round, and explore motorbikes as well.
Definatelly, I could try to collect more data over a longer period of time, perhaps scraping more frequently, like once a month, and gather data from different dealers.
Additionally, I could dive deeper into segmenting the analysis—such as focusing on cheaper cars with high mileage throughout the year. I hope to have the time and data to further explore the topic.
</p>
</p>
<hr>
<p class="mb-5">Thanks for reading. Feel free to reach out for any comment.</p>
<hr>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal4" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal4Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Evaluating a wagering strategy through the comparative operformance of nine accounts in the span of 6 months.</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.WagersStrategyA/dashboard.JPG" alt="The comparative betting project"/>
<!-- Portfolio Modal - Text-->
<p class="mb-5"><h2>Project Overview</h2>
<p>This is a project comparing wagering performance from different accounts. It spans from January 2022 to June 2022, although these are not the actual dates of the wagering (have been changed for privacy reasons), the data were agthered in the span of 6 months.
Along with the actual dates, various other sensitive data have been altered for privacy reasons. (You can find the source file <a href="https://github.com/dmgts/dmgts.github.io/tree/main/assets/pjDataFiles/pj.WagersStrategyA" target="_blank">here</a>).
</p>
<p>This is a project steming from my previous employment as a Data Analytics Assistant. It was rather a rare way of analysing data, since usually each account would follow different strategies simultaneously.
Therefore, this is actually the first step for gathering data and evaluating a given strategy. I was be responsible for collecting, processing and presenting the data to the stakeholders responsible for evaluating the performance compare to overall portfolio and current market situation.
More specifically, I:
<ul>
<li>Collected and consolidated various PDF files into an Excel sheet.</li>
<li>Verified data accuracy and cleansed data.</li>
<li>Processed data as needed (datetime segmentation, odds standardization, calculated fields).</li>
<li>Calculated key metrics like ROI and P/L using pivot tables.</li>
<li>Build a dashboard to present the necessary information.</li>
</ul>
</p>
<hr>
<p class="mb-5"><h2>Data Processing Steps</h2>
<p>During the data processing phase of this project, several key steps were undertaken to refine and structure the dataset for in-depth analysis, including:</p>
<p><strong>1. Seperated Datetime column</strong> into 'Date' and 'Time', and calculated 'Month', 'Time' and 'Day of the Week' columns.</p>
<p><strong>2. Refined column labels</strong> for better interpretability and clarity.</p>
<p><strong>3. Extracted and standardized odds</strong> data for consistency and calculated 'Odds Bucket' column.</p>
<p><strong>4. Cleanup Selection Column</strong> to remove irrelevant information.</p>
<p><strong>5. Categorised</strong> in 'Market Category' the events.</p>
<p><strong>6. Calculated</strong> Profit and Loss (P/L).</p>
<p><strong>7. Created</strong> 'Won' column out of 'Result' data column.</p>
<p><strong>8. Introduced Live Bet</strong> column to mark live bets.</p>
<p><strong>9. Calculated ommited data</strong>, where possible, to enhance dataset reliability and completeness.</p>
<p>Here is a snapshot of the processed data table:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.WagersStrategyA/processedData.JPG" alt="Cleaning output">
</p>
<hr>
<p class="mb-5"><h2>Metrics Calculation and Dashboard</h2>
<p>Next, I used pivot tables to calculate key metrics, including:</p>
<p><strong>1. Return on Investment (ROI)</strong></p>
<p><strong>2. Hit Rate</strong></p>
<p><strong>3. Average Odds</strong> </p>
<p><strong>4. Average Stake</strong></p>
<p><strong>5. Picks and P/L</strong></p>
<p><strong>6. Total growth over time</strong></p>
<p>Which resulted to the dashboard seen below:</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.WagersStrategyA/dashboard.JPG" alt="p1_perfor">
<p>What is more, the data in the dashboard can be easily filtered by:</p>
<p><strong>1. Account</strong></p>
<p><strong>2. Market</strong></p>
<p><strong>3. Odds Bucket</strong> </p>
<p><strong>4. Month</strong></p>
<p><strong>5. Day of the Week</strong></p>
<p>So that we could easily see, for example, how did Account 5 do on Handicaps?</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.WagersStrategyA/acc5handicaps.JPG" alt="p1_perfor">
<p>Or, handicaps in general?</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.WagersStrategyA/allHandicaps.JPG" alt="p1_perfor">
<p>How did wagering in the 2.00 - 2.99 Odds Bucket perfromed in February?</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.WagersStrategyA/2-2.99bucketFebruary.JPG" alt="p1_perfor">
<p>Or, how was the strategy performing in Saturdays?</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.WagersStrategyA/Saturday.JPG" alt="p1_perfor">
</p>
<hr>
<p class="mb-5"><h2>Project Impact</h2>
<p>As mentioned in the beggining, this was the first step for evaluating a given waggering strategy across multiple accounts and overall. I was responsible
for this project from start to finish, i.e from gathering and processing the data according to requirments to presenting the produced dashboard. I reported on
the the process and all analysis done to contribute to the decision making process of the organisation.
</p>
</p>
<hr>
<p>Thanks for reading. Some information have been altered to ensure privacy. Feel free to reach out for any comment.</p>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal6" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal6Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Ireland's Rental Market</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.renting_ireland/irish_rental_properties_dashboard.PNG" alt="irish_rental_market"/>
<!-- Portfolio Modal - Text-->
<p class="mb-5">
In this project, I focused on analyzing the current rental market in Ireland by scrapping real-time data from two major property websites,
daft.ie and myhome.ie, in late September 2024. Using Tableau, I visualized the data to create an
<strong><a href="https://public.tableau.com/app/profile/dimitrios.gatsos/viz/Ireland_dash/irish_rentals_dash" target="_blank">interactive dashboard</a></strong>,
allowing for an in-depth look at trends in rental prices and property availability across different counties.
This project helped me better understand the housing market dynamics and sharpened my skills in data scraping and visualization.
</p>
<hr>
<p class="mb-5">
<p>Here are some key insights from my analysis of Ireland's rental market.</p>
<ul>
<li><strong>96% of total listings</strong> fall in the <strong>€500 to €4700</strong> range, with <strong>66%</strong> of these listings found in and around <strong>Dublin</strong>.</li>
<li><strong>The rent-to-income ratio</strong> in the same areas is <strong>35%</strong> for a couple, with a mean income of <strong>€6380</strong> and mean rent of <strong>€2228</strong>.</li>
<li>The counties around the four major cities - <strong>Dublin, Cork, Limerick, and Galway</strong> - have a mean rent of <strong>€2159</strong>, which is almost <strong>28% higher</strong> than the rest of the counties where the mean rent is <strong>€1690</strong>.</li>
</ul>
</p>
<hr>
<p class="mb-5">
<p>For this project, I developed two Python-based scrapers using Selenium to extract rental data from daft.ie and myhome.ie.
Both scrapers focus on gathering key details such as price, location, and property characteristics, but they differ in how they handle
HTML variations between the websites.
The daft.ie scraper collects raw data and applies cleaning and formatting functions (e.g., clean_price(), extract_info())
after the extraction.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.renting_ireland/daft_scrapper.png" alt="p1_ireland">
<p>In contrast, the myhome.ie scraper formats and cleans data during the extraction process,
streamlining the data pipeline by integrating these steps directly into the scraping function.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.renting_ireland/myhome_scrapper.png" alt="p2_ireland">
</p>
<hr>
<p class="mb-5"></p>
<p>Only around 100 listings have a price higher than €4700, Including some extreme ones. The rest 96% of total listings
cost less than €4700, with 66% of these listings -or 1619 properties- found in and around county Dublin.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.renting_ireland/boxplot.PNG" alt="p1_ireland">
</p>
<hr>
<p>The rental landscape in Ireland reveals a significant divide between urban and rural areas, particularly around the major cities of Dublin, Cork, Limerick, and Galway.
In these urban regions, the mean rent is €2159, making it nearly 28% higher than in the more rural counties, where the average rent is €1690.
This disparity highlights the increased demand for housing in and around these major urban hubs, which drives prices higher.</p>
<div class="row">
<div class="col-md-6">
<p>Only around the major cities</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.renting_ireland/around_major_cities.PNG" alt="p3_ireland">
</div>
<div class="col-md-6">
<p>Excluding major cities</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.renting_ireland/without_major_cities.PNG" alt="p4_ireland">
</div>
</div>
<hr>
<p class="mb-5">
Among the 2555 properties analyzed, 1992 have a recorded furnished status. Of these, the overwhelming majority
—1841 furnished properties— command a mean rent of €2210. In contrast, the 151 unfurnished properties have a significantly lower mean rent,
averaging €1355. This data reveals a clear rental premium associated with furnished properties, suggesting that renters are willing to pay
more for the convenience of a fully equipped living space</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.renting_ireland/furnished_status.PNG" alt="p5_ireland">
<hr>
<p class="mb-5">
Our analysis covers properties across ten different property types, yet only three of these—House, Apartment, and Flat—dominate the
listings. These categories account for a total of 2407 out of 2555 listings, highlighting their prevalence in the rental market.
This concentration suggests that these three property types are the primary options available for renters, with other types playing a
much smaller role in the overall market.</p>
<img class="img-fluid rounded mb-5" src="assets/img/portfolio/pj.renting_ireland/Most_ads_are_foor those_three_categories.PNG" alt="p6_ireland">
<hr>
<p class="mb-5">
Lastly, I added some really useful customization features to my Tableau dashboard, making it more interactive and easier to use.
For instance, with filters for counties and property types, users can dive into the data based on their interests.
These filters let people explore rental trends in specific regions or for particular types of properties, and the changes they make
are applied across all charts and maps instantly. This feature really enhances the overall experience, turning the dashboard into a
powerful tool for those who want to get detailed insights quickly and easily.
</p>
<hr>
<p>Thanks for reading. Some information have been altered to ensure privacy. Feel free to reach out for any comment.</p>
<hr>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal5" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal5Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">User Growth Trajectory Calculation</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/frontimage.jpg" alt="User Growth Trajectory Calculation"/>
<!-- Portfolio Modal - Text-->
<video controls style="width: 100%; max-width: 800px;">
<source src="assets/img/portfolio/pj.calculatingGrowth/Calculate_growth_vid.mp4" type="video/mp4">
</video>
<p class="text-left mb-5">In this project, I've developed a straightforward model to calculate the monthly growth trajectory of our product's user base. The model consists of three main sections:</p>
<h3 class="mt-4">1. Parameters Section</h3>
<p class="text-left mb-5">This area allows for adjusting key variables that affect growth projections. The parameters include:</p>
<ul>
<li class="text-left"><strong>Initial User Base:</strong> I assum an initial user base of 10 users, but this number can be adjusted.</li>
<li class="text-left"><strong>Conversion Behavior:</strong> Responses to the product are categorized into three groups:
<ul>
<li class="text-left"><strong>Yes (Immediate Adoption):</strong> Users who convert within the specified timeframe.</li>
<li class="text-left"><strong>No (Later Conversion):</strong> Users who convert after a delay.</li>
<li class="text-left"><strong>Never:</strong> Users who never convert.</li>
</ul>
These responses are modeled based on word-of-mouth marketing, assuming users influence others through product recommendations.
</li>
<li class="text-left"><strong>Conversion Time Frame:</strong> Users are grouped into those who convert within the predefined conversion week and those who convert later, which is also adjustable.</li>
<li class="text-left"><strong>Influence Factor:</strong> This represents the number of additional users each initial user is expected to influence over a year. In the example, we assume each user influences 20 others.</li>
<li class="text-left"><strong>Market Cap:</strong> This defines the total potential market size. It helps track how close we are to saturating the available market.</li>
</ul>
<h3 class="mt-4">2. Calculation Section</h3>
<p class="text-left mb-5"> The model calculates how user conversions will unfold over time, considering the initial user base, the conversion behavior,
and influence factor. For example, users who say "Yes" convert within the conversion week, while "No" users convert at a later stage. We also estimate
how many people each user will influence and factor that into the growth projections.</p>
<h3 class="mt-4">3. Visualization Section</h3>
<p class="text-left mb-5">To help visualize the growth, we've created graphs that show user growth over a 12-month cycle, starting with the initial 10 users.
These visualizations provide insights into when we'll reach the market cap and how quickly the user base expands, based on the given parameters.</p>
<p class="text-left mb-5">This model offers flexibility in adjusting key factors that influence growth and provides a clear visual representation of how the user
base can expand over time.</p>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal7" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal7Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Moving to Athens </h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/Athens-Real-Estate-.jpg" alt="Moving to Athens "/>
<!-- Portfolio Modal - Text-->
<p class="mb-5">New Image Description</p>
<p class="mb-5">This project's presentation is still on development. Further information will be published soon.</p>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal8" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal8Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Google Data Analytics Proj 1</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/gh;khg.png" alt="Google Data Analytics Proj 1"/>
<!-- Portfolio Modal - Text-->
<p class="mb-5">New Image Description</p>
<p class="mb-5">This project's presentation is still on development. Further information will be published soon.</p>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<div class="portfolio-modal modal fade" id="portfolioModal9" tabindex="-1" role="dialog" aria-labelledby="#portfolioModal9Label" aria-hidden="true">
<div class="modal-dialog modal-xl" role="document">
<div class="modal-content">
<button class="close" type="button" data-dismiss="modal" aria-label="Close"><span aria-hidden="true"><i class="fas fa-times"></i></span></button>
<div class="modal-body text-center">
<div class="container">
<div class="row justify-content-center">
<div class="col-lg-8">
<!-- Portfolio Modal - Title-->
<h2 class="portfolio-modal-title text-secondary mb-0">Google Data analytics project 2</h2>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Portfolio Modal - Image--><img class="img-fluid rounded mb-5" src="assets/img/portfolio/output_image.jpeg" alt="Google Data analytics project 2"/>
<!-- Portfolio Modal - Text-->
<p class="mb-5">New Image Description</p>
<p class="mb-5">This project's presentation is still on development. Further information will be published soon.</p>
<button class="btn btn-primary" href="#" data-dismiss="modal"><i class="fas fa-times fa-fw"></i>Close Window</button>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
<section class="page-section bg-primary text-white mb-0" id="about">
<div class="container">
<!-- About Section Heading-->
<div class="text-center">
<h2 class="page-section-heading d-inline-block text-white">ABOUT</h2>
</div>
<!-- Icon Divider-->
<div class="divider-custom divider-light">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- About Section Content-->
<div class="row">
<div class="col-lg-6 ml-auto">
<p class="pre-wrap lead" style="text-align: justify;"> I am a data-driven professional with background in CRM optimization, data analysis, and process automation. My goal is to apply my skills in data analysis, Excel, SQL, Python, and Tableau to solve complex business problems and optimize operations. Over time, my fascination with data and its potential to solve real-world problems led me to shift into roles like Data Analyst and HubSpot Implementation Specialist.</p>
</div>
<div class="col-lg-6 mr-auto">
<p class="pre-wrap lead" style="text-align: justify;"> In these positions, I have developed a solid foundation in workflow automation, data analysis, reporting, and visualization.
Currently, I’m focused on advancing my career in data analytics and revenue operations by building deeper expertise in data visualization, process optimization, and HubSpot.</p>
</div>
</div>
</div>
</section>
<section class="page-section" id="contact">
<div class="container">
<!-- Contact Section Heading-->
<div class="text-center">
<h2 class="page-section-heading text-secondary d-inline-block mb-0">CONTACT</h2>
</div>
<!-- Icon Divider-->
<div class="divider-custom">
<div class="divider-custom-line"></div>
<div class="divider-custom-icon"><i class="fas fa-star"></i></div>
<div class="divider-custom-line"></div>
</div>
<!-- Contact Section Content-->
<div class="row justify-content-center">
<div class="col-lg-4">
<div class="d-flex flex-column align-items-center">
<div class="icon-contact mb-3"><i class="far fa-envelope"></i></div>
<div class="text-muted">Email</div><a class="lead font-weight-bold" href="mailto:[email protected]">[email protected]</a>
</div>
</div>
</div>
</div>
</section>
<footer class="footer text-center">
<div class="container">
<div class="row">
<!-- Footer Location-->
<div class="col-lg-4 mb-5 mb-lg-0">
<h4 class="mb-4">LOCATION</h4>
<p class="pre-wrap lead mb-0">Patra, Achaia, Greece</p>
</div>
<!-- Footer Social Icons-->
<div class="col-lg-4 mb-5 mb-lg-0">
<h4 class="mb-4">AROUND THE WEB</h4>
<a class="btn btn-outline-light btn-social mx-1" href="https://github.com/dmgts"><i class="fab fa-github"></i></a>
<a class="btn btn-outline-light btn-social mx-1" href="https://www.upwork.com/freelancers/~01587afca246c1cef4"><!-- Upwork icon --><svg xmlns="http://www.w3.org/2000/svg" width="1em" height="1em" viewBox="0 0 24 24"><rect width="24" height="24" fill="none" /><path fill="currentColor" d="M18.561 13.158c-1.102 0-2.135-.467-3.074-1.227l.228-1.076l.008-.042c.207-1.143.849-3.06 2.839-3.06a2.705 2.705 0 0 1 2.703 2.703a2.707 2.707 0 0 1-2.704 2.702m0-8.14c-2.539 0-4.51 1.649-5.31 4.366c-1.22-1.834-2.148-4.036-2.687-5.892H7.828v7.112a2.551 2.551 0 0 1-2.547 2.548a2.55 2.55 0 0 1-2.545-2.548V3.492H0v7.112c0 2.914 2.37 5.303 5.281 5.303c2.913 0 5.283-2.389 5.283-5.303v-1.19c.529 1.107 1.182 2.229 1.974 3.221l-1.673 7.873h2.797l1.213-5.71c1.063.679 2.285 1.109 3.686 1.109c3 0 5.439-2.452 5.439-5.45c0-3-2.439-5.439-5.439-5.439" /></svg></a>
<a class="btn btn-outline-light btn-social mx-1" href="https://www.linkedin.com/in/dimitri-g-b8172a21b/"><i class="fab fa-fw fa-linkedin-in"></i></a>
<!--<a class="btn btn-outline-light btn-social mx-1" href=""><i class="fab fa-instagram"></i></a>-->
</div>
<!-- Footer About Text-->
<div class="col-lg-4">
<h4 class="mb-4">ABOUT WEBSITE</h4>
<p class="pre-wrap lead mb-0">Hosted on GitHub Pages - Theme by Start Bootstrap</p>
</div>
</div>
</div>
</footer>
<!-- Copyright Section-->
<section class="copyright py-4 text-center text-white">
<div class="container"><small class="pre-wrap">Copyright © Dimitri Gatsos 2024 - All Right Reserved.</small></div>
</section>
<!-- Scroll to Top Button (Only visible on small and extra-small screen sizes)-->
<div class="scroll-to-top d-lg-none position-fixed"><a class="js-scroll-trigger d-block text-center text-white rounded" href="#page-top"><i class="fa fa-chevron-up"></i></a></div>
<!-- Bootstrap core JS-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.4.1/jquery.min.js"></script>
<script src="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/js/bootstrap.bundle.min.js"></script>
<!-- Third party plugin JS-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-easing/1.4.1/jquery.easing.min.js"></script>
<!-- Contact form JS-->
<script src="assets/mail/jqBootstrapValidation.js"></script>
<script src="assets/mail/contact_me.js"></script>
<!-- Core theme JS-->
<script src="js/scripts.js"></script>
</body>
</html>