Beyond Pandas: ابزار مدرن پردازش داده برای مهندسی داده ها (قسمت 1)


نویسنده (ها): هدیه اوجبولو

در ابتدا منتشر شده در به سمت هوش مصنوعیبشر

تصویر توسط نویسنده

طرح

  • مقدمه
  • چارچوب تصمیم گیری اندازه داده ها و نمودار جریان جامع تصمیم گیری
  • یک نمایش نمودار بر اساس اولویت نحوی تیمیوت عمل یا الزامات ادغام
  • نمونه های دنیای واقعی: تجزیه و تحلیل پرونده ورود به سیستم ، نمونه تجارت الکترونیکی و مورد IoT.
  • پایان

مقدمه

مشکلات پردازش داده با میزان داده افزایش می یابد. حتی وقتی آنها دیگر بهترین مناسب نیستند ، بسیاری از دانشمندان ، مهندسان و تحلیلگران داده همچنان از فناوری های شناخته شده مانند استفاده می کنند پاندابشر

این راهنما یک رویکرد سریع برای انتخاب ابزار مناسب پردازش داده ها را بررسی می کند ، چه پاندابا دلهرهبا اردک، یا پیزارک، بر اساس اندازه داده ، نیازهای عملکرد و ترجیحات گردش کار.

چارچوب تصمیم گیری اندازه داده ها و نمودار نمودار

بگذارید ما از هر ابزار مبتنی بر اندازه داده ها و معیارهای مختلف استفاده کنیم:

تصویر توسط نویسنده: راهنمای جامع انتخاب ابزار برای گردش کار داده ها بر اساس حجم داده هابا آشنایی تیمیوت نیازهای زیرساختیبشر

داده های کوچک (

اگر شما مجموعه داده زیر 1 گیگابایت است ، پاندا به طور معمول بهترین انتخاب است. استفاده از آن آسان است ، به طور گسترده اتخاذ شده و در اکوسیستم پایتون پشتیبانی می شود. مگر در مواردی که نیازهای عملکردی بسیار خاصی نداشته باشید ، پاندا به طور موثری وظایفی مانند تجزیه و تحلیل سریع اکتشافی و تجسم را انجام می دهد.

از پاندا استفاده کنید وقتی:

  • شما مجموعه داده در حافظه راحت متناسب است.
  • شما در حال انجام تجزیه و تحلیل سریع داده های اکتشافی هستید.
  • شما به اکوسیستم عظیم کتابخانه های سازگار با پاندا نیاز دارید.
  • گردش کار شما شامل تجسم داده های زیادی است.
import pandas as pd
df = pd.read_csv("small_data.csv") # Under 1GB works fine

پانداس به دلیل اکوسیستم غنی ، مستندات گسترده و پذیرش گسترده ، هنوز هم برای مجموعه داده های کوچکتر پادشاه است. برای این اندازه ها ، عملکرد عملکرد از ابزارهای دیگر ممکن است منحنی یادگیری را توجیه نکند.

داده های متوسط ​​(1 گیگابایت تا 50 گیگابایت)

هنگامی که داده های شما بین 1 گیگابایت و 50 گیگابایتی قرار می گیرد ، به چیزی سریعتر و کارآمدتر از پاندا نیاز دارید. انتخاب شما بین دلهره وت اردک بستگی به ترجیح برنامه نویسی و گردش کار شما دارد.

از polars استفاده کنید وقتی:

  • شما به سرعت بیشتری نسبت به پاندا نیاز دارید.
  • راندمان حافظه مهم است.
  • شما در حال کار با تحولات پیچیده داده هستید.
  • شما یک گردش کار محور پایتون را ترجیح می دهید.
import polars as pl
df = pl.read_csv("medium_data.csv") # Fast and memory efficient

از duckdb استفاده کنید وقتی:

  • شما نوشتن نمایش داده های SQL را ترجیح می دهید.
  • شما در حال انجام تجمع های پیچیده یا پیوستن هستید.
  • گردش کار شما تجزیه و تحلیل سنگین است.
  • شما می خواهید داده ها را مستقیماً از پرونده ها پرس و جو کنید.
# Import the DuckDB library for high-performance analytics
import duckdb

# Execute a SQL query against the CSV file and store results in a pandas DataFrame
# - Directly queries the CSV file without explicit loading, leveraging DuckDB's zero-copy architecture
# - Filters for records where 'value' column exceeds 100 for downstream analysis
# - Returns results as pandas DataFrame for compatibility with visualization libraries
df = duckdb.query("SELECT * FROM 'medium_large_data.csv' WHERE value > 100").df()

داده های بزرگ (بیش از 50 گیگابایت)

هنگامی که داده های شما از 50 گیگابایت فراتر می رود ، پیزارک به ابزار Go-to تبدیل می شود. این برای محاسبات توزیع شده طراحی شده است و می تواند به طور مؤثر مجموعه داده هایی را که دارای چندین دستگاه است ، کنترل کنند.

از pyspark استفاده کنید:

  • داده های شما از ظرفیت تک ماشین فراتر می رود.
  • پردازش توزیع شده ضروری است.
  • شما به تحمل گسل نیاز دارید.
  • زمان پردازش مهمتر از پیچیدگی تنظیم است.
# Import SparkSession from pyspark.sql module, which is the entry point to Spark SQL functionality
from pyspark.sql import SparkSession

# Initialize a Spark session with meaningful application name for monitoring/logging purposes
# - SparkSession.builder allows fluent configuration of Spark settings
# - appName defines the name shown in Spark UI and logs for easier identification
# - getOrCreate() either creates a new session or returns an existing one to avoid redundancy
spark = SparkSession.builder.appName("BigDataAnalysis").getOrCreate()

# Load CSV data into a Spark DataFrame with automatic schema inference
# - Distributed reading of potentially large CSV file leveraging Spark's parallel processing
# - header=True treats first row as column names instead of data
# - inferSchema=True analyzes data to determine appropriate column types, avoiding default string types
# - Returns a distributed DataFrame that can scale across a cluster for subsequent operations
df = spark.read.csv("really_big_data.csv", header=True, inferSchema=True)

Pyspark به شما امکان می دهد تا پردازش را در چندین دستگاه توزیع کنید و مجموعه داده های صدها گیگابایت را به پتابیت ها منتقل کنید.

تصویر توسط نویسنده: نمودار تصمیم گیری برای انتخاب ابزار پردازش داده بر اساس اندازه داده هابا ترجیح نحو تیمیوت عمل یا الزامات ادغام 🟦 اردک 🟩 دلهره 🟨 پاندا 🟥 پیزارک

عوامل اضافی برای در نظر گرفتن

در حالی که اندازه داده عامل اصلی است ، چندین ملاحظات دیگر باید بر انتخاب شما تأثیر بگذارند:

  • آیا نیاز به اجرای چندین دستگاه دارید؟PySpark
  • کار با دانشمندان داده ای که پاندا را می شناسند؟Polars (easiest transition)
  • به بهترین عملکرد در یک دستگاه واحد نیاز دارید؟DuckDB یا Polars
  • آیا نیاز به ادغام با گردش کار SQL موجود دارید؟DuckDB
  • داشبورد در زمان واقعی؟DuckDB
  • تحت محدودیت حافظه کار می کنید؟Polars یا DuckDB
  • آماده سازی داده برای داشبوردهای دو در مقیاس؟PySpark یا DuckDB

با ارزیابی سیستماتیک این عوامل ، کاربران می توانند تصمیمات آگاهانه تری بگیرند که کدام ابزار پردازش داده ها یا ترکیبی از ابزارها به بهترین وجه متناسب با نیازهای خاص پروژه و قابلیت های تیم آنها است.

نمونه های دنیای واقعی

مثال 1: تجزیه و تحلیل پرونده ورود به سیستم (10 گیگابایت)

پردازش سیاهههای مربوط به سرور برای استخراج الگوهای خطا:

  • انتخاب بد: پاندا (آهسته ، مسائل مربوط به حافظه).
  • انتخاب خوب: duckdb (می توانید مستقیماً از پرونده های ورود به سیستم پرس و جو کنید).

رمز نمونه:

import duckdb
error_counts = duckdb.query("""
SELECT error_code, COUNT(*) as count
FROM 'server_logs.csv'
GROUP BY error_code
ORDER BY count DESC
"""
).df()

مثال 2: داده های تجارت الکترونیکی (30 گیگابایت)

تجزیه و تحلیل الگوهای خرید مشتری:

  • انتخاب بد: پاندا (سقوط خواهد کرد)
  • انتخاب خوب: polars (برای تحولات) + duckdb (برای جمع آوری)

رمز نمونه:

import polars as pl
import duckdb

# Load and transform with Polars
df = pl.scan_csv("transactions.csv")
df = df.filter(pl.col("purchase_date") > "2023-01-01")

# Convert to DuckDB for complex aggregation
duckdb.register("transactions", df.collect())
customer_segments = duckdb.query("""
SELECT customer_id,
SUM(amount) as total_spent,
COUNT(*) as num_transactions,
AVG(amount) as avg_transaction
FROM transactions
GROUP BY customer_id
HAVING COUNT(*) > 5
"""
).df()

مثال 3: داده های سنسور (100 گیگابایت+)

پردازش داده های سنسور IoT از چندین دستگاه:

  • انتخاب بد: هر راه حل تک ماشین
  • انتخاب خوب: pyspark

رمز نمونه:

from pyspark.sql import SparkSession
from pyspark.sql.functions import window, avg

spark = SparkSession.builder.appName("SensorAnalysis").getOrCreate()

sensor_data = spark.read.parquet("s3://sensors/data/")

# Calculate rolling averages by sensor
hourly_averages = sensor_data \
.withWatermark("timestamp", "1 hour") \
.groupBy(
window(sensor_data.timestamp, "1 hour"),
sensor_data.sensor_id
) \
.agg(avg("temperature").alias("avg_temp"))

در قسمت 2 این سریال، ما با مقایسه دقیق DuckDB در مقابل Polars ، از جمله معیارهای عملکرد در عملیات داده های رایج ، عمیق تر به محدوده داده های متوسط ​​(1-50 گیگابایت) شیرجه می زنیم. ما همچنین دقیقاً بررسی خواهیم کرد که SQL از پایتون (و برعکس) برای چندین کار داده بهتر عمل می کند.

پایان

به عنوان مقیاس داده های شما ، باید ابزارهای شما نیز باشد. در حالی که پاندا یک انتخاب محکم برای مجموعه داده های زیر 1 گیگابایت است ، حجم های بزرگتر خواستار راه حل های تخصصی تر هستند. Polars برای کاربران پایتون که داده های متوسط ​​را اداره می کنند می درخشد ، DuckDB برای کسانی که SQL را ترجیح می دهند ایده آل است و به پرس و جوهای تحلیلی سریع احتیاج دارد ، و Pyspark برای مجموعه داده های عظیم که نیاز به پردازش توزیع شده دارند ساخته شده است.

بهترین قسمت؟ این ابزارها منحصر به فرد نیستند ، بسیاری از گردش کار داده های مدرن آنها را با هم ترکیب می کنند ، با استفاده از POLARS برای داده های سریع ، DuckDB برای تجزیه و تحلیل سبک وزن و Pyspark برای کارهای سنگین. در نهایت ، انتخاب ابزار مناسب فقط مربوط به مجموعه داده های امروز نیست ، بلکه در مورد اطمینان از گردش کار شما می تواند با داده های شما فردا رشد کند.

با من ارتباط برقرار کنید وابسته به لینکدین

با من ارتباط برقرار کنید توییتر

منتشر شده از طریق به سمت هوش مصنوعی





منبع: https://towardsai.net/p/machine-learning/beyond-pandas-the-modern-data-processing-toolkit-for-data-engineering-part-1

پاسخی بگذارید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *