Pandas & NumPy Academy · درس

إنشاء Series

أنشئ Pandas Series من قائمة Python وقاموس ومصفوفة NumPy، وافحص سمتي index وvalues فيها.

الدرس 1 من 413 خطوة

إنشاء Series درس مجاني في Pandas & NumPy Academy على CoddyKit. هذا هو الدرس 1 من أصل 4. يمكنك قراءة الدرس كاملاً أدناه مجاناً — ثم تمرن عليه مباشرة في المتصفح باستخدام محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7. هذا الدرس جزء من مسار التعلم في Pandas & NumPy Academy، وتقدمك يتزامن عبر الويب وتطبيق CoddyKit. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.

ما هي Pandas Series؟

إن Pandas Series هي مصفوفة أحادية الأبعاد ذات تسميات، ويمكنها تخزين أي نوع من البيانات — أعداد صحيحة، أو أعدادًا عشرية، أو سلاسل نصية، أو كائنات Python، أو حتى Series أخرى. فكّر فيها على أنها مصفوفة NumPy مع فهرس مخصص (تسميات لكل عنصر). وهذا الفهرس هو ما يجعل Series أقوى بكثير من المصفوفات العادية في مهام تحليل البيانات التي تحتاج فيها القيم إلى أسماء وصفية.

import pandas as pd
import numpy as np

s = pd.Series([10, 20, 30, 40])
print(s)
# 0    10
# 1    20
# 2    30
# 3    40
# dtype: int64

إنشاء Series من قائمة Python

يؤدي تمرير قائمة Python إلى pd.Series() إلى إنشاء Series بفهرس RangeIndex صحيح افتراضي (0, 1, 2, ...). ويمكنك تقديم تسميات فهرس مخصصة عبر الوسيطة index=. يجب أن يساوي طول قائمة الفهرس طول البيانات. ويمكن أن تكون التسميات سلاسل نصية أو أعدادًا صحيحة أو تواريخ أو أي كائنات Python قابلة للتجزئة.

import pandas as pd

temps = pd.Series([22.5, 19.0, 25.3, 17.8],
                  index=['Mon', 'Tue', 'Wed', 'Thu'])
print(temps)
# Mon    22.5
# Tue    19.0
# Wed    25.3
# Thu    17.8
# dtype: float64

إنشاء Series من قاموس

يمكن تمرير قاموس Python مباشرةً إلى pd.Series(). وتصبح مفاتيح القاموس تسميات الفهرس، بينما تصبح القيم البيانات. وهذه إحدى أكثر الطرق طبيعية لإنشاء Series عندما تكون بياناتك تحمل تسميات ذات معنى مسبقًا. وتُرتّب Series الناتجة وفق ترتيب إدراج المفاتيح في القاموس (Python 3.7+).

import pandas as pd

stock = {'AAPL': 182.5, 'GOOG': 141.3, 'MSFT': 378.9}
s = pd.Series(stock)
print(s)
# AAPL    182.5
# GOOG    141.3
# MSFT    378.9
# dtype: float64

إنشاء Series من مصفوفة NumPy

يمكن تمرير ndarray من NumPy باعتبارها وسيطة البيانات. ويطابق dtype الخاص بـ Series قيمة dtype الخاصة بـ ndarray. وتُخزَّن البيانات الأساسية كمصفوفة NumPy، لذلك تعمل جميع دوال ufunc في NumPy مباشرةً على Series. وهذا يسهّل نقل شيفرة NumPy الحالية إلى Pandas من دون إعادة كتابة منطق تجهيز البيانات.

import pandas as pd
import numpy as np

arr = np.linspace(0, 1, 5)
s = pd.Series(arr, index=['a', 'b', 'c', 'd', 'e'])
print(s)
# a    0.00
# b    0.25
# c    0.50
# d    0.75
# e    1.00

السَمَتان .index و .values

تعيد s.index كائن Index الذي يحتوي على التسميات. وتعيد s.values مصفوفة NumPy الأساسية التي تحتوي على قيم البيانات. وكلتاهما ضروريتان للتوافق بين المكتبات: يمكنك تمرير s.values إلى أي دالة NumPy، ثم تحويل النتيجة مرة أخرى إلى Series باستخدام الفهرس الأصلي. وتعطي s.dtype نوع بيانات القيم.

import pandas as pd

s = pd.Series([3, 1, 4], index=['x', 'y', 'z'])
print(s.index)   # Index(['x', 'y', 'z'], dtype='object')
print(s.values)  # [3 1 4]
print(s.dtype)   # int64

اسم Series واسم الفهرس

يمكن أن تحتوي Series على السمة .name التي تصف ما تمثله القيم، كما يمكن أن يحتوي فهرسها على السمة .name التي تصف ما تمثله التسميات. وتظهر هذه الأسماء في DataFrames عند إسناد Series إلى عمود، وكذلك في تسميات الرسوم البيانية. عيّنها باستخدام s.name = 'price' أو عند الإنشاء باستخدام name=.

import pandas as pd

s = pd.Series([1.2, 3.4, 5.6],
              index=['a', 'b', 'c'],
              name='measurement')
s.index.name = 'label'
print(s)
# label
# a    1.2
# b    3.4
# c    5.6
# Name: measurement, dtype: float64

إنشاء Series من قيمة مفردة

يؤدي تمرير قيمة مفردة إلى pd.Series() مع فهرس صريح إلى إنشاء Series تكون جميع عناصرها مساوية لتلك القيمة. وهذا يشبه np.full() في NumPy، ويفيد في إنشاء Series ثابتة تمثل خط أساس لطرحها من Series تحتوي على بيانات فعلية أو لمقارنتها بها.

import pandas as pd

s = pd.Series(5, index=['a', 'b', 'c', 'd'])
print(s)
# a    5
# b    5
# c    5
# d    5
# dtype: int64

المحاذاة التلقائية للفهرس

تُعد المحاذاة التلقائية للفهرس إحدى أقوى ميزات Pandas Series. فعند جمع Series اثنتين، يحاذيهما Pandas وفق تسمياتهما قبل حساب النتيجة. وإذا وُجدت تسمية في إحدى Series دون الأخرى، فستكون النتيجة عند تلك التسمية NaN. ويمنع ذلك أخطاء الإزاحة بمقدار عنصر واحد الصامتة والشائعة في عمليات مصفوفات NumPy.

import pandas as pd

a = pd.Series([1, 2], index=['x', 'y'])
b = pd.Series([10, 20], index=['y', 'z'])
print(a + b)
# x     NaN
# y    12.0
# z     NaN

التحقق من طول Series وشكلها

تعيد len(s) عدد العناصر. وتعُيد s.shape صفًا بالشكل (n,) بما يتوافق مع اصطلاحات NumPy. أما s.size فتعطي القيمة نفسها التي تعطيها len(s). استخدم عمليات التحقق هذه في بداية مسار المعالجة للتأكد من أن تحميل البيانات أنتج العدد المتوقع من الصفوف قبل متابعة التحليل.

import pandas as pd

s = pd.Series(range(10))
print(len(s))     # 10
print(s.shape)    # (10,)
print(s.size)     # 10
print(s.ndim)     # 1

تحويل Series إلى أنواع أخرى

يمكنك تحويل Series مرة أخرى إلى قائمة Python باستخدام s.tolist()، أو إلى مصفوفة NumPy باستخدام s.to_numpy() أو s.values، أو إلى قاموس باستخدام s.to_dict(). وتفيد هذه التحويلات في التوافق مع المكتبات التي لا تقبل كائنات Pandas، وكذلك في تسلسل النتائج إلى JSON أو CSV.

import pandas as pd

s = pd.Series([10, 20, 30], index=['a', 'b', 'c'])
print(s.tolist())      # [10, 20, 30]
print(s.to_numpy())    # [10 20 30]
print(s.to_dict())     # {'a': 10, 'b': 20, 'c': 30}

Series مقابل عمود DataFrame

يمثل العمود الواحد من DataFrame كائن Series. وعند الوصول إلى df['col']، يعيد Pandas كائن Series بالفهرس نفسه الخاص بـ DataFrame. وعلى العكس، يمكن إدراج Series التي لها سمة name في DataFrame كعمود مباشرةً. ويساعد فهم هذه العلاقة على الانتقال بسلاسة بين عمليات Series وDataFrame.

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
col = df['a']           # Series
print(type(col))        # <class 'pandas.core.series.Series'>
print(col.values)       # [1 2 3]

تحقّق سريعًا

اختبر مدى فهمك لإنشاء Pandas Series مما ورد في هذا الدرس.

مراجعة الدرس

تعلّمت في هذا الدرس أن: Series هي مصفوفة معنونة أحادية الأبعاد مبنية على ndarray من NumPy، وأنه يمكن إنشاؤها من القوائم أو القواميس أو مصفوفات NumPy أو القيم المفردة، وأن محاذاة الفهرس تتولى تلقائيًا العمليات الحسابية المعتمدة على التسميات بين Series اثنتين. سنتناول بعد ذلك الوصول إلى عناصر Series حسب التسمية باستخدام .loc وحسب الموضع باستخدام .iloc.

البدء مجانًا

تعلم Python مع معلم ذكاء اصطناعي — مجانًا

اكتب وقم بتشغيل أكوادك الفعلية في المتصفح، واحصل على مساعدة فورية من معلم ذكاء اصطناعي متاح 24/7، واستمر من حيث توقفت على الويب أو في التطبيق.

الدورات
30
الدروس
120

الأسئلة الشائعة

هل درس «إنشاء Series» مجاني؟

نعم — نص درس «إنشاء Series» كامل متاح مجاناً هنا على الويب. لتمرينه بشكل تفاعلي (محرر أكواد مدمج ومدرس ذكاء اصطناعي متاح 24/7) وفتح باقي دورة Pandas & NumPy Academy، انتقل إلى CoddyKit PRO. تتضمن دورة Pandas & NumPy Academy 4 دروس في المجموع.

ماذا ستتعلم في «إنشاء Series»؟

أنشئ Pandas Series من قائمة Python وقاموس ومصفوفة NumPy، وافحص سمتي index وvalues فيها. تتمرن على Pandas & NumPy Academy مع أكواد عملية تشغلها مباشرة في المتصفح، ومدرس ذكاء اصطناعي متاح 24/7 يجيب على أسئلتك أثناء عملك.

هل أحتاج إلى خبرة سابقة لأبدأ Pandas & NumPy Academy؟

لا تُشترط خبرة سابقة. Pandas & NumPy Academy على CoddyKit منظم للمبتدئين حتى المتقدمين، لذا يمكنك البدء من هنا أو من البداية والتقدم بسرعتك الخاصة. هذا هو الدرس 1 من أصل 4.

كم من الوقت يستغرق درس «إنشاء Series»؟

معظم دروس CoddyKit تستغرق حوالي 5–10 دقائق. كل منها موجز وتفاعلي، لذا تحرز تقدماً مستمراً وتستأنف من حيث توقفت عبر الويب والتطبيق.

هل يمكنني كتابة وتشغيل أكواد في درس Pandas & NumPy Academy هذا؟

نعم. كل درس في Pandas & NumPy Academy يتضمن محرر أكواد مدمج، لذا تكتب وتشغل أكواداً حقيقية مباشرة في متصفحك وتحصل على تعليقات فورية من الذكاء الاصطناعي — بدون إعداد محلي.

جميع الدروس في هذه الدورة

  1. إنشاء Series
  2. الوصول المستند إلى التسميات والمستند إلى المواضع
  3. العمليات المتجهة على Series
  4. دوال Series المفيدة
← العودة إلى Pandas & NumPy Academy