<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:dc="http://purl.org/dc/elements/1.1/">
  <channel>
    <title>Forem: Sylvester Promise</title>
    <description>The latest articles on Forem by Sylvester Promise (@sp_the_data_specialist).</description>
    <link>https://forem.com/sp_the_data_specialist</link>
    <image>
      <url>https://media2.dev.to/dynamic/image/width=90,height=90,fit=cover,gravity=auto,format=auto/https:%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Fuser%2Fprofile_image%2F3613700%2F7d8ae194-c0a6-4e27-a275-69dc106f91a9.png</url>
      <title>Forem: Sylvester Promise</title>
      <link>https://forem.com/sp_the_data_specialist</link>
    </image>
    <atom:link rel="self" type="application/rss+xml" href="https://forem.com/feed/sp_the_data_specialist"/>
    <language>en</language>
    <item>
      <title>Day 39 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Sat, 03 Jan 2026 00:11:25 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-39-of-improving-my-data-science-skills-27kh</link>
      <guid>https://forem.com/sp_the_data_specialist/day-39-of-improving-my-data-science-skills-27kh</guid>
      <description>&lt;p&gt;A silent struggle in data work that frustrates a lot of people (and no one talks about it): "I'm learning a lot… but everything feels disconnected."&lt;/p&gt;

&lt;p&gt;Today reminded me that the problem isn't learning too little, it's not seeing how the pieces fit while you're learning.&lt;br&gt;
So here's how my today went, 4+ hours deep into data, and honestly, it was beautiful.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62jcu58wxa2zzli73gbe.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F62jcu58wxa2zzli73gbe.jpg" alt="Learning time today" width="720" height="806"&gt;&lt;/a&gt;&lt;br&gt;
I started with Introduction to Data Science in Python.&lt;br&gt;
The course frames learning as solving mysteries with data, which made even the basics interesting again:&lt;br&gt;
importing and using modules&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffy2r1sxbazcxuuo51egv.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ffy2r1sxbazcxuuo51egv.jpg" alt="How to properly import" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
creating variables&lt;br&gt;
setting up the foundation for analysis&lt;/p&gt;

&lt;p&gt;Nothing brand new here, but context made it click differently.&lt;/p&gt;

&lt;p&gt;Then I continued Introduction to Importing Data in Python&lt;br&gt;
I picked up from yesterday and worked more with relational databases:&lt;br&gt;
querying databases in Python&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9chuchch5s29ev5gvi9a.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9chuchch5s29ev5gvi9a.jpg" alt="querying databases in Python" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
learning that any SELECT statement can be ordered by any column using ORDER BY&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3kflwcg9w43uzdny31bf.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F3kflwcg9w43uzdny31bf.jpg" alt="ordering a select statement" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;These are small SQL detail but big impact when working with real systems.&lt;/p&gt;

&lt;p&gt;I moved into data visualization, this time with Seaborn&lt;br&gt;
Here I learned:&lt;br&gt;
how to create scatterplots&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4k9jboq2ajp274j9gbii.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F4k9jboq2ajp274j9gbii.jpg" alt="Scatterplot Visualization" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
how to use count plots&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitfjet5ace1uqmzs02f9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fitfjet5ace1uqmzs02f9.jpg" alt="Count plot visualization" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
how Seaborn works seamlessly with pandas DataFrames&lt;/p&gt;

&lt;p&gt;It reinforced something important: visualization is more about asking better questions of your data rather than just displaying charts.&lt;/p&gt;

&lt;p&gt;I started Introduction to Functions in Python, and I looked at, functions with and without parameters&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xah1c4vpmvrdz5rls2w.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8xah1c4vpmvrdz5rls2w.jpg" alt="Function with parameter" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Again, not all new, but clearer.&lt;/p&gt;

&lt;p&gt;Under Python Toolbox, I learned about Iterators&lt;br&gt;
This part surprised me: &lt;br&gt;
the difference between iterables and iterators&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frugs0d3vvm2i1w9y0d9e.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frugs0d3vvm2i1w9y0d9e.jpg" alt="difference between iterables and iterators" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
how the next() method actually works&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qsctjg456sd1bq1djyw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F7qsctjg456sd1bq1djyw.jpg" alt="Using next() method with iterators" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
and yes, file connections are iterables too&lt;/p&gt;

&lt;p&gt;That explained a lot of "magic" I'd previously taken for granted.&lt;/p&gt;

&lt;p&gt;Finally, Cleaning Data in Python&lt;br&gt;
This might have been my favorite part today:&lt;br&gt;
unique constraints&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgpls2f7frpjqhi9zl705.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fgpls2f7frpjqhi9zl705.jpg" alt="Removing all duplicates" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
handling complete vs incomplete duplicates deciding when to: drop duplicates or use groupby with meaningful summary statistics&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft27v7xqok87c77t6tiew.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ft27v7xqok87c77t6tiew.jpg" alt="Sorting duplicates using summary Statistics" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;This is the part of data work that quietly determines whether insights are trusted or ignored.&lt;/p&gt;

&lt;p&gt;What today taught me? Some things weren't new. Some things were. But everything connected.&lt;br&gt;
And that's the part people struggle with:&lt;br&gt;
Learning tools is easy. Learning how they fit together takes intention.&lt;br&gt;
I'm continuing the year doing exactly that, learning deeply, documenting honestly, and respecting the unglamorous parts of data work.&lt;br&gt;
And yeah, I completed another chapter today !&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1pw0opdsg8d3y1da4uvu.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F1pw0opdsg8d3y1da4uvu.jpg" alt="An end of a chapter🥂" width="800" height="450"&gt;&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Happy New Year once again🎉Here's to cleaner data, clearer thinking, and fewer "why doesn't this make sense?" moments in 2026.&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>datascience</category>
      <category>devjournal</category>
      <category>learning</category>
      <category>python</category>
    </item>
    <item>
      <title>Day 38 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Thu, 01 Jan 2026 23:22:01 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-38-of-improving-my-data-science-skills-4l0e</link>
      <guid>https://forem.com/sp_the_data_specialist/day-38-of-improving-my-data-science-skills-4l0e</guid>
      <description>&lt;p&gt;Happy New Year 🥂&lt;br&gt;
I'm starting 2026 with a quiet but important realization: A lot of data problems aren't caused by analysis, they're caused by what we do before anyone ever sees the result.&lt;br&gt;
Today was a 4+ hour deep work day, and almost everything I learned sat upstream of insight.&lt;/p&gt;

&lt;p&gt;In Data Visualization, I didn't just "plot charts."&lt;br&gt;
I learned how to prepare figures for real humans:&lt;br&gt;
Why PNG is best for reports and dashboards (lossless, clean)&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7bntpp55ibc3xjsbd6m.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fz7bntpp55ibc3xjsbd6m.jpg" alt="Saving figure as .png" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Why JPG works for the web but quietly sacrifices detail&lt;br&gt;
Why SVG matters when designs need to be edited later&lt;br&gt;
How dpi, figure size, and quality can change how trustworthy a chart feels&lt;br&gt;
How to automate figure generation from data using: loop variables and .unique() method to create multiple plots from one dataset.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F183is3nza7wnaozqn39c.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F183is3nza7wnaozqn39c.jpg" alt="Automating figures for Data" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
This taught me that sharing data is a responsibility, not a final step.&lt;/p&gt;

&lt;p&gt;Then, in Importing Data, I stepped into relational databases:&lt;br&gt;
What a relational database actually is&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff98gpw05fkdafnb441rr.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Ff98gpw05fkdafnb441rr.jpg" alt="Relational Database" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
How to create a database engine with SQLAlchemy&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhswfk5n9dug7cb3wmyd1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhswfk5n9dug7cb3wmyd1.jpg" alt="Create Database engine" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
How data is queried, fetched, and controlled long before analysis begins&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwmmotc7zo59weui93df.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqwmmotc7zo59weui93df.jpg" alt="Querying and fetching data" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
And in Cleaning Data, I learned about Data Range Constraints. Data often breaks the rules we set for it.&lt;br&gt;
Ratings exceed their limits. Subscriptions appear in the future. And suddenly you're forced to choose:&lt;br&gt;
Do you drop the data?&lt;br&gt;
Or do you correct it to preserve meaning?&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvaxx7tf05u6z7sszup5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Frvaxx7tf05u6z7sszup5.jpg" alt="Handling data range constraints" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Those aren't technical decisions. They're judgment calls.&lt;/p&gt;

&lt;p&gt;That's what tied everything together for me today: Saving figures, querying databases, enforcing data ranges, they all decide whether the story we tell later is honest or misleading.&lt;/p&gt;

&lt;p&gt;I wrapped up Data Visualizations with Matplotlib course today, and I'm continuing the remaining two others, with four more interactive courses starting tomorrow. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fio9585r22zuuff4ssbg0.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fio9585r22zuuff4ssbg0.jpg" alt="Statement of accomplishment" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
New year, new standards for how I work with data.&lt;/p&gt;

&lt;p&gt;Happy New Year to everyone building carefully, not just quickly.&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>codenewbie</category>
      <category>tooling</category>
      <category>datascience</category>
      <category>development</category>
    </item>
    <item>
      <title>Day 37 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Wed, 31 Dec 2025 10:12:46 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-37-of-improving-my-data-science-skills-63n</link>
      <guid>https://forem.com/sp_the_data_specialist/day-37-of-improving-my-data-science-skills-63n</guid>
      <description>&lt;p&gt;One reason your data insights don't land (even when the analysis is correct)&lt;br&gt;
A small but frustrating struggle I keep seeing among data users, analysts, founders, and hiring managers, is this: "The data is right, but the output is confusing, misleading, or unusable"&lt;br&gt;
This usually shows up in two places:&lt;br&gt;
1️⃣ Data visualizations that look fine… but don't communicate&lt;br&gt;
I've been learning data visualization with Matplotlib, and one key lesson stood out: good charts are not about aesthetics, they're about accessibility and decision clarity.&lt;br&gt;
Some practical fixes I learned:&lt;br&gt;
Scatterplots are powerful for relationships, but when there's a third variable, encoding it with color (c=) instantly adds context.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bzkzmv3vwz7nvs4319v.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F8bzkzmv3vwz7nvs4319v.jpg" alt="Scatterplot with third variable c" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Dark backgrounds may look cool, but they reduce readability when shared.&lt;br&gt;
If color matters, use colorblind-friendly styles like:&lt;br&gt;
✔️seaborn-colorblind&lt;br&gt;
✔️tableau-colorblind10&lt;br&gt;
These preserve meaning for everyone, not just people with perfect color vision.&lt;/p&gt;

&lt;p&gt;If your work might be printed:&lt;br&gt;
✔️Use less ink&lt;br&gt;
✔️Consider grayscale styles for black-and-white printers&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xdef7eh2s4c5znv8veb.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9xdef7eh2s4c5znv8veb.jpg" alt="Effective method for visualization" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
A visualization that excludes part of your audience is a broken visualization.&lt;/p&gt;

&lt;p&gt;I wrapped up the Intermediate Importing Data in Python course today, including exercises that involved scraping data via the Twitter API. That felt like closing a chapter: pulling data from real systems, understanding authentication, and working with messy, real-world responses instead of clean examples.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Futj9ciyoi24kt00wwg96.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Futj9ciyoi24kt00wwg96.jpg" alt="Statement of Accomplishment" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
But instead of moving on, I did something intentional: I enrolled in a new track, Importing &amp;amp; Cleaning Data in Python, and immediately started the Cleaning Data in Python course, which led to point 2️⃣&lt;br&gt;
2️⃣"Clean" data that isn't actually clean&lt;br&gt;
When cleaning data, type constraints quietly decide what analyses are even possible. Sometimes the problem isn't the model, the visualization, or the question, it's that the data is pretending to be something it's not.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1534w09ikp6nbp5s6a6.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fo1534w09ikp6nbp5s6a6.jpg" alt="Common data types" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Numbers that should be categories.&lt;br&gt;
Categories treated like numbers.&lt;br&gt;
Decisions made on assumptions no one stopped to question.&lt;br&gt;
What looks like a number doesn't always behave like one.&lt;br&gt;
For example: Codes, ratings, categories stored as numbers can break analysis if you don't enforce data type constraints. In this case, Python allows you to store them properly as 'category'.&lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0irt9g6lcshkhk1qfly7.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F0irt9g6lcshkhk1qfly7.jpg" alt="Changing numeric data to category" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Learning this made one thing clear: Cleaning data is about protecting meaning.&lt;br&gt;
This is especially important when importing:&lt;br&gt;
HDF5 files (hierarchical, complex structures)&lt;br&gt;
MATLAB (.mat) files using scipy.io&lt;br&gt;
Data pulled from APIs (like Twitter), where structure doesn't equate quality&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07bhgluj24phsnh56j8o.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F07bhgluj24phsnh56j8o.jpg" alt="Importing HDF5 files" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Why this matters for decision-makers and hiring managers&lt;br&gt;
Anyone can load data. Anyone can plot a chart. Anyone can scrape an API.&lt;br&gt;
But not everyone:&lt;br&gt;
Preserves meaning during import&lt;br&gt;
Enforces correct data types&lt;br&gt;
Designs visuals that work for real humans&lt;br&gt;
Thinks about how insights will be consumed, printed, or acted on&lt;/p&gt;

&lt;p&gt;That gap is what silently kills trust in data. If you have ever stared at a chart or dataset thinking "Why doesn't this sit right?", this might be why.&lt;/p&gt;

&lt;p&gt;The work today reminded me that good data work isn't louder or fancier. It's quieter. More intentional. More honest.&lt;/p&gt;

&lt;p&gt;That's the kind of data work I want to be known for!&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>ai</category>
      <category>tutorial</category>
      <category>productivity</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 36 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Mon, 29 Dec 2025 20:05:09 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-36-of-improving-my-data-science-skills-2pa4</link>
      <guid>https://forem.com/sp_the_data_specialist/day-36-of-improving-my-data-science-skills-2pa4</guid>
      <description>&lt;p&gt;If you work with data long enough, you stop wishing for fancier models and start wishing for something simpler - Confidence.&lt;br&gt;
Confidence that what you're seeing is real.&lt;br&gt;
Confidence that what you're reporting won't fall apart under questions.&lt;br&gt;
That was the thread running through my learning today.&lt;br&gt;
In data visualization, I wasn't just drawing charts, I was learning how easily visuals can mislead if we're careless.&lt;br&gt;
Histograms taught me how distributions can hide or exaggerate patterns depending on bin size. &lt;br&gt;
&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83jc5c516xkib9m8n8qt.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F83jc5c516xkib9m8n8qt.jpg" alt="Histogram" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Box plots forced me to confront variability, outliers, and spread not just averages. &lt;br&gt;
Error bars forced me to admit uncertainty instead of hiding it. Instead of pretending a value is exact, I show how much it can realistically vary. That small visual choice makes a big difference, because decisions aren't made on perfect numbers, they're made within ranges.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47dtw809ot0wtpdpat8w.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F47dtw809ot0wtpdpat8w.jpg" alt="Error bar" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Then came importing data, where many data problems are quietly born.&lt;br&gt;
I worked with SAS and Stata files using pandas, and it reinforced something uncomfortable: reliable analysis doesn't start with models or plots. It starts with respecting how data was originally structured.&lt;br&gt;
Knowing how to read SAS and Stata files means:&lt;br&gt;
You can preserve meaning instead of guessing it&lt;br&gt;
You can catch assumptions early&lt;br&gt;
You're less likely to build insights on silently altered data&lt;br&gt;
And that's exactly the kind of quiet skill that separates using data from understanding data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiesbnbqjqxtjjaojlpom.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fiesbnbqjqxtjjaojlpom.jpg" alt="Stata file" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
And finally, I stepped into the world of Twitter APIs and authentication. Not scraping. Not downloading files. But asking a live system for data, with permissions, rate limits, and constraints.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoi93vl44kmvkl3x53l1.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhoi93vl44kmvkl3x53l1.jpg" alt="Twitter API" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
It made one thing clear:&lt;br&gt;
Real-world data doesn't wait for us. We negotiate access to it.&lt;/p&gt;

&lt;p&gt;Here's the insight that stuck with me most today:&lt;br&gt;
Most data failures don't happen at the "advanced" stage. They happen when we underestimate the basics.&lt;br&gt;
A misleading histogram.&lt;br&gt;
An ignored error bar.&lt;br&gt;
An imported dataset we never questioned.&lt;br&gt;
An API response we assumed was complete.&lt;/p&gt;

&lt;p&gt;If you're building products, making decisions, or hiring people who work with data, this is the real differentiator. Not who knows the most tools, but who knows where trust can break.&lt;br&gt;
That's the skill I'm deliberately building.&lt;/p&gt;

&lt;p&gt;And tomorrow, I'm pushing deeper, more practice, more questioning, more discomfort.&lt;br&gt;
Because trustworthy insights are never accidental. &lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febrwjnaoc9ia5tlg5gex.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Febrwjnaoc9ia5tlg5gex.jpg" alt="Profile" width="800" height="1066"&gt;&lt;/a&gt;&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 35 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Sat, 27 Dec 2025 07:52:42 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-35-of-improving-my-data-science-skills-1lcb</link>
      <guid>https://forem.com/sp_the_data_specialist/day-35-of-improving-my-data-science-skills-1lcb</guid>
      <description>&lt;p&gt;Lately, I've noticed something changing in how I learn.&lt;br&gt;
I'm no longer excited just because something works.&lt;br&gt;
I'm more interested in why it works, and what breaks quietly when I don't pay attention.&lt;br&gt;
Today made that very clear.&lt;/p&gt;

&lt;p&gt;While working with time series in Matplotlib, I annotated a point on a chart where something meaningful happened. It wasn't just a label on a line, it felt like saying, "This moment matters"&lt;br&gt;
That's when it hit me: visualization isn't decoration. It's judgment. What you choose to highlight says what you believe is important.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4te0lgkvmo290ckssfi.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fb4te0lgkvmo290ckssfi.jpg" alt="Annotating charts" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
At the same time, I was importing data in different forms, Excel files with multiple sheets, pickled files meant only for machines, JSON data pulled from an API.&lt;br&gt;
That's where I felt the most tension.&lt;br&gt;
Because importing data looks simple… until you realize how much trust you place in it without questioning:&lt;br&gt;
Did I choose the right sheet?&lt;br&gt;
Did I understand the missing values?&lt;br&gt;
Did I assume the structure was "clean" just because it loaded?&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fizd7963ec0k56j7g7pm5.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fizd7963ec0k56j7g7pm5.jpg" alt="Importing pickled data into Python" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Then came APIs. data that doesn't live in files at all.   Data that exists somewhere else, shaped by decisions I didn't make, exposed through endpoints I have to respect.&lt;br&gt;
That was really humbling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5pl68473dfgd3eorvhy.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx5pl68473dfgd3eorvhy.jpg" alt="Using API" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Here's what I believe now, more strongly than before: Most mistakes in data work don't come from lack of skill. They come from moving too fast through the early steps.&lt;br&gt;
Annotating taught me to slow down and ask, "What deserves attention?" &lt;br&gt;
Importing taught me that structure is never neutral. Working with APIs reminded me that real-world data is messy by default, and that's normal.&lt;/p&gt;

&lt;p&gt;I'm still learning. Still breaking things. Still fixing them. But I'm becoming more intentional, and that feels like real progress.&lt;/p&gt;

&lt;p&gt;If you're on a similar path, I'm curious: What part of your process do you rush through because it feels "basic"… but probably deserves more care?&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 34 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Fri, 26 Dec 2025 13:06:11 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-34-of-improving-my-data-science-skills-24hg</link>
      <guid>https://forem.com/sp_the_data_specialist/day-34-of-improving-my-data-science-skills-24hg</guid>
      <description>&lt;p&gt;I caught myself today staring at a chart and thinking: "This isn't just a plot anymore. It's a conversation"&lt;/p&gt;

&lt;p&gt;That moment didn't come from theory. It came from practice, breaking things, fixing them, and noticing patterns I used to ignore.&lt;br&gt;
Today's learning sat at an interesting intersection for me:&lt;br&gt;
Seeing data over time&lt;/p&gt;

&lt;p&gt;Understanding how data enters Python&lt;/p&gt;

&lt;p&gt;Realizing how structured data quietly shapes everything downstream&lt;/p&gt;

&lt;p&gt;In Matplotlib, I worked with time series and learned how to compare two variables over the same timeline using .twinx(). &lt;/p&gt;

&lt;p&gt;Instead of cluttering one axis, I learned how to let each variable speak in its own scale, clearly and honestly. I also built a small plot_timeseries function so I wouldn't repeat myself every time. That felt like progress: not just plotting, but designing how I work.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb7rj5d11q5zn5g0jn6k.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fmb7rj5d11q5zn5g0jn6k.jpg" alt="Plot Time-series function" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
In Importing Data with Pandas, I went deeper into .read_csv(), not just loading files, but understanding how arguments like nrows, sep, header, and na_values quietly determine what kind of story your dataset will tell before you even visualize it.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqr6w7bncd1m8ercgbncw.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fqr6w7bncd1m8ercgbncw.jpg" alt="Using keywords to import in pandas" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Then, in Intermediate Importing Data, I shifted gears and met data where it lives today: APIs and JSONs. Loading JSON locally felt simple on the surface, but it unlocked something bigger, the realization that much of the data we analyze isn't born in spreadsheets at all.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpm56bfi4qzn14ho6zlhh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fpm56bfi4qzn14ho6zlhh.jpg" alt="Exploring APIs" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Here's the uncomfortable truth I ran into: Most data mistakes don't happen during analysis. They happen much earlier, when we import, structure, or visualize without thinking deeply enough.&lt;br&gt;
A mislabeled column.&lt;br&gt;
A hidden missing value.&lt;br&gt;
Two variables plotted on the same axis when they shouldn't be.&lt;/p&gt;

&lt;p&gt;They are small choices but result to big consequences.&lt;/p&gt;

&lt;p&gt;What changed for me today was intention.&lt;br&gt;
Visualization became less about "making a chart" and more about respecting scale and meaning.&lt;/p&gt;

&lt;p&gt;Importing data became less about "getting it into Python" and more about preserving truth.&lt;/p&gt;

&lt;p&gt;Working with JSONs stopped feeling abstract and started feeling like a bridge to real-world systems.&lt;/p&gt;

&lt;p&gt;Data doesn't speak clearly by default. We make it clear, through how we import it, structure it, and choose to show it.&lt;/p&gt;

&lt;p&gt;Before I wrap this up, happy Boxing Day to everyone reading 🎁&lt;br&gt;
I hope today finds you resting, reflecting, and maybe even quietly sharpening skills that will compound long after the holidays fade.&lt;/p&gt;

&lt;p&gt;If you work with data, build systems around it, or make decisions from it: What part of your workflow do you trust too quickly, importing, visualizing, or interpreting?&lt;br&gt;
That's the question I'm sitting with today.&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 33 of improving my Data Science skills🎄</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Thu, 25 Dec 2025 11:12:07 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-33-of-improving-my-data-science-skills-mkl</link>
      <guid>https://forem.com/sp_the_data_specialist/day-33-of-improving-my-data-science-skills-mkl</guid>
      <description>&lt;p&gt;Most datasets don't exist until someone decides they should.&lt;br&gt;
So here's the thought that shaped my learning this Christmas morning: how do you turn time, text, and messy web pages into data that actually tells a story?&lt;br&gt;
That question is why I spent today practicing three things that look unrelated on the surface, but aren't.&lt;/p&gt;

&lt;p&gt;First, I worked with time series data in Matplotlib, because patterns only matter when you can see how they change over time. Plotting with a time index isn't just visualization; it's how trends, seasonality, and anomalies reveal themselves without explanation.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhum32oilrqgy993c96hh.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fhum32oilrqgy993c96hh.jpg" alt="DateTime Index" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Second, I practiced importing flat files with Pandas, because most real-world data doesn't arrive polished. Flat files are the raw material, simple, scalable, and foundational to almost every data workflow.&lt;br&gt;
Finally, I moved into web scraping with Requests and BeautifulSoup, because some of the most valuable datasets aren't downloadable at all. They live inside HTML, waiting to be structured, cleaned, and interpreted.&lt;/p&gt;

&lt;p&gt;Today wasn't about "learning tools." &lt;br&gt;
It was about learning how data professionals create meaning from what already exists, and from what hasn't been formalized yet.&lt;/p&gt;

&lt;p&gt;Here's the evidence behind those lessons:&lt;br&gt;
I plotted time series data using Pandas with a DateTimeIndex, letting Matplotlib automatically handle time-based labeling and trends.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2r1urdqzy74rk1i9dq76.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F2r1urdqzy74rk1i9dq76.jpg" alt="Plotting Time Series Data" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
I imported flat files using Pandas, reinforcing why clean indexing and data types matter before any visualization or modeling.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9i5899anyfa3qm1kukl4.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2F9i5899anyfa3qm1kukl4.jpg" alt="Importing using Pandas" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
I scraped a live website, using BeautifulSoup methods like .find_all(), .get_text(), and .title to transform unstructured HTML into structured data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4q5jqnf3fbrfy6y40oc.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fp4q5jqnf3fbrfy6y40oc.jpg" alt="Scraping using BeautifulSoup" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Exploring this reminded me that data work starts long before dashboards, and often before the dataset even exists.&lt;/p&gt;

&lt;p&gt;And on a day about reflection, giving, and meaning: Merry Christmas to everyone building quietly, learning deeply, and turning raw information into insight🎄&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>development</category>
      <category>tooling</category>
      <category>datascience</category>
      <category>machinelearning</category>
    </item>
    <item>
      <title>Day 32 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Wed, 24 Dec 2025 19:12:24 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-32-of-improving-my-data-science-skills-4b16</link>
      <guid>https://forem.com/sp_the_data_specialist/day-32-of-improving-my-data-science-skills-4b16</guid>
      <description>&lt;p&gt;Today was one of those days where everything quietly stacked on top of each other.&lt;/p&gt;

&lt;p&gt;I worked across three areas:&lt;br&gt;
Data Visualization (Matplotlib): learning how to create subplots using small multiples, one figure, multiple related stories.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm47vrttktmq9j8l38p10.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm47vrttktmq9j8l38p10.jpg" alt="Plotting multiple graphs" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Introduction to importing Data: loading flat files with np.loadtxt(), fast, simple, and perfect for numeric data.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijyjqg11g6gih988zny3.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fijyjqg11g6gih988zny3.jpg" alt="Loading flat files" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Intermediate importing Data (which is my main focus): scraping the web using BeautifulSoup.&lt;/p&gt;

&lt;p&gt;Recall yesterday, I fetched raw HTML with requests. Today, I learned how to make sense of it. Which brings me to four questions 👇&lt;/p&gt;

&lt;p&gt;1️⃣ Why is BeautifulSoup important?&lt;br&gt;
If you work with data, here's a question for you:&lt;br&gt;
How much valuable information do you rely on that doesn't come neatly packaged in CSVs or databases? Job postings? Market prices? Customer reviews? Competitor insights? Public reports? Most of it lives on the web, messy, inconsistent, and unstructured.&lt;/p&gt;

&lt;p&gt;BeautifulSoup matters because it helps you turn public web pages into usable data, without needing to be a full-blown web developer.&lt;br&gt;
Now that we have gotten that out of the way, I would like to know:&lt;br&gt;
Where does your organization still manually copy data from websites?&lt;br&gt;
What decisions could be faster if that data was structured automatically?&lt;/p&gt;

&lt;p&gt;2️⃣ What is BeautifulSoup actually about?&lt;br&gt;
In web development, there's a term called "tag soup."&lt;br&gt;
It refers to HTML that's: poorly structured, inconsistent, and syntactically messy... that's the common structure of most of the web.&lt;/p&gt;

&lt;p&gt;BeautifulSoup exists to make tag soup beautiful again. It: parses messy HTML, organizes it into a tree structure, and lets you extract exactly what you need, calmly and predictably&lt;/p&gt;

&lt;p&gt;The core object is called BeautifulSoup, and one of its most helpful methods is prettify(), which formats ugly HTML into clean, readable, indented structure.&lt;br&gt;
Think of it as: turning a noisy room into an organized library.&lt;/p&gt;

&lt;p&gt;3️⃣ How does BeautifulSoup work? (The practical framework)&lt;br&gt;
Here's the simple workflow I practiced today:&lt;/p&gt;

&lt;p&gt;Fetch the page (using requests from yesterday)&lt;br&gt;
Parse the HTML with BeautifulSoup&lt;br&gt;
Navigate the structure&lt;br&gt;
Extract what matters&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fige903s6vlje3trpm1iz.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fige903s6vlje3trpm1iz.jpg" alt="Extracting data using BeautifulSoup" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Some methods I used:&lt;br&gt;
.prettify() to see clean, indented HTML&lt;/p&gt;

&lt;p&gt;.title to get the page title&lt;/p&gt;

&lt;p&gt;.get_text() to extract all readable text&lt;/p&gt;

&lt;p&gt;.find_all() to collect all links or repeated elements&lt;/p&gt;

&lt;p&gt;This is where scraping stops being "guesswork" and starts being systematic analysis.&lt;/p&gt;

&lt;p&gt;4️⃣ What happens when you apply this to your world?&lt;br&gt;
Now imagine:&lt;br&gt;
Tracking competitor pricing changes automatically&lt;/p&gt;

&lt;p&gt;Monitoring job market trends weekly&lt;/p&gt;

&lt;p&gt;Extracting customer sentiment from reviews&lt;/p&gt;

&lt;p&gt;Building datasets that don't officially "exist"&lt;/p&gt;

&lt;p&gt;What questions could you answer if the web became queryable?&lt;br&gt;
And more importantly: What data are you currently ignoring because it looks too messy to touch?&lt;/p&gt;

&lt;p&gt;Today's lesson for me was simple but powerful:&lt;br&gt;
Getting data isn't the hard part anymore, understanding and structuring it is.&lt;/p&gt;

&lt;p&gt;Tomorrow, I'll keep pushing deeper into implementation and real use cases. &lt;br&gt;
Still learning. Still experimenting. Still curious.&lt;/p&gt;

&lt;p&gt;If you've ever wondered how raw web pages turn into insights, this is one of the first real steps.&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 31 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Tue, 23 Dec 2025 16:18:58 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-31-of-improving-my-data-science-skills-18o2</link>
      <guid>https://forem.com/sp_the_data_specialist/day-31-of-improving-my-data-science-skills-18o2</guid>
      <description>&lt;p&gt;One thought kept crossing my mind today: How many things look simple… until you actually try to understand what's underneath?&lt;br&gt;
That was my mood as I settled into my space and started learning.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6fuu9qjfjyvgro6j0bk.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fq6fuu9qjfjyvgro6j0bk.jpg" alt="Me in my perfect environment" width="800" height="1067"&gt;&lt;/a&gt;&lt;br&gt;
I spent time customizing my plots, changing labels, adding markers, and titles until the visuals actually said something. It reminded me that data isn't just numbers..&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4or5p3d6nn7m1547rfx.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fx4or5p3d6nn7m1547rfx.jpg" alt="Customizing plots" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
I also worked through exercises pulling HTML pages using the Requests package. Seeing raw web content arrive in my editor felt oddly grounding, like peeking behind the curtain before any importing magic begins.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5bpd44gejtc8e7v0re9.jpg" class="article-body-image-wrapper"&gt;&lt;img src="https://media2.dev.to/dynamic/image/width=800%2Cheight=%2Cfit=scale-down%2Cgravity=auto%2Cformat=auto/https%3A%2F%2Fdev-to-uploads.s3.amazonaws.com%2Fuploads%2Farticles%2Fm5bpd44gejtc8e7v0re9.jpg" alt="Importing files using Request package" width="800" height="450"&gt;&lt;/a&gt;&lt;br&gt;
Then there were flat files. Simple. Unflashy. Powerful. The kind of files that quietly hold together so much of data science work, easy to share, easy to load, easy to overlook until you truly understand why they matter.&lt;br&gt;
Nothing about today felt rushed. Nothing felt forced.&lt;br&gt;
Just small, steady moments of understanding stacking up.&lt;br&gt;
Tomorrow, I'll keep building on this. More curiosity. More exercises. More implementation.&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 30 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Mon, 22 Dec 2025 22:10:37 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-30-of-improving-my-data-science-skills-5af2</link>
      <guid>https://forem.com/sp_the_data_specialist/day-30-of-improving-my-data-science-skills-5af2</guid>
      <description>&lt;p&gt;Today felt like one of those quiet but powerful learning days, the kind where things don't just work, but I understand why and how they work.&lt;/p&gt;

&lt;p&gt;I spent today deep in importing data in Python.  It started with files. Not fancy models. Not dashboards. Just learning how data enters Python.&lt;br&gt;
I learned how to:&lt;br&gt;
Read entire text files safely using with open()&lt;br&gt;
Import Excel files with multiple sheets using pd.read_excel()&lt;br&gt;
I passed sheet_name=None and realized: "Oh… Python just handed me every sheet as a dictionary." That was a small win that felt big.&lt;br&gt;
Suddenly, Excel wasn't just a file anymore. It was a structured collection of DataFrames, each one accessible by name. Simple, Clean yet Powerful.&lt;/p&gt;

&lt;p&gt;Then came the visuals. Data isn't meant to stay silent. Using Matplotlib, I began turning numbers into pictures, they are visual patterns that explained more than raw values ever could&lt;/p&gt;

&lt;p&gt;This is where curiosity really took over. Because when you see the data:&lt;br&gt;
You start asking better questions&lt;br&gt;
You notice patterns you didn't expect&lt;br&gt;
You stop guessing and start observing&lt;br&gt;
Today really taught me learning isn't just about new functions or syntax. It's about realizing:&lt;br&gt;
Data doesn't magically appear, it's imported intentionally&lt;br&gt;
Files aren't scary, they're just formats waiting to be read&lt;br&gt;
Visualization isn't decoration, it's understanding&lt;/p&gt;

&lt;p&gt;Tomorrow, I'm going deeper:&lt;br&gt;
More data sources&lt;br&gt;
More visuals&lt;br&gt;
More exercises that stretch understanding beyond&lt;/p&gt;

&lt;p&gt;If today was about opening the door to data, Tomorrow is about walking confidently through it.&lt;/p&gt;

&lt;p&gt;And I'm just getting started&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 29 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Mon, 22 Dec 2025 18:50:06 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-29-of-improving-my-data-science-skills-39d9</link>
      <guid>https://forem.com/sp_the_data_specialist/day-29-of-improving-my-data-science-skills-39d9</guid>
      <description>&lt;p&gt;Over the weekend, I crossed two big learning milestones🥳🎉&lt;br&gt;
✅Completed Web Scraping in Python&lt;br&gt;
✅Completed Introduction to Statistics in Python&lt;br&gt;
Web scraping taught me how to actually collect data from the web, building spiders, navigating pages, extracting structured information, and understanding how raw data is born.&lt;/p&gt;

&lt;p&gt;Statistics helped me make sense of that data, from probability distributions to correlation, causation vs spurious relationships, design of experiments and how data behaves in the real world.&lt;/p&gt;

&lt;p&gt;To start the week, I moved into:&lt;br&gt;
Introduction to Data Visualization with Matplotlib&lt;br&gt;
Intermediate Importing Data in Python&lt;/p&gt;

&lt;p&gt;Now it's about turning data into clear visuals and learning how to bring data in from different sources, files, formats, and real world datasets.&lt;br&gt;
Starting tomorrow, I'll also be adding: Introduction to Importing Data in Python, to complete the pipeline.&lt;br&gt;
This phase feels exciting because everything is finally connecting: Get the data, clean it, analyze it, visualize it and explain it.&lt;/p&gt;

&lt;p&gt;Slowly but surely, I'm building the full data workflow, not just learning concepts, but practicing how they fit together.&lt;/p&gt;

&lt;p&gt;Onward to more charts, more datasets, and deeper questions&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>opensource</category>
    </item>
    <item>
      <title>Day 28 of improving my Data Science skills</title>
      <dc:creator>Sylvester Promise</dc:creator>
      <pubDate>Fri, 19 Dec 2025 20:34:04 +0000</pubDate>
      <link>https://forem.com/sp_the_data_specialist/day-28-of-improving-my-data-science-skills-15dg</link>
      <guid>https://forem.com/sp_the_data_specialist/day-28-of-improving-my-data-science-skills-15dg</guid>
      <description>&lt;p&gt;Today, I switched things up. Instead of just talking about it, I recorded a short video showing how I solved a real Web Scraping exercise using Scrapy.&lt;/p&gt;

&lt;p&gt;&lt;a href="https://www.loom.com/share/c70bb3df17ba4e34b0db37a794d401cc" rel="noopener noreferrer"&gt;https://www.loom.com/share/c70bb3df17ba4e34b0db37a794d401cc&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Specifically,I used response.follow() to navigate through the links I scraped.&lt;/p&gt;

&lt;p&gt;Alongside this, I also worked through several exercises in Introduction to Statistics in Python, focusing on:&lt;br&gt;
Using scatterplots to see relationships&lt;br&gt;
Computing correlation coefficients&lt;br&gt;
Knowing when to use correlation after visualization&lt;/p&gt;

&lt;p&gt;Even though I didn't record the statistics exercises, they strongly complemented today's scraping work. One helps you collect data, the other helps you reason about what that data actually means.&lt;/p&gt;

&lt;p&gt;I'm enjoying documenting not just what I'm learning, but how I approach problems, step by step.&lt;/p&gt;

&lt;p&gt;-SP&lt;/p&gt;

</description>
      <category>ai</category>
      <category>productivity</category>
      <category>tutorial</category>
      <category>beginners</category>
    </item>
  </channel>
</rss>
