One thing I’m quickly discovering about learning Python is that learning Python itself is only part of the journey.
You learn variables.
Loops.
Functions.
Lists.
Then, just when you’re starting to feel like you’re making progress, someone says:
“You should learn Pandas.”
Okay.
Then NumPy appears.
Then Matplotlib.
Then suddenly you’re reading about dataframes, arrays and data visualisation when a few weeks ago you were just happy that your for loop worked.
But this is also where Python is starting to become genuinely interesting to me.
I’m not learning Python because I want to become a software developer or data scientist.
I’m learning it as an SEO.
And SEO has a lot of data.
SEO Is Basically a Collection of Messy Datasets
Think about how much of our work eventually ends up in a spreadsheet.
Google Search Console gives us:
Clicks.
Impressions.
CTR.
Average position.
Queries.
Pages.
Countries.
Devices.
Then there’s GA4.
Crawl data.
Rank tracking.
Backlinks.
Keyword research.
Competitor data.
Google Business Profile data.
PageSpeed data.
Server logs.
And when you work with multi-location brands, things get even more interesting.
You might have hundreds of locations, thousands of pages and years of performance data.
I’ve spent more time in Excel and Google Sheets during my SEO career than I’d probably like to calculate.
And I don’t see spreadsheets disappearing from my workflow.
I love them.
But I’m starting to reach a point where I look at certain tasks and think:
There has to be a better way to do this.
That’s what has pulled me toward Python data analysis.
Pandas Is the Library I Keep Coming Back To
If there’s one Python library that immediately made sense for the type of work I do, it’s Pandas.
Not because I found it easy immediately.
I didn’t.
But because I understood the problem it was solving.
Pandas is built around working with structured data.
For an SEO, that often means exactly the kind of thing sitting inside our CSV and Excel exports.
A simple example could be:
import pandas as pd
data = pd.read_csv("search-console-data.csv")
print(data.head())
That’s not particularly impressive.
I’ve loaded a CSV.
Excel has been doing that for decades.
But then you start asking what else you can do.
Maybe I only want queries with more than 1,000 impressions.
opportunities = data[data["Impressions"] > 1000]
Maybe I want pages receiving lots of impressions but relatively few clicks.
Maybe I want to sort by CTR.
Maybe I want to group queries.
Maybe I want to combine several exports.
Maybe I want to compare two periods.
Now we’re getting somewhere.
DataFrames Took Me a Little While to Understand
You’ll hear the word DataFrame very quickly when learning Pandas.
The easiest way I’ve found to think about it is:
It’s basically a table Python can work with.
Rows.
Columns.
Values.
If you’ve spent years working in spreadsheets, the concept itself isn’t particularly strange.
What changes is how you interact with it.
Instead of clicking filters, creating formulas and dragging things around, you’re telling Python what you want it to do.
That requires a different way of thinking.
At first, doing something in Python can feel unnecessarily complicated when you know you could accomplish the same thing in Excel in thirty seconds.
But then you realise something important.
The Excel task has to be repeated tomorrow.
And next month.
Across 50 files.
Now that Python script starts looking much more attractive.
Combining SEO Data Is Where I See the Biggest Opportunity
This is probably what excites me most.
SEO data rarely lives in one place.
Imagine I have crawl data containing:
URL
Status code
Title
Canonical
H1
Indexability
Word count
Then I have Search Console data containing:
URL
Clicks
Impressions
CTR
Average position
I want those datasets together.
In a spreadsheet, I can do that.
VLOOKUP.
XLOOKUP.
Power Query.
Whatever works.
But with Pandas, I can start building a repeatable workflow.
Something like:
combined = pd.merge(
crawl_data,
search_console_data,
on="URL",
how="left"
)
Again, I’m simplifying.
Real-world data will inevitably find a way to make this more complicated.
URLs won’t match.
Trailing slashes will be inconsistent.
Parameters will appear.
Columns will have different names.
Somebody will somehow put spaces somewhere you didn’t expect.
That’s SEO data.
But the idea is powerful.
Now I can analyse technical information and performance information together.
That’s much more useful than looking at either dataset in isolation.
NumPy Is Taking Me Further Into the Data Side
NumPy is another library I’m learning.
I’ll admit that Pandas immediately feels more relevant to my day-to-day SEO work.
NumPy feels slightly more like I’m entering the world of actual data analysis.
It deals heavily with numerical data and arrays and provides efficient ways to perform mathematical operations.
At my current level, I’m not pretending I’m doing advanced statistical analysis.
I’m not.
But I can see why understanding NumPy becomes useful as the analysis becomes more sophisticated.
Things like averages, percentiles, numerical transformations and larger datasets start making more sense when you understand what NumPy is doing underneath some of the tools you’re using.
And Pandas itself relies heavily on the broader Python data ecosystem.
So even if NumPy isn’t currently the library I’m opening every day, I want to understand it.
Matplotlib Is Making Me Think About Visualising SEO Differently
Then there’s Matplotlib.
This is where Python starts producing something people outside the SEO team might actually want to look at.
Charts.
SEO reporting is full of charts.
Traffic over time.
Clicks over time.
Impressions.
Rankings.
Conversions.
Year-over-year comparisons.
Month-over-month performance.
Usually, I’m creating those in Looker Studio, GA4, Excel or another reporting platform.
Matplotlib lets me create visualisations directly from the data I’m analysing in Python.
For example:
import matplotlib.pyplot as plt
plt.plot(data["Date"], data["Clicks"])
plt.title("Organic Clicks Over Time")
plt.xlabel("Date")
plt.ylabel("Clicks")
plt.show()
It’s basic.
But again, the point for me isn’t whether Python can create a prettier chart than Looker Studio.
The interesting part is that the analysis and visualisation can happen inside the same workflow.
Import data.
Clean it.
Analyse it.
Identify the pattern.
Visualise it.
Export the result.
That’s starting to feel much more powerful.
I Want to Get Better at Finding Outliers
This is one area where I think Python could become particularly useful for the type of SEO work I do.
Especially multi-location SEO.
Imagine managing 200 locations.
Most locations are performing normally.
But twelve suddenly experience unusual declines.
I don’t necessarily want to manually open 200 reports.
I want the data to tell me:
“Chris, these locations don’t look like the others.”
Then I investigate.
That’s the relationship I want between Python and SEO.
I don’t want Python making the SEO decision.
I want Python helping me find where a human decision is needed.
Maybe a location has suddenly lost impressions.
Maybe CTR has collapsed.
Maybe its Google Business Profile data looks unusual.
Maybe several location pages are returning errors.
Maybe a group of pages has stopped receiving clicks.
Maybe one region is behaving completely differently from the rest of the network.
At scale, identifying the unusual becomes incredibly valuable.
Multi-Location SEO Is One of the Reasons I’m Learning This
Working with multi-location websites has changed how I think about SEO data.
When you’re working with one website and twenty important pages, manual analysis is manageable.
When you’re working with hundreds of locations, scale changes the problem.
Suppose I want to answer:
Which locations declined this month?
Which locations grew?
Which service pages are driving the decline?
Which locations have strong impressions but weak CTR?
Which locations rank well but aren’t generating leads?
Which locations have weak organic visibility but strong Google Business Profile engagement?
Which cities are gaining non-branded searches?
Which locations have unusual year-over-year changes?
Those aren’t impossible questions to answer with traditional SEO tools.
But answering them repeatedly across large datasets becomes time-consuming.
That’s where I think Python could eventually become extremely useful to me.
I’m Also Interested in Plotly
Another library I’m exploring is Plotly.
Matplotlib is helping me understand the fundamentals of creating charts with Python.
Plotly interests me because of interactive visualisations.
That immediately makes me think about reporting.
Imagine being able to explore performance by location.
Hover over individual data points.
Filter by region.
Compare periods.
Investigate unusual locations.
Eventually, I want to move beyond:
“Python can make a graph.”
toward:
“Can I build something useful enough that I would actually use it during an SEO analysis?”
That’s the test.
Then There’s Streamlit
This is where my curiosity starts getting dangerous.
Because once you realise Python can analyse SEO data, the next thought is:
Could I turn the analysis into a tool?
That’s where I’ve started looking at Streamlit.
Streamlit lets you build simple web applications around Python.
Now imagine something where I upload a Search Console export.
Choose a comparison period.
Select a location.
And the application automatically shows:
performance changes;
biggest winners;
biggest losers;
CTR opportunities;
query movements;
page-level trends;
and charts.
That’s much more interesting to me than another Python tutorial about calculating someone’s age.
Would my first version be ugly?
Almost certainly.
Would something break?
Absolutely.
But I’d learn a ridiculous amount building it.
I’m Learning the Libraries Through SEO Problems
This is probably the biggest change I’ve made in how I’m approaching Python.
I don’t want to learn:
Pandas → NumPy → Matplotlib → Plotly
as a checklist.
I want to start with:
“I have an SEO problem.”
Then figure out which tools help me solve it.
For example:
I have two Search Console exports and want to identify which pages declined.
Okay.
Load them with Pandas.
Clean the URLs.
Merge the datasets.
Calculate the difference.
Sort the biggest declines.
Maybe visualise them with Matplotlib.
Now I’ve learned several Python concepts while solving something I actually understand.
That works much better for me.
AI Is Helping Me Learn These Libraries Too
AI has made this process much easier.
I can take a piece of Pandas code and ask:
“Explain this line by line.”
That’s incredibly useful.
Or:
“Why is this merge producing duplicate rows?”
Or:
“What’s the difference between loc and iloc?”
Or simply:
“There has to be a cleaner way to do this. Show me.”
The danger, again, is letting AI do everything.
I could describe my entire analysis, ask AI to write the Python script, run it and get the answer.
But then I haven’t necessarily learned anything.
So I’m trying to use AI to accelerate understanding rather than outsource it.
If AI gives me code, I want to know:
What does this line do?
Why are we using this function?
What happens if the data changes?
Why did this error happen?
Could I modify this myself?
That’s slower than copying and pasting.
But it’s probably much better for actually learning Python.
I’m Not Trying to Replace My SEO Tools
This is something I keep repeating because I don’t want this Python experiment to turn into:
“Look, I rebuilt Screaming Frog badly.”
I already have excellent SEO tools.
Screaming Frog crawls websites.
Search Console gives me Google performance data.
GA4 gives me behavioural data.
Semrush and Ahrefs give me enormous amounts of search and competitor information.
Looker Studio gives me reporting capabilities.
Excel is incredibly powerful.
I don’t need Python to replace them.
What interests me is what happens between those tools.
The exports.
The cleaning.
The merging.
The comparisons.
The repetitive checks.
The custom questions.
The analysis that doesn’t fit neatly into a predefined report.
That’s where I think Python could earn a permanent place in my SEO toolkit.
The Libraries I’m Focusing on Right Now
If I had to simplify my learning path, it looks something like this:
Pandas — manipulating, cleaning, filtering, grouping and combining SEO datasets.
NumPy — understanding numerical data and the foundations underneath more advanced analysis.
Matplotlib — learning the basics of visualising data with Python.
Plotly — exploring more interactive visualisations.
Streamlit — eventually turning some of these analyses into small tools or dashboards.
There are many more Python libraries.
I’m deliberately trying not to chase all of them.
I’ve already learned from cybersecurity that there is always another rabbit hole.
Python is no different.
What I Eventually Want to Build
I have a fairly simple goal.
I want to reach the point where I can receive a large SEO dataset and my first instinct isn’t always:
Open Excel.
Maybe it’s:
Open Python.
I want to build workflows that can take crawl data, Search Console data, analytics data and eventually other sources and help me identify what actually deserves attention.
Especially across large, multi-location websites.
I want scripts that can say:
These pages look unusual.
These locations are declining.
These keywords have opportunity.
These URLs changed.
These patterns deserve investigation.
Then I do the SEO part.
Because that’s the distinction I’m increasingly interested in.
Python can process the data.
Python can find patterns.
Python can automate repetitive analysis.
Python can create visualisations.
But it doesn’t understand the client’s history.
It doesn’t know that a location changed ownership.
It doesn’t know that a service was discontinued.
It doesn’t understand the politics behind a website migration.
It doesn’t know the business priority unless we give it that context.
The data still needs judgment.
And that’s where the SEO comes back in.
I’m Still Learning
I’m nowhere near being a Python data analyst.
Right now, I’m still at the stage where something working correctly feels like a small victory.
And I’m okay with that.
I’m learning Pandas.
Exploring NumPy.
Making basic visualisations.
Breaking things.
Reading error messages.
Asking AI questions.
Trying again.
And slowly starting to see how these pieces could fit into the work I already do.
That’s what makes this interesting.
I’m not learning Python in isolation.
I’m learning it through SEO.
Every dataset gives me something to practise on.
Every repetitive task gives me a possible project.
Every annoying spreadsheet workflow gives me a reason to learn another concept.
So when people ask why an SEO would bother learning Python data analysis libraries when we already have so many tools, my answer is becoming clearer:
Because sometimes the most interesting SEO question is the one your existing tool doesn’t have a button for.
And I want to learn how to build the answer myself.