Data Analysis

استخراج السنة والشهر بكفاءة من أعمدة التاريخ والوقت في Pandas

Spread the love

استخراج السنة والشهر من عمود التاريخ والوقت في Pandas مهمة شائعة. تستعرض هذه المقالة ثلاث طرق فعالة، مع مقارنة نقاط القوة والضعف لكل منها لمساعدتك في اختيار النهج الأنسب لاحتياجاتك.

جدول المحتويات

استخدام مُحسِّن .dt

يوفر مُحسِّن .dt طريقة مباشرة وفعالة لاستخراج مكونات التاريخ والوقت. غالبًا ما تكون هذه الطريقة هي المفضلة نظرًا لسهولة قراءتها وإيجازها.


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

df['year'] = df['date'].dt.year
df['month'] = df['date'].dt.month

print(df)

سيكون مُخرج هذا الكود:


         date  year  month
0 2024-03-15  2024      3
1 2023-11-20  2023     11
2 2024-05-10  2024      5

استخدام طريقة strftime()

توفر طريقة strftime() مرونة أكبر، مما يسمح لك بتخصيص تنسيق الإخراج. هذا مفيد بشكل خاص عندما تحتاج إلى تمثيل نصي محدد للسنة والشهر للإبلاغ أو لأغراض أخرى.


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

df['year'] = df['date'].dt.strftime('%Y')
df['month'] = df['date'].dt.strftime('%m') # استخدم '%b' لاسم الشهر المختصر، '%B' للاسم الكامل

print(df)

سيكون الناتج:


         date  year month
0 2024-03-15  2024   03
1 2023-11-20  2023   11
2 2024-05-10  2024   05

تذكر مراجعة وثائق strftime() في بايثون للحصول على قائمة كاملة بأكواد التنسيق.

الوصول المباشر باستخدام DatetimeIndex

إذا كان عمود “التاريخ” لديك بالفعل DatetimeIndex، فيمكنك الوصول مباشرة إلى سمات السنة والشهر. على الرغم من أنها أقل شيوعًا، إلا أنها قد تكون فعالة إذا كانت بياناتك بهذا التنسيق بالفعل.


import pandas as pd

data = {'date': pd.to_datetime(['2024-03-15', '2023-11-20', '2024-05-10'])}
df = pd.DataFrame(data)

date_index = pd.DatetimeIndex(df['date'])
df['year'] = date_index.year
df['month'] = date_index.month

print(df)

ينتج هذا نفس الإخراج مثل المثال الأول. ومع ذلك، فإن هذه الطريقة أقل تفضيلًا بشكل عام ما لم تكن تعمل بالفعل مع كائن DatetimeIndex.

الخاتمة: يوفر مُحسِّن .dt النهج الأكثر إيجازًا وفعالية في معظم السيناريوهات. توفر strftime() تحكمًا أكبر في التنسيق، بينما يكون الوصول المباشر إلى DatetimeIndex مفيدًا حسب الحالة. اختر الطريقة التي تناسب احتياجاتك وأسلوب الترميز الخاص بك بشكل أفضل. تأكد دائمًا من أن عمود “التاريخ” الخاص بك من نوع datetime باستخدام pd.to_datetime() إذا لزم الأمر.

اترك تعليقاً

لن يتم نشر عنوان بريدك الإلكتروني. الحقول الإلزامية مشار إليها بـ *