Pandas

Pandas — اصلاح فرمت اشتباه (Cleaning Wrong Format)

آخرین بروزرسانی: 1404/08/28

اصلاح فرمت اشتباه (Cleaning Wrong Format)

در این صفحه می خواهیم با اصلاح فرمت اشتباه در pandas آشنا شویم. وقتی فرمت داده ها به هم ریخته باشد، حتی قوی ترین مدل ها هم مثل شاگردی که دفتر نامرتب دارد، گیج می شوند.

اصلاح فرمت اشتباه در pandas یعنی چه؟

داده با فرمت اشتباه یعنی مقدار ستون با چیزی که انتظار داریم جور نیست. مثلاً ستون تاریخ (Date) باید شبیه یک تاریخ باشد، اما یک جا خالی است و یک جا مثل عدد ساده نوشته شده است.

در مجموعه داده مثال، ستون Date معمولاً شبیه '2020/12/01' است. اما در یک ردیف مقدار NaN داریم و در ردیف دیگر مقدار 20201226 بدون اسلش ها نوشته شده است.

وقتی این وضعیت پیش می آید، محاسبه روی تاریخ ها سخت می شود؛ مثل این که وسط دفتر ریاضی ناگهان چند جمله انشا نوشته شده باشد.

تبدیل تاریخ ها با to_datetime() در pandas

به جای این که تک تک سلول ها را دستی درست کنیم، pandas یک متد آماده به نام to_datetime() دارد. این متد تلاش می کند همه مقادیر ستون را به نوع تاریخ (Datetime) تبدیل کند.

در مثال منبع، همه مقدارهای ستون Date را با pd.to_datetime() تبدیل می کنیم. از آرگومان format='mixed' استفاده شده تا pandas بتواند چند فرم مختلف تاریخ را تشخیص دهد.

import pandas as pd

df = pd.read_csv('data.csv')

df["Date"] = pd.to_datetime(df["Date"], format="mixed")

print(df.to_string())

مشاهده در ادیتور

بعد از اجرا، مقدار اشتباه 20201226 به تاریخ درست تبدیل می شود. مقدار خالی قبلی هم به NaT تبدیل می شود؛ NaT یعنی «Not a Time» و مثل NaN برای عدد است؛ یعنی مقدار زمانی نامعتبر یا خالی.

نکته: حالا ستون Date فرمت یکدست دارد و می توانی مرتب سازی، فیلتر و محاسبه روی تاریخ ها را راحت انجام دهی.

حذف ردیف های با تاریخ نامعتبر با dropna()

بعد از تبدیل فرمت، ردیفی که تاریخ نداشت به NaT تبدیل شد. این مقدار مثل مقدار خالی است و در تحلیل زمانی می تواند دردسر بسازد.

یکی از راه حل ها این است که ردیف هایی را که در ستون تاریخ مقدار معتبر ندارند، حذف کنیم. برای این کار از dropna() با آرگومان subset استفاده می شود.

df.dropna(subset=["Date"], inplace=True)

مشاهده در ادیتور

اینجا با subset=["Date"] می گوییم فقط ردیف هایی را حذف کن که در ستون تاریخ مقدار خالی یا NaT دارند. با inplace=True هم می گوییم همین DataFrame اصلی را تغییر بده.

نکته: اگر داده زیاد است، حذف یک یا دو ردیف معمولاً مشکلی ایجاد نمی کند؛ اما اگر داده کم است باید قبل از حذف، خوب فکر کنی.

گام های پیشنهادی برای اصلاح فرمت اشتباه در pandas

  1. با متدهایی مثل info() و head() از بخش تحلیل داده، ستون های مشکوک به فرمت اشتباه را پیدا کن.
  2. تصمیم بگیر که آیا بهتر است ردیف ها را حذف کنی یا فرمت را اصلاح کنی. این تصمیم به اهمیت داده و حجم مجموعه داده بستگی دارد.
  3. برای ستون های زمانی، از pd.to_datetime() استفاده کن تا همه مقادیر به فرمت تاریخ یکدست تبدیل شوند.
  4. ردیف هایی که بعد از تبدیل هنوز مقدار نامعتبر مثل NaT دارند را با dropna(subset=["Date"]) پاک کن.
  5. در پایان، ساختار داده را دوباره بررسی کن تا مطمئن شوی ستون ها آماده ادامه پاک سازی داده یا تحلیل هستند.

جمع بندی سریع

  • اصلاح فرمت اشتباه در pandas کمک می کند تحلیل تاریخ ها دقیق تر شود.
  • pd.to_datetime() ستون تاریخ را به فرمت زمانی استاندارد تبدیل می کند.
  • مقدار NaT یعنی تاریخ خالی یا نامعتبر، مشابه NaN برای عدد است.
  • با dropna(subset=["Date"]) می توان ردیف های دارای تاریخ نامعتبر را حذف کرد.
  • بعد از اصلاح فرمت، بقیه مراحل پاک سازی مثل پاک سازی سلول های خالی را راحت تر انجام می دهی.