Sarah111-AHM / Semsmah

2 stars 0 forks source link

Pandas | DataFram 💖 #23

Closed Sarah111-AHM closed 1 year ago

Sarah111-AHM commented 1 year ago

import numpy as np

import pandas as pd

Object creation

Creating a Series by passing a list of values, letting pandas create a default integer index: In [3]: s = pd.Series([1, 3, 5, np.nan, 6, 8]) In [4]: s Out[4]: 0 1.0 1 3.0 2 5.0 3 NaN 4 6.0 5 8.0 dtype: float64 اشرح الكود السابق

الكود السابق يقوم بإنشاء كائن Series في مكتبة Pandas باستخدام الدالة pd.Series(). يتم تمرير قائمة من القيم إلى الدالة وهي [1, 3, 5, np.nan, 6, 8]، حيث يتم تعيين هذه القيم كقيم لكل عنصر في السلسلة.

عندما لا يتم توفير فهرس للقيم في القائمة الممررة، يقوم Pandas تلقائيًا بإنشاء فهرس رقمي افتراضي يتم تعيينه لكل عنصر في السلسلة. وتظهر النتيجة في الشكل التالي:

0 1.0
1 3.0
2 5.0
3 NaN
4 6.0
5 8.0
dtype: float64 

حيث تم تعيين القيم الرقمية في العمود الأول بين 0 و 5 كفهرس لكل عنصر في السلسلة، وتم تعيين القيم الثانوية المماثلة في العمود الثاني. يمثل NaN القيمة التي لا يتم تعيينها، وهي تمثل "ليس رقمًا" وتستخدم لإشارة إلى القيم المفقودة أو الغير معروفة.

يمكن إنشاء السلسلة المذكورة في السؤال باستخدام عدة صيغ مختلفة، وفيما يلي بعض الأمثلة:

1- استخدام قائمة من القيم المحددة:

import pandas as pd
import numpy as np

my_list = [1, 3, 5, np.nan, 6, 8]
s = pd.Series(my_list)
print(s)

2- استخدام قاموس Python:

import pandas as pd

my_dict = {'a': 1, 'b': 3, 'c': 5, 'd': None, 'e': 6, 'f': 8}
s = pd.Series(my_dict)
print(s)

3- استخدام قائمة من الأحرف كفهرس وقائمة من القيم كقيم لكل عنصر في السلسلة:

import pandas as pd

values = [1, 3, 5, None, 6, 8]
index = ['a', 'b', 'c', 'd', 'e', 'f']
s = pd.Series(values, index=index)
print(s)

4- استخدام اسم دالة لتعيين القيم لكل عنصر في السلسلة:

import pandas as pd

s = pd.Series(range(1, 7))
print(s)

يمكن استخدام الصيغ المذكورة أعلاه لإنشاء السلسلة بطرق مختلفة وفقًا لمتطلبات البرنامج.

تفضل بإلقاء نظرة على المثال التالي لإنشاء سلسلة باستخدام بعض الصيغ الأساسية المتاحة:

import pandas as pd
import numpy as np

# Create a pandas Series using a list of values
s1 = pd.Series([1, 2, 3, 4])
print(s1)

# Create a pandas Series using a dictionary
s2 = pd.Series({'a': 1, 'b': 2, 'c': 3, 'd': 4})
print(s2)

# Create a pandas Series using a list of values and a custom index
s3 = pd.Series([10, 20, 30, 40], index=['A', 'B', 'C', 'D'])
print(s3)

# Create a pandas Series using NumPy array with missing values
s4 = pd.Series(np.array([1, 2, 3, np.nan, 5, 6]))
print(s4)

# Create a pandas Series with a fixed step size
s5 = pd.Series(range(0, 10, 2))
print(s5)

يتم إنشاء السلسلة في كل مثال باستخدام صيغة مختلفة، وذلك باستخدام القائمة، القاموس، القائمة مع فهرس مخصص، مصفوفة NumPy، وخطوة ثابتة (fixed step)، على التوالي.

Creating a DataFrame by passing a NumPy array, with a datetime index and labeled columns:

dates = pd.date_range('20130101', periods=6) In [6]: dates

الكود السابق يستخدم دالة pd.date_range() في مكتبة Pandas لإنشاء فهرس تاريخي باستخدام تاريخ بداية وعدد الفترات المطلوبة.

في هذا المثال، يتم تعيين التاريخ الأولي باستخدام السلسلة '20130101'، ويتم تمرير عدد الفترات المطلوبة بواسطة الخيار periods الذي تم تعيينه هنا على 6. سيؤدي ذلك إلى إنشاء فهرس تاريخي يحتوي على 6 تواريخ، والتي تكون موزعة على فترة 6 أيام اعتبارًا من التاريخ الأولي الذي تم تعيينه. وسيتم تخزين هذه التواريخ في متغير dates.

عند طباعة dates، سيتم عرض فهرس التواريخ، حيث يكون تنسيق الفهرس هو YYYY-MM-DD، كما يلي:

DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04',
               '2013-01-05', '2013-01-06'],
              dtype='datetime64[ns]', freq='D')

يتم استخدام هذا الفهرس في العديد من عمليات مكتبة Pandas، مثل إنشاء DataFrame أو سلسلة تحتوي على قيم تاريخية مختلفة.

[6]: DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'], dtype='datetime64[ns]', freq='D') In [7]: df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD')) In [8]: df Out[8]: ABCD 2013-01-01 0.284713 0.778963 -0.462652 2.000377 2013-01-02 1.060129 0.051743 1.810738 -1.496037 2013-01-03 -1.121445 1.808866 -1.110269 0.456507 2013-01-04 1.226944 -1.359582 -0.648583 -0.055771 2013-01-05 -0.994286 -0.045295 -2.737315 -1.152376 2013-01-06 -0.908677 -1.577695 -0.203300 0.705411

الكود يتضمن عملية إنشاء DataFrame باستخدام مصفوفة NumPy وفهرس datetime تم إنشاؤه في السطر السابق.

في السطر رقم 7، يتم إنشاء DataFrame باستخدام pd.DataFrame()، ويتم تمرير مصفوفة np.random.randn(6, 4) كقيم للبيانات، وفهرس dates كفهرس الصفوف، وقائمة المسميات ['A', 'B', 'C', 'D'] كأعمدة مسماة.

عند طباعة DataFrame الناتج في السطر رقم 8، تظهر القيم الموجودة في كل خلية في الصفوف والأعمدة. تم استخدام حرف كلمة "list" لتحويل السلسلة 'ABCD' إلى قائمة من المسميات الفردية للأعمدة. تلاحظ أن كل قيمة في الصفوف تم تعيينها بشكل عشوائي باستخدام np.random.randn() والتي تم إنشاؤها في DataFrame.

تم تخزين DataFrame الناتج في متغير df.

Creating a DataFrame by passing a dict of objects that can be converted to series-like

يتيح لنا استخدام القاموس (Dict) في مكتبة Pandas إنشاء DataFrame. يتم إنشاء DataFrame من خلال تمرير قاموس من الكائنات المماثلة لسلسلة Series-like.

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

يمكن القيام بذلك بالتالي:

import pandas as pd

# create a dictionary with data
data_dict = {'A': [1, 2, 3], 'B': ['a', 'b', 'c'], 'C': pd.Series([0.1, 0.2, 0.3])}

# create a DataFrame from the dictionary
df = pd.DataFrame(data_dict)

# print the resulting DataFrame
print(df)

في هذا المثال، يتم إنشاء قاموس data_dict الذي يحتوي على 3 مفاتيح A و B و C، وقيمهم هي قائمة [1, 2, 3] وقائمة ['a', 'b', 'c'] وسلسلة Series [0.1, 0.2, 0.3] على التوالي.

ثم يتم إنشاء DataFrame باستخدام pd.DataFrame() والذي يتم تمرير القاموس data_dict كمدخل. يتم تحويل القائمة والسلسلة إلى سلسلة Series قبل إنشاء DataFrame.

أخيرًا، يتم طباعة DataFrame الناتج باستخدام print().

ستتم طباعة DataFrame الناتج التي يتم إنشاؤها في هذا المثال كالتالي:

   A  B    C
0  1  a  0.1
1  2  b  0.2
2  3  c  0.3

يمكن ملاحظة أن اسماء الأعمدة تتوافق مع المفاتيح في القاموس والتي تم تمثيلها بأشكال مختلفة من البيانات، ولكنها تم تحويلها جميعًا إلى Series قبل إنشاء DataFrame.

أمثلة على إنشاء DataFrame باستخدام قاموس:

1- إنشاء DataFrame باستخدام قاموس مع سلسلات Series وقائمة:

import pandas as pd

# create a dictionary with data
data_dict = {'A': pd.Series([1, 2, 3]), 'B': pd.Series(['a', 'b', 'c']), 'C': [0.1, 0.2, 0.3]}

# create a DataFrame from the dictionary
df = pd.DataFrame(data_dict)

# print the resulting DataFrame
print(df)

ستتم طباعة DataFrame الناتج:

   A  B    C
0  1  a  0.1
1  2  b  0.2
2  3  c  0.3

2- إنشاء DataFrame باستخدام قاموس مع قائمة ومصفوفة NumPy:

import pandas as pd
import numpy as np

# create a dictionary with data
data_dict = {'A': [1, 2, 3], 'B': np.random.randn(3), 'C': [0.1, 0.2, 0.3]}

# create a DataFrame from the dictionary
df = pd.DataFrame(data_dict)

# print the resulting DataFrame
print(df)

ستتم طباعة DataFrame الناتج:

   A         B    C
0  1 -0.996343  0.1
1  2  0.080971  0.2
2  3  0.296342  0.3

3- إنشاء DataFrame باستخدام قاموس مع قائمة وقائمة وسلسلة Series:

import pandas as pd

# create a dictionary with data
data_dict = {'A': [1, 2, 3], 'B': ['a', 'b', 'c'], 'C': pd.Series([0.1, 0.2, 0.3])}

# create a DataFrame from the dictionary
df = pd.DataFrame(data_dict)

# print the resulting DataFrame
print(df)

ستتم طباعة DataFrame الناتج:

   A  B    C
0  1  a  0.1
1  2  b  0.2
2  3  c  0.3

يمكن ملاحظة أن جميع الأمثلة تستخدم قاموس مع القيم المختلفة التي يمكن تحويلها إلى Series-like objects، وتم إنشاء DataFrame باستخدام pd.DataFrame() والذي يتم تمرير القاموس كمدخل.

In [9]: df2 = pd.DataFrame({'A': 1., ...: 'B': pd.Timestamp('20130102'), ...: 'C': pd.Series(1, index=list(range(4)), dtype='float32'), ...: 'D': np.array([3] * 4, dtype='int32'), ...: 'E': pd.Categorical(["test", "train", "test", "train"]), ...: 'F': 'foo'}) ...: In [10]: df2 Out[10]: ABCDEF 0 1.0 2013-01-02 1.0 3 test foo 1 1.0 2013-01-02 1.0 3 train foo 2 1.0 2013-01-02 1.0 3 test foo 3 1.0 2013-01-02 1.0 3 train foo

يتضمن الكود إنشاء DataFrame جديد باستخدام قاموس يحتوي على مختلف أنواع البيانات.

في السطر 9، يتم إنشاء قاموس يحتوي على المفاتيح 'A' و 'B' و 'C' و 'D' و 'E' و 'F'، والتي تمثل كل من:

ثم يتم إنشاء DataFrame الجديد باستخدام pd.DataFrame()، والذي يتم تمرير القاموس الذي تم إنشاؤه في السطر 9 كمدخل.

أخيرًا، يتم طباعة DataFrame الناتج في السطر 10 باستخدام print().

ستتم طباعة DataFrame الناتج في هذا المثال كالتالي:

     A          B    C  D      E    F
0  1.0 2013-01-02  1.0  3   test  foo
1  1.0 2013-01-02  1.0  3  train  foo
2  1.0 2013-01-02  1.0  3   test  foo
3  1.0 2013-01-02  1.0  3  train  foo

يمكن ملاحظة أن DataFrame الناتج يحتوي على الأعمدة 'A' و 'B' و 'C' و 'D' و 'E' و 'F' والتي تمثل كل من الأنواع المختلفة للبيانات الممثلة في القاموس.

The columns of the resulting DataFrame have different dtypes.

تعني هذه الجملة أن الأعمدة في DataFrame الناتج لها أنواع بيانات مختلفة. وهذا يعني أن كل عمود يمكن أن يحتوي على نوع بيانات مختلف عن العمود الآخر في DataFrame.

على سبيل المثال، يمكن أن يحتوي عمود واحد على قيم عددية عائمة (float) في حين يحتوي العمود الآخر على سلسلة نصوص (string)، وهذا يعني أن الأعمدة لديها أنواع بيانات مختلفة.

هذه المشكلة قد تحدث عند إنشاء DataFrame باستخدام قاموس، حيث يمكن أن يحتوي القاموس على بيانات من أنواع مختلفة.

لحل هذه المشكلة، يمكن استخدام الدالة astype() لتحويل نوع البيانات لكل عمود في DataFrame إلى نوع بيانات محدد. على سبيل المثال، يمكن استخدام df['column_name'].astype('float') لتحويل القيم في العمود 'column_name' إلى قيم عددية عائمة.

In [11]: df2.dtypes Out[11]: A B C D E F dtype: object

تم استخدام الأمر df2.dtypes لعرض نوع بيانات كل عمود في DataFrame df2. ويتم عرض الأنواع الفعلية لكل عمود، والتي يتم تمثيلها باستخدام كائن dtype في pandas.

في هذا السياق، يمكن ملاحظة أن الأعمدة في DataFrame df2 لها الأنواع التالية:

يمكن استخدام dtypes لفحص أنواع البيانات في DataFrame والتحقق من أنها تمثل الأنواع المناسبة للبيانات المخزنة في العمود. كما يمكن استخدامها أيضًا لتحويل نوع البيانات لكل عمود إلى نوع بيانات محدد باستخدام astype()، كما ذكرنا في الإجابة السابقة.

If you’re using IPython, tab completion for column names (as well as public attributes) is automatically enabled. Here’s a subset of the attributes that will be completed: (continues on next page) In [12]: df2. # noqa: E225, E999 df2.A df2.bool df2.abs df2.boxplot df2.add df2.C df2.add_prefix df2.clip df2.add_suffix df2.columns

هذا الكود يستخدم في بيئة IPython ويستعرض الخصائص (Attributes) التي يمكن الوصول إليها من DataFrame df2 باستخدام التكملة التلقائية للعمود (Column) أو الخصائص العامة (Public Attributes).

عند كتابة df2. واستخدام مفتاح TAB، سيتم عرض قائمة من الخصائص التي يمكن الوصول إليها، بما في ذلك:

Creating a DataFrame by passing a NumPy array, with a datetime index and labeled columns: In [5]: dates = pd.date_range('20130101', periods=6) In [6]: dates

الكود السابق يستخدم مكتبة pandas ومكتبة numpy في البيثون لإنشاء DataFrame يحتوي على مصفوفة NumPy بفهرس تاريخي وأعمدة مسماة.

يعطي الكود DataFrame مع ست صفوف وأربعة أعمدة، حيث يتم تمثيل المصفوفة العشوائية عبر الصفوف والأعمدة، ويتم تحديد كل عمود بأسمه، وتم تعيين التاريخ كفهرس.

حسنًا، يمكننا التحدث بشكل أكبر عن العناصر الأساسية لهذا الكود.

أولاً، يتم استيراد مكتبة pandas باستخدام import pandas as pd. يتم استخدام هذه المكتبة للعمل مع البيانات الموجودة في شكل DataFrame، والتي هي عبارة عن جدول يحتوي على صفوف وأعمدة.

ثم، يتم استيراد مكتبة NumPy باستخدام import numpy as np. تعد NumPy مكتبة أساسية في برمجة البيانات العلمية في Python، وتوفر هذه المكتبة أدوات للعمل مع المصفوفات والأرقام والصور والبيانات الأخرى.

بعد ذلك، يتم استخدام pd.date_range لإنشاء سلسلة تاريخية باستخدام القيمة '20130101' كتاريخ بداية، وباستخدام periods=6 لإنشاء 6 فترات تاريخية متتالية. تتميز سلسلة التاريخ بكونها فهرس للصفوف في DataFrame.

يتم إنشاء مصفوفة NumPy باستخدام np.random.randn(6, 4)، حيث يتم تمرير الأبعاد المطلوبة للمصفوفة (6 صفوف و 4 أعمدة)، والتي تحتوي على قيم عشوائية من توزيع طبيعي.

أخيرًا، يتم إنشاء DataFrame باستخدام pd.DataFrame، ويتم تمرير المصفوفة العشوائية كبيانات، ومجموعة التواريخ كفهرس، وأسماء الأعمدة المحددة كمعلمات.

يتم طباعة DataFrame باستخدام print(df)، حيث يتم عرض DataFrame في شكل جدول يحتوي على الصفوف والأعمدة والقيم. يمكن استخدام DataFrame في العديد من العمليات الأخرى في برمجة البيانات، مثل الحسابات الإحصائية والرسوم البيانية والتحويلات الأخرى.

الصيغة الأساسية للكود هي كالتالي:

import pandas as pd
import numpy as np

# Create a date range
dates = pd.date_range('20130101', periods=6)

# Create a random numpy array
data = np.random.randn(6, 4)

# Create a DataFrame with dates as the index
df = pd.DataFrame(data, index=dates, columns=['A', 'B', 'C', 'D'])

# Print the DataFrame
print(df)

هذا الكود ينشئ DataFrame عشوائي باستخدام NumPy ويستخدم pandas لإنشاء فهرس تاريخي. يتم طباعة DataFrame باستخدام print(df)، والذي يعرض DataFrame في شكل جدول يحتوي على الصفوف والأعمدة والقيم. يمكن استخدام DataFrame في العديد من العمليات الأخرى في برمجة البيانات، مثل الحسابات الإحصائية والرسوم البيانية والتحويلات الأخرى.

Out[6]: DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'], dtype='datetime64[ns]', freq='D')

هذه النتيجة هي فهرس تاريخي للصفوف في DataFrame الذي تم إنشاؤه في الكود الذي تم توفيره. تحتوي هذه الفهرسة على مجموعة من التواريخ الزمنية المتتالية والتي تم إنشاؤها باستخدام الدالة pd.date_range().

تعني 'datetime64[ns]' أن تنسيق الفهرس الزمني هو datetime64 وأن الدقة الزمنية للفهرس هي النانو ثانية [ns]، وهو أحد أنواع البيانات في pandas لتمثيل التواريخ والأوقات.

أما بالنسبة لـ freq، فهي تحديد التكرار الزمني (التردد) للتواريخ في الفهرس الزمني، والتي تم تعيينها في هذا الكود على D وتعني "يوميًا"، مما يعني أن التواريخ في الفهرس الزمني تم إنشاؤها بتردد يومي. يمكن تعيين ترددات زمنية مختلفة، مثل الأسبوعية W أو الشهرية M أو السنوية Y.

In [7]: df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD')) In [8]: df Out[8]: ABCD 2013-01-01 0.284713 0.778963 -0.462652 2.000377 2013-01-02 1.060129 0.051743 1.810738 -1.496037 2013-01-03 -1.121445 1.808866 -1.110269 0.456507 2013-01-04 1.226944 -1.359582 -0.648583 -0.055771 2013-01-05 -0.994286 -0.045295 -2.737315 -1.152376 2013-01-06 -0.908677 -1.577695 -0.203300 0.705411

هذا الكود يقوم بإنشاء DataFrame عشوائي آخر، ولكنه يستخدم معلومات الفهرس الزمني dates التي تم إنشاؤها في الكود السابق لتعيين فهرس زمني لصفوف DataFrame. يتم تعيين الأعمدة باستخدام list('ABCD')، مما يعني أن الأعمدة ستتم تسميتها "A" و "B" و "C" و "D" في الترتيب.

تم إنشاء DataFrame عشوائي آخر بحيث تم إنشاء قيم عشوائية باستخدام np.random.randn(6, 4) ، والتي تنتج مصفوفة ثنائية الأبعاد 6x4 عشوائية من الأرقام العائمة. يتم تعيين هذه المصفوفة كقيم DataFrame مستخدمًا df = pd.DataFrame(np.random.randn(6, 4), index=dates, columns=list('ABCD'))

بعد ذلك، يتم طباعة هذا الـ DataFrame باستخدام print(df)، والذي يظهر DataFrame في شكل جدول. الصفوف هي التواريخ في الفهرس الزمني، والأعمدة هي A و B و C و D. يتم إظهار القيم في خلايا الجدول، والتي تم إنشاؤها بشكل عشوائي باستخدام np.random.randn().

Creating a DataFrame by passing a dict of objects that can be converted to series-like. In [9]: df2 = pd.DataFrame({'A': 1., ...: 'B': pd.Timestamp('20130102'), ...: 'C': pd.Series(1, index=list(range(4)), dtype='float32'), ...: 'D': np.array([3] * 4, dtype='int32'), ...: 'E': pd.Categorical(["test", "train", "test", "train"]), ...: 'F': 'foo'}) ...: In [10]: df2 Out[10]: ABCDEF 0 1.0 2013-01-02 1.0 3 test foo 1 1.0 2013-01-02 1.0 3 train foo 2 1.0 2013-01-02 1.0 3 test foo 3 1.0 2013-01-02 1.0 3 train foo

هذا الكود ينشئ DataFrame آخر باستخدام قاموس Python كمدخل. يتم تعيين الأعمدة باستخدام المفاتيح في القاموس: "A" و "B" و "C" و "D" و "E" و "F". يتم تعيين قيم الأعمدة بالترتيب:

بعد ذلك، يتم طباعة هذا الـ DataFrame باستخدام print(df2)، والذي يظهر DataFrame في شكل جدول. الصفوف هي المفاتيح في القاموس، والأعمدة هي A و B و C و D و E و F. يتم إظهار القيم في خلايا الجدول، والتي تم تعيينها باستخدام المفاتيح في القاموس.

التعريفات النوعية (dtypes) هي طريقة لوصف نوع البيانات المخزنة في DataFrame الخاص بك. تحدد التعريفات النوعية كيفية تخزين البيانات والعمليات التي يمكن تنفيذها عليها. يتم تعيين التعريفات النوعية تلقائيًا بناءً على القيم التي تم إدخالها في DataFrame، وقد تكون مختلفة بين الأعمدة.

في هذا المثال، يبين رسالة "The columns of the resulting DataFrame have different dtypes" أن التعريفات النوعية للأعمدة في DataFrame الذي تم إنشاؤه في الكود السابق مختلفة. على سبيل المثال، العمود "A" لديه تعريف نوع float64، بينما العمود "B" لديه تعريف نوع datetime64[ns]، والعمود "C" لديه تعريف نوع float32، والعمود "D" لديه تعريف نوع int32، والعمود "E" لديه تعريف نوع category، والعمود "F" لديه تعريف نوع object.

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

The columns of the resulting DataFrame have different dtypes. اشرح

In [11]: df2.dtypes Out[11]: A B C D E F dtype: object float64 datetime64[ns] float32 int32 category object

هذه الرسالة توضح تعريفات الأعمدة في DataFrame df2 التي تم إنشاؤه في الكود السابق باستخدام df2.dtypes. تتضمن التعريفات النوعية لكل عمود:

يمكن استخدام هذه المعلومات للتأكد من أن التعريفات النوعية للأعمدة في DataFrame متوافقة مع العمليات التي تريد تنفيذها عليها، ويمكن أيضًا استخدامها لتحويل التعريفات النوعية إذا كان ذلك ضروريًا.

If you’re using IPython, tab completion for column names (as well as public attributes) is automatically enabled. Here’s a subset of the attributes that will be completed:

Here’s a subset of the attributes that will be completed: (continues on next page) In [12]: df2. # noqa: E225, E999 df2.A df2.bool df2.abs df2.boxplot df2.add df2.C df2.add_prefix df2.clip df2.add_suffix df2.columns هذه الرسالة تظهر بعض الخيارات المتاحة لـ DataFrame df2 عند استخدام النقطة والضغط على مفتاح الـ Tab في بيئة Jupyter Notebook أو IPython.

هذه ليست كل الخيارات المتاحة، ولكنها تمثل مجموعة متنوعة من الخيارات التي يمكن استخدامها في DataFrame df2 باستخدام النقطة والضغط على مفتاح الـ Tab.

2.1.2 Viewing data See the Basics section. Here is how to view the top and bottom rows of the frame:

In [13]: df.head() Out[13]: ABCD 2013-01-01 0.284713 0.778963 -0.462652 2.000377 2013-01-02 1.060129 0.051743 1.810738 -1.496037 2013-01-03 -1.121445 1.808866 -1.110269 0.456507 2013-01-04 1.226944 -1.359582 -0.648583 -0.055771 2013-01-05 -0.994286 -0.045295 -2.737315 -1.152376 In [14]: df.tail(3) Out[14]: ABCD 2013-01-04 1.226944 -1.359582 -0.648583 -0.055771 2013-01-05 -0.994286 -0.045295 -2.737315 -1.152376 2013-01-06 -0.908677 -1.577695 -0.203300 0.705411

هذا الكود يستخدم DataFrame df الذي تم إنشاؤه في وقت سابق.

يمكن استخدام هذه المعلومات لفهم بصورة أفضل كيفية تنظيم DataFrame الخاص بك، وللتحقق من القيم الموجودة في DataFrame الخاص بك.

df.index Out[15]: DatetimeIndex(['2013-01-01', '2013-01-02', '2013-01-03', '2013-01-04', '2013-01-05', '2013-01-06'], dtype='datetime64[ns]', freq='D') In [16]: df.columns Out[16]: Index(['A', 'B', 'C', 'D'], dtype='object')

هذا الكود يستخدم DataFrame df الذي تم إنشاؤه في وقت سابق.

يمكن استخدام هذه المعلومات لفهم بصورة أفضل كيفية تنظيم DataFrame الخاص بك، وللتحقق من الفهرس وأسماء الأعمدة المستخدمة في DataFrame الخاص بك.

DataFrame.to_numpy() gives a NumPy representation of the underlying data. Note that this can be an expensive operation when your DataFrame has columns with different data types, which comes down to a fundamental differ- ence between pandas and NumPy: NumPy arrays have one dtype for the entire array, while pandas DataFrames have one dtype per column. When you call DataFrame.to_numpy(), pandas will find the NumPy dtype that can hold all of the dtypes in the DataFrame. This may end up being object, which requires casting every value to a Python object. For df, our DataFrame of all floating-point values, DataFrame.to_numpy() is fast and doesn’t require copying data.

هذا النص يوضح كيفية عمل DataFrame.to_numpy() في pandas وكيفية تأثير تنوع أنواع بيانات الأعمدة في أداء هذه العملية.

عند استخدام DataFrame.to_numpy()، يتم تحويل DataFrame إلى مصفوفة NumPy. ومع ذلك، يمكن أن تكون هذه العملية مكلفة في حالة وجود أعمدة في DataFrame لديها أنواع بيانات مختلفة. ويعود ذلك إلى الاختلاف الأساسي بين pandas و NumPy، حيث تحتوي مصفوفات NumPy على نوع بيانات واحد للمصفوفة بأكملها، بينما تحتوي DataFrame في pandas على نوع بيانات واحد لكل عمود. عند استخدام DataFrame.to_numpy()، يبحث pandas عن النوع الأنسب في NumPy الذي يمكن أن يحتوي على جميع أنواع البيانات في DataFrame. ويمكن أن يكون النوع الأنسب object، والذي يتطلب تحويل كل قيمة إلى كائن Python.

في حالة DataFrame df الذي يحتوي على قيم عائمة فقط، فإن DataFrame.to_numpy() سريع ولا يتطلب نسخ البيانات. يمكن استخدام هذه المعلومات لفهم أداء DataFrame.to_numpy() في pandas وكيفية تأثير تنوع أنواع بيانات الأعمدة في هذه العملية.

pandas: powerful Python data analysis toolkit, Release 1.1.4 In [17]: df.to_numpy() Out[17]: array([[ 0.28471327, 0.77896334, -0.46265203, 2.00037694], [ 1.06012904, 0.05174282, 1.8107384 , -1.49603744], [-1.12144461, 1.80886593, -1.11026946, 0.45650726], [ 1.22694372, -1.35958242, -0.64858336, -0.05577083], [-0.99428556, -0.0452951 , -2.73731476, -1.15237614], [-0.90867653, -1.57769498, -0.20329955, 0.70541095]])

هذا الكود يستخدم DataFrame df الذي تم إنشاؤه في وقت سابق.

يمكن استخدام هذه المعلومات لفهم كيفية تحويل DataFrame إلى مصفوفة NumPy في pandas، وكيف يمكن استخدام هذه المصفوفة لتطبيق العديد من العمليات الرياضية والإحصائية المدعومة في NumPy.

df2.to_numpy() Out[18]: array([[1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'], [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo'], [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'test', 'foo'], [1.0, Timestamp('2013-01-02 00:00:00'), 1.0, 3, 'train', 'foo']], dtype=object)

هذا الكود يستخدم DataFrame df2 الذي تم إنشاؤه في وقت سابق.

يمكن استخدام هذه المعلومات لفهم كيفية تحويل DataFrame إلى مصفوفة NumPy في pandas، وكيف يتعامل NumPy مع أنواع البيانات المختلفة في DataFrame. ومن المهم ملاحظة أن استخدام dtype=object في الخرج يمكن أن يؤدي إلى تأثير سلبي على أداء العمليات الرياضية والإحصائية في NumPy.

DataFrame.to_numpy()doesnotincludetheindexorcolumnlabelsintheoutput.

هذه العبارة تشير إلى أن دالة DataFrame.to_numpy() في pandas لا تشمل فهرس الصفوف وأسماء الأعمدة في المخرجات.

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

يمكن استخدام هذه المعلومات لفهم ما يتم تضمينه وما لا يتم تضمينه في المخرجات عند استخدام DataFrame.to_numpy() في pandas. إذا كان من الضروري تضمين فهرس الصفوف وأسماء الأعمدة في المخرجات، يمكن استخدام خيارات أخرى في pandas مثل to_dict() لتحويل DataFrame إلى قاموس Python.

19]: df.describe()

هذا الكود يقوم بإنشاء ملخص إحصائي للبيانات في DataFrame df باستخدام الدالة describe() في pandas.

يتم إنشاء ملخص إحصائي يشمل المقاييس الإحصائية الأساسية مثل:

يتم إنشاء هذا الملخص لكل عمود في DataFrame التي يحتوي على بيانات رقمية. ويمكن استخدام هذه المعلومات لفهم توزيع البيانات ومستوى التغير في البيانات في DataFrame.

من بين البيانات المدرجة في الملخص الإحصائي هي المتوسط الحسابي والانحراف المعياري، والتي يمكن استخدامها لتحديد مدى تشتت البيانات، وإذا كانت بياناتها متجانسة أو لا.

Can you show me an example of how to use the describe() function?

بالتأكيد! إليك مثال على كيفية استخدام دالة describe() في pandas:

لنفترض أن لدينا DataFrame يحتوي على بيانات متعلقة بمجموعة من الطلاب، ويتكون من الأعمدة التالية: "الاسم"، "العمر"، "الطول" و "الوزن".

لتطبيق دالة describe() على هذا البيانات، يمكن استخدام الكود التالي:

import pandas as pd

# create a sample dataframe
data = {"Name": ["John", "Jane", "Bob", "Alice", "Mike"],
        "Age": [21, 23, 20, 22, 21],
        "Height": [175, 168, 182, 170, 180],
        "Weight": [70, 65, 80, 60, 75]}

df = pd.DataFrame(data)

# use describe() function on the dataframe
df.describe()

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

يمكن تخصيص الإخراج من الدالة describe() باستخدام خيارات مختلفة، مثل تضمين بيانات غير عددية، وتغيير الدقة العددية، وتخصيص الاحتمالات المستخدمة في حساب الربع.

بالتأكيد! إليك مثال على كيفية استخدام دالة describe() في pandas:

لنفترض أن لدينا DataFrame يحتوي على بيانات متعلقة بمجموعة من الطلاب، ويتكون من الأعمدة التالية: "الاسم"، "العمر"، "الطول" و "الوزن".

لتطبيق دالة describe() على هذا البيانات، يمكن استخدام الكود التالي:

import pandas as pd

# create a sample dataframe
data = {"Name": ["John", "Jane", "Bob", "Alice", "Mike"],
        "Age": [21, 23, 20, 22, 21],
        "Height": [175, 168, 182, 170, 180],
        "Weight": [70, 65, 80, 60, 75]}

df = pd.DataFrame(data)

# use describe() function on the dataframe
df.describe()

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

يمكن تخصيص الإخراج من الدالة describe() باستخدام خيارات مختلفة، مثل تضمين بيانات غير عددية، وتغيير الدقة العددية، وتخصيص الاحتمالات المستخدمة في حساب الربع.

20]: df.T Out[20]: 2013-01-01 2013-01-02 2013-01-03 2013-01-04 2013-01-05 2013-01-06 A 0.284713 B 0.778963 C -0.462652 D 2.000377 1.060129 0.051743 1.810738 -1.496037 -1.121445 1.808866 -1.110269 0.456507 1.226944 -1.359582 -0.648583 -0.055771 -0.994286 -0.045295 -2.737315 -1.152376 -0.908677 -1.577695 -0.203300 0.705411

هذا الكود يستخدم DataFrame df لإنشاء DataFrame جديدة تمثل النسخة المعكوسة (transpose) لـ df باستخدام الدالة T في pandas.

عند استخدام df.T، يتم إنشاء DataFrame جديدة تمثل نفس البيانات في df، ولكن تم تغيير ترتيب الصفوف والأعمدة، حيث تصبح الأعمدة هي الصفوف والصفوف هي الأعمدة. يتم تغيير هذا الترتيب بحيث يكون المحور الأفقي يمثل العناوين الرئيسية للصفوف (الأسماء الرئيسية للأعمدة في DataFrame الأصلي)، والمحور العمودي يمثل العناصر المختلفة في الصفوف.

ويظهر في المثال أعلاه DataFrame جديدة بعد تطبيق df.T. يتكون هذا النموذج الجديد من 6 صفوف و 4 أعمدة، حيث يتمثل كل صف في الأعمدة الأصلية لـ df، وكل عمود يتمثل في الصفوف الأصلية لـ df. يمكن استخدام هذا DataFrame المعكوس لتحليل البيانات بشكل مختلف أو لإجراء عمليات معينة على البيانات.

يمكن الوصول إلى الصفوف والأعمدة في DataFrame المعكوس باستخدام معامل الفهرسة المستخدم في pandas. على سبيل المثال، يمكن الوصول إلى الصف الأول (الذي يمثل الأعمدة الأصلية A) باستخدام df.T.loc['A'].

Can you explain how to access a specific column in the transposed DataFrame?

بالتأكيد! يمكن الوصول إلى عمود محدد في DataFrame المعكوس باستخدام معامل الفهرسة المستخدم في pandas.

على سبيل المثال، إذا كنت تريد الوصول إلى العمود الثاني (الذي يمثل الصفوف الأصلية B) في DataFrame المعكوس، يمكن استخدام df.T[1] أو df.T['B']. وسيتم إرجاع Series تمثل هذا العمود.

يمكن أيضًا الوصول إلى الصفوف بنفس الطريقة. على سبيل المثال، يمكن الوصول إلى الصف الثاني (الذي يمثل الأعمدة الأصلية 1.060129) باستخدام df.T.loc['1.060129']. يمكن استخدام معامل الفهرسة في pandas للوصول إلى أي صف أو عمود في DataFrame المعكوس.

df.sort_index(axis=1, ascending=False)

هذا الكود يستخدم DataFrame df لإعادة ترتيب أعمدته باستخدام الدالة sort_index() في pandas.

تستخدم الدالة sort_index() لإعادة ترتيب الصفوف أو الأعمدة في DataFrame بناءً على الفهرس المستخدم. في هذا المثال، يتم تمرير معامل axis=1 لإرجاع DataFrame معين بترتيب الأعمدة، و ascending=False لترتيب الأعمدة بترتيب تنازلي.

وبذلك، يتم إنشاء DataFrame جديدة تمثل نفس بيانات df، ولكن تم تغيير ترتيب الأعمدة بحيث يتم ترتيبها بترتيب تنازلي. يمكن استخدام هذا الترتيب الجديد لتحليل البيانات بشكل مختلف أو لإجراء عمليات معينة على البيانات.

يمكن الوصول إلى الصفوف والأعمدة في DataFrame الجديدة باستخدام معامل الفهرسة المستخدم في pandas، وستكون الأعمدة مرتبة بترتيب تنازلي حسب الفهرس المستخدم. على سبيل المثال، يمكن الوصول إلى الأعمدة الأولى باستخدام df_sorted.iloc[:, 0]، والتي تحتوي على البيانات المرتبة في ترتيب تنازلي.

22]: df.sort_values(by='B')

هذا الكود يستخدم DataFrame df لإعادة ترتيب الصفوف بناءً على قيمة عمود معين باستخدام الدالة sort_values() في pandas.

تستخدم الدالة sort_values() لإعادة ترتيب الصفوف في DataFrame بناءً على قيمة عمود معين. في هذا المثال، يتم تمرير معامل by='B' لتحديد العمود الذي يتم الاستناد إليه لإعادة ترتيب الصفوف، والذي يمثل عمود B في DataFrame df.

وبذلك، يتم إنشاء DataFrame جديدة تمثل نفس بيانات df، ولكن تم تغيير ترتيب الصفوف بحيث يتم ترتيبها بناءً على قيم العمود B. يمكن استخدام هذا الترتيب الجديد لتحليل البيانات بشكل مختلف أو لإجراء عمليات معينة على البيانات.

يمكن الوصول إلى الصفوف والأعمدة في DataFrame الجديدة باستخدام معامل الفهرسة المستخدم في pandas، وستكون الصفوف مرتبة بترتيب يتم تحديده بناءً على قيم العمود B. على سبيل المثال، يمكن الوصول إلى الصف الأول (الذي يمثل البيانات المرتبة بأقل قيمة في العمود B) باستخدام df_sorted.iloc[0, :].

Note: While standard Python / Numpy expressions for selecting and setting are intuitive and come in handy for interactive work, for production code, we recommend the optimized pandas data access methods, .at, .iat, .loc and .iloc.

هذه ملاحظة في الوثائق الخاصة بـ pandas تشير إلى أنه على الرغم من أن التعبيرات القياسية في Python / Numpy للاختيار والتعيين تبدو بديهية وتأتي بمزايا في العمل التفاعلي، إلا أنها غير مثلى للعمليات الإنتاجية. وبالتالي، يتم توصية باستخدام طرق الوصول إلى البيانات المحسنة في pandas والتي تشمل الدوال التالية:

تتميز هذه الدوال بأداء أفضل وفعالية أكبر عند التعامل مع بيانات pandas الكبيرة، ويمكن استخدامها بنفس الطريقة القياسية المستخدمة في Python / Numpy. لذلك، يتم توصية باستخدام هذه الدوال في الكود الإنتاجي للحصول على أداء محسن وتحسين كفاءة العمليات.

مثال على استخدام .at[]:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

# الوصول إلى العنصر في الموضع (0, 'A')
value = df.at[0, 'A']
print(value)

# تعيين العنصر في الموضع (0, 'A') إلى قيمة مختلفة
df.at[0, 'A'] = 10
print(df)

مثال على استخدام .iloc[]:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

# الوصول إلى العنصر في الموضع الأول (0, 0)
value = df.iloc[0, 0]
print(value)

# تحديد الصفوف والأعمدة المحددة بالفهرس الصحيح
subset = df.iloc[0:2, 1:]
print(subset)

مثال على استخدام .loc[]:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

# الوصول إلى العنصر في الموضع (0, 'A')
value = df.loc[0, 'A']
print(value)

# تحديد الصفوف والأعمدة المحددة بالفهرس العام
subset = df.loc[df['A'] > 1, ['A', 'B']]
print(subset)

مثال على استخدام .iat[]:

import pandas as pd

data = {'A': [1, 2, 3], 'B': [4, 5, 6]}
df = pd.DataFrame(data)

# الوصول إلى العنصر في الموضع الأول (0, 0)
value = df.iat[0, 0]
print(value)

# تعيين العنصر في الموضع الثاني (1, 1) إلى قيمة مختلفة
df.iat[1, 1] = 20
print(df)

Getting Selecting a single column, which yields a Series, equivalent to df.A: In [23]: df['A'] Out[23]: 2013-01-01 2013-01-02 2013-01-03 2013-01-04 2013-01-05 2013-01-06 Freq: D, Name: A, dtype: float64 0.284713 1.060129 -1.121445 1.226944

هذا الكود يستخدم DataFrame df لاسترداد قيم العمود الفردي "A"، والذي يتم استرجاعه كـ Series في pandas.

يمكن استرداد قيم العمود الفردي في DataFrame باستخدام المعامل [] وتحديد اسم العمود الذي يتم الاسترجاع. في هذا المثال، يتم استرداد قيم العمود "A" باستخدام df['A'].

وبذلك، يتم إنشاء Series جديدة تحتوي على قيم العمود "A" في DataFrame df. يمكن الوصول إلى القيم في هذه الـ Series باستخدام معامل الفهرسة المستخدم في pandas. على سبيل المثال، يمكن الوصول إلى القيمة الأولى باستخدام df['A'][0]، والتي تحتوي على القيمة في الموضع الأول في العمود "A" في DataFrame.

وتجدر الإشارة إلى أن الـ Series التي يتم استردادها تتضمن فهرسًا (index) يمكن استخدامه للوصول إلى القيم بشكل محدد، وفي هذا المثال، يتم استخدام فهرس يتم تسميته باسم "2013-01-01" إلى "2013-01-06".

df[0:3] Out[24]: ABCD 2013-01-01 0.284713 0.778963 -0.462652 2.000377 2013-01-02 1.060129 0.051743 1.810738 -1.496037 2013-01-03 -1.121445 1.808866 -1.110269 0.456507 In [25]: df['20130102':'20130104'] Out[25]: ABCD 2013-01-02 1.060129 0.051743 1.810738 -1.496037 2013-01-03 -1.121445 1.808866 -1.110269 0.456507 2013-01-04 1.226944 -1.359582 -0.648583 -0.055771

هذا الكود يستخدم DataFrame df لاسترداد صفوف من DataFrame بناءً على فهرس الصف أو بناءً على الفهرس الزمني.

يمكن استرداد صفوف من DataFrame باستخدام المعامل [] وتحديد نطاق الصفوف المطلوب استردادها. في هذا المثال، يتم استرداد الصفوف من 0 إلى 3 باستخدام df[0:3]. يتم استخدام المؤشرات العددية لتحديد النطاق، والذي يتم تحديده كـ من 0 إلى 2، ويتم استرداد الصفوف الأول ، الثاني والثالث في DataFrame df.

وبذلك، يتم إنشاء DataFrame جديدة تتضمن الصفوف المحددة. يمكن الوصول إلى الصفوف والأعمدة في هذه الـ DataFrame باستخدام معامل الفهرسة المستخدم في pandas.

يمكن استرداد صفوف DataFrame بناءً على الفهرس الزمني باستخدام المعامل [] وتحديد الفاصل الزمني الذي يتم الاسترجاع في نطاق التواريخ. في هذا المثال، يتم استرداد الصفوف التي تتراوح بين "2013-01-02" و "2013-01-04" باستخدام df['20130102':'20130104']. يتم استخدام فهرس الفاصل الزمني لتحديد النطاق، والذي يتم استرجاع الصفوف المحددة في DataFrame.

وبذلك، يتم إنشاء DataFrame جديدة تتضمن الصفوف المحددة. يمكن الوصول إلى الصفوف والأعمدة في هذه الـ DataFrame باستخدام معامل الفهرسة المستخدم في pandas.

Selection by label See more in Selection by Label. For getting a cross section using a label:

In [26]: df.loc[dates[0]]

يتم استخدام هذا الكود لاسترداد الصف الذي يتوافق مع تاريخ dates[0] في DataFrame df في pandas.

يتم استخدام .loc[] للاختيار بناءً على الفهرس، وفي هذا المثال، يتم استخدام تاريخ dates[0] كفهرس للاختيار باستخدام df.loc[dates[0]].

وفي هذه الحالة، يتم استرداد الصف الذي يتوافق مع التاريخ dates[0] في DataFrame، والذي يشير إلى الصف الأول في DataFrame df. وبذلك، يتم إنشاء Series جديدة تحتوي على قيم الصف المحدد في DataFrame df. يمكن الوصول إلى القيم في هذه الـ Series باستخدام معامل الفهرسة المستخدم في pandas. على سبيل المثال، يمكن الوصول إلى القيمة الأولى باستخدام df.loc[dates[0]][0]، والتي تحتوي على القيمة في الموضع الأول في الصف الأول في DataFrame.

وتجدر الإشارة إلى أنه إذا تم استخدام فهرس زمني في DataFrame، يتم استخدام تاريخ الفهرس كمفتاح للاختيار.

What is the difference between .loc[] and .iloc[]?

.loc[] و .iloc[] هما اثنان من المعاملات الأساسية في pandas وهما يستخدمان لتحديد صفوف وأعمدة محددة في DataFrame. ولكن هناك فرق بينهما في الطريقة التي يتم بها تحديد الصفوف والأعمدة.

.loc[] يتم استخدامه للاختيار بناءً على الفهرس، ويتم تحديد الصفوف والأعمدة باستخدام الفهرس الموجود في DataFrame. يمكن استخدام الفهرس العام أو الفهرس الزمني (إذا كان متاحًا) لتحديد الصفوف والأعمدة. على سبيل المثال، يمكن استخدام .loc[] لتحديد الصف في DataFrame باستخدام الفهرس الزمني، كما في هذا المثال:

df.loc['2022-01-01']

يتم استخدام .iloc[] للاختيار بناءً على المؤشرات العددية، ويتم تحديد الصفوف والأعمدة باستخدام المؤشرات العددية للصفوف والأعمدة في DataFrame. يمكن استخدام .iloc[] لتحديد الصف في DataFrame باستخدام المؤشر العددي، كما في هذا المثال:

df.iloc[0]

وبالتالي فإن الفرق الرئيسي بين .loc[] و .iloc[] يكمن في طريقة تحديد الصفوف والأعمدة. علاوة على ذلك، يمكن استخدام .loc[] للتحديد باستخدام الفهرس الزمني (إذا كان متاحًا)، بينما لا يمكن استخدام .iloc[] للتحديد باستخدام الفهرس الزمني.

df.loc[:, ['A', 'B']]

يتم استخدام هذا الكود للاختيار للصفوف والأعمدة المحددة في DataFrame df في pandas.

.loc[] يستخدم للاختيار بناءً على الفهرس، وفي هذا المثال، يتم استخدام : لتحديد كافة الصفوف وتحديد الأعمدة "A" و "B" باستخدام ['A', 'B']. يتم تحديد الأعمدة المحددة عن طريق توفير قائمة من أسماء الأعمدة الرئيسية في DataFrame.

وبذلك، يتم إنشاء DataFrame جديدة تحتوي على الصفوف المحددة والأعمدة المحددة. يمكن الوصول إلى الصفوف والأعمدة في هذه الـ DataFrame باستخدام معامل الفهرسة المستخدم في pandas. كما يمكن عرض الـ DataFrame الجديد باستخدام print(df.loc[:, ['A', 'B']]).

df.loc['20130102':'20130104', ['A', 'B']]

يتم استخدام هذا الكود للاختيار للصفوف والأعمدة المحددة في DataFrame df في pandas، باستخدام الفهرس الزمني للاختيار.

.loc[] يستخدم للاختيار بناءً على الفهرس، وفي هذا المثال، يتم استخدام الفاصل الزمني "20130102" إلى "20130104" لتحديد الصفوف، وتحديد الأعمدة "A" و "B" باستخدام ['A', 'B']. يتم تحديد الأعمدة المحددة عن طريق توفير قائمة من أسماء الأعمدة الرئيسية في DataFrame.

وبذلك، يتم إنشاء DataFrame جديدة تحتوي على الصفوف المحددة والأعمدة المحددة. يمكن الوصول إلى الصفوف والأعمدة في هذه الـ DataFrame باستخدام معامل الفهرسة المستخدم في pandas. كما يمكن عرض الـ DataFrame الجديد باستخدام print(df.loc['20130102':'20130104', ['A', 'B']]).

وتجدر الإشارة إلى أنه عند استخدام الفهرس الزمني في DataFrame، يمكن استخدام تواريخ الفهرس كنقطة بداية ونقطة نهاية لتحديد الصفوف بينهما.

In [29]: df.loc['20130102', ['A', 'B']]

يتم استخدام هذا الكود للاختيار لقيمة محددة في DataFrame df في pandas، باستخدام الفهرس الزمني للاختيار.

.loc[] يستخدم للاختيار بناءً على الفهرس، وفي هذا المثال، يتم استخدام التاريخ dates[0] لتحديد الصف، وتحديد العمود "A". يتم تحديد العمود المحدد باستخدام اسم العمود الرئيسي في DataFrame.

وبذلك، يتم إنشاء قيمة جديدة تحتوي على القيمة المحددة في DataFrame df. يمكن الوصول إلى هذه القيمة باستخدام معامل الفهرسة المستخدم في pandas. يمكن عرض القيمة الجديدة باستخدام print(df.loc[dates[0], 'A']).

وتجدر الإشارة إلى أنه عند استخدام الفهرس الزمني في DataFrame، يمكن استخدام تاريخ الفهرس كنقطة لتحديد الصف.

df.at[dates[0], 'A']

يتم استخدام هذا الكود للاختيار لقيمة محددة في DataFrame df في pandas، باستخدام الفهرس الزمني للاختيار.

.at[] يستخدم للاختيار لقيمة واحدة فقط بناءً على الفهرس، وفي هذا المثال، يتم استخدام التاريخ dates[0] لتحديد الصف، وتحديد العمود "A". يتم تحديد العمود المحدد باستخدام اسم العمود الرئيسي في DataFrame.

وبذلك، يتم إنشاء قيمة جديدة تحتوي على القيمة المحددة في DataFrame df. يمكن الوصول إلى هذه القيمة باستخدام معامل الفهرسة المستخدم في pandas. يمكن عرض القيمة الجديدة باستخدام print(df.at[dates[0], 'A']).

يمكن استخدام .at[] عند الحاجة إلى الحصول على قيمة واحدة فقط في DataFrame، وهو أسرع من استخدام .loc[] عند الحاجة إلى الحصول على قيمة واحدة فقط.

وتجدر الإشارة إلى أنه عند استخدام الفهرس الزمني في DataFrame، يمكن استخدام تاريخ الفهرس كنقطة لتحديد الصف.

df.iloc[3]