English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

التنقل في Pandas

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

باختصار، التكرار الأساسي (لـ i في العنصر) ينتج −

Series − القيمة DataFrame − وسم العمود Panel − وسم العنصر

استكشاف DataFrame

استكشاف DataFrame يقدم أسماء الأعمدة. لنرى مثالاً.

 import pandas as pd
 import numpy as np
  
 N=20
 df = pd.DataFrame({
    ': pd.date_range(start='2016-01-01',periods=N,freq='D'),'
    ': np.linspace(0,stop=N-1,num=N),'
    ': np.random.rand(N),'
    ': np.random.choice(['Low','Medium','High'],N).tolist(),'
    ': np.random.normal(100, 10, size=(N)).tolist()'
    )
 لـ for col في df:
    print col

وقد كان خروجها كالتالي

   A
 C
 D
 x
 y

لـ مرور سطور DataFrame يمكننا استخدام الدوال التالية-

iteritems() − استنساخ زوج (مفتاح، قيمة) iterrows() − مرور السطور بنمط (index,series) itertuples() − مرور السطور بنمط namedtuples

iteritems()

استكشاف كل عمود كـ مفتاح، واستخدام القيم المميزة كـ مفتاح، واستخدام قيم العمود كـ Series.

  import pandas as pd
  import numpy as np
  
  
  
 df = pd.
  DataFrame(np.
  random.randn(4,3),columns=[
  ',col1',
  ',col2',
  '])
  
 
  لـ for key,value
   في df.
  iteritems():
  
    print key,value

نتيجة التنفيذ:

col1 0    0.802390
1    0.324060
2    0.256811
3    0.839186
الاسم: col1, نوع البيانات: float64
col2 0    1.624313
1   -1.033582
2    1.796663
3    1.856277
الاسم: col2, نوع البيانات: float64
col3 0   -0.022142
1    -0.230820
2    1.160691
3    -0.830279
الاسم: col3, نوع البيانات: float64

من الممكن ملاحظة أن كل عمود يتم تكراره كقيمة زوجية في السلسلة.

iterrows()

يتولى iterrows() إنتاج معادلة تكرارية تنتج لكل قيمة تطلع وترتيب يحتوي على بيانات كل سطر.

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])
 for row_index,row in df.iterrows():
    print row_index,row

نتيجة التنفيذ:

0    col1                    1.529759
   col2                       0.762811
   col3                       -0.634691
الاسم: 0, نوع البيانات: float64
1    col1                    -0.944087
   col2                       1.420919
   col3                       -0.507895
الاسم: 1, نوع البيانات: float64
 
2    col1                    -0.077287
   col2                       -0.858556
   col3                       -0.663385
الاسم: 2, نوع البيانات: float64
3    col1                    -1.638578
   col2                         0.059866
   col3                         0.493482
الاسم: 3, نوع البيانات: float64

بسبب iterrows() يمر على السطور، لن يتم حفظ نوع البيانات في السطر. 0,1,2 هي تطلعات السطر، col1،col2،col3 هي تطلعات السطر.

itertuples()

طريقة itertuples() تعود بمعادلة تكرارية، لكل سطر في DataFrame تنتج تكتلة مسماة. العنصر الأول في التكتلة سيكون قيمة الت索引 للسطر المميز، والباقي قيم السطر.

 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])
 for row in df.itertuples():
     print row

نتيجة التنفيذ:

Pandas(النوع=0, col1=1.5297586201375899, col2=0.76281127433814944, col3=-
0.6346908238310438)
Pandas(النوع=1, col1=-0.94408735763808649, col2=1.4209186418359423, col3=-
0.50789517967096232)
Pandas(النوع=2, col1=-0.07728664756791935, col2=-0.85855574139699076, col3=-
0.6633852507207626)
Pandas(Index=3, col1=0.65734942534106289, col2=-0.95057710432604969,
col3=0.80344487462316527)
ملاحظة:لا تحاول تعديل أي كائن أثناء الاستدلال. الاستدلال يستخدم لقراءة، يعيد الم迭代ر نسخة من الكائن (رؤية) الأصلي، لذا لن تظهر التغييرات في الكائن الأصلي.
 import pandas as pd
 import numpy as np
 df = pd.DataFrame(np.random.randn(4,3),columns = ['col1','col2','col3'])
 for index, row in df.iterrows():
    row['a'] = 10
 print df

نتيجة التنفيذ:

    col1		col2		col3
0	-1.739815	0.735595	-0.295589
1	0.635485	0.106803	1.527922
2	-0.939064	0.547095	0.038585
3	-1.016509	-0.116580	-0.523158

المراقبة، لم يكن هناك أي تغيير يظهر.