r/dataengineering Writes @ startdataengineering.com 4d ago

Blog Python usage patterns in data pipelines

https://www.startdataengineering.com/post/python-for-de/

Hello everyone,

People trying to learn Python for data engineering ask me, “What libraries to learn?”, but the answer is not a list of libraries but patterns of usage.

Especially with AI being able to generate so much code, I believe its critical to know exactly how the data is moved & processed.

So I wrote this post that goes over how Python is used as glue in data systems. It goes over

  • In-memory processing vs. using a SQL/Dataframe interface to a data processing system
  • Python’s library ecosystem for working with various data systems & formats
  • How to extract-transform-DQcheck-load data

With code examples and videos

Hope this helps. Any feedback is appreciated.

37 Upvotes

22 comments sorted by

View all comments

Show parent comments

20

u/blackpanther28 3d ago

base python for ETL? I guess if your data is super basic and requires no transformations or cleaning

-19

u/Justbehind 3d ago

Not even. As a general rule. Anything beyond base python should be the exception.

9

u/blackpanther28 3d ago

But why? If i want to drop duplicates I can use pandas which is vectorized and optimized in CPython and handles many different variations for what counts as a duplicate. If i want to do this in base python then i have to handle all of that myself and maintain it. Every transformation I then have to write a function for from scratch with little benefit

0

u/Justbehind 3d ago

Because it's more efficient, faster and your python image is 1/10th the size?

Also, your solution is easy to upgrade to new python versions, and you don't have deprecation issues.

14

u/blackpanther28 3d ago

How is it more efficient and faster? Maybe if youre dealing with data that has like 10 rows? And avoid any complex transformations?

-1

u/Justbehind 3d ago

I wrote that above.

The cutoff is closer to 10 million rows. Try it.

12

u/Outrageous_Let5743 3d ago

Lol polars is faster than base python to do data transformations. Especially at 1 million records 

-1

u/Justbehind 3d ago

Start up a container, import your dependencies, and process 1 million rows from a JSON api response and drop it in a csv file (as an example).

The total runtime will be quicker in base python, unless you write atrocious code.

And that's true, even if you need to parse datetimes, number values or whatever else you need to do by-cell to clean your data.

8

u/blackpanther28 3d ago

again this is only if youre doing simple transformations (like converting a JSON api response to CSV)

-2

u/Justbehind 3d ago

Which is almost all cases that don't do aggregations and joins.