English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
السلوكيات الأساسية للتحسينبانداس تعتمد على النوع. عند التكرارعلى سلسلة، فإنه يمثل مصفوفة. تتبع بنية البيانات الأخرى (مثل DataFrame و Panel) بنفس اللغة التي تتبعها قاعدة البيانات المضيف، وهي التكرارعلى مفاتيح العنصر.
باختصار، التكرار الأساسي (لـ i في العنصر) ينتج −
Series − القيمة DataFrame − وسم العمود Panel − وسم العنصر
استكشاف 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
استكشاف كل عمود كـ مفتاح، واستخدام القيم المميزة كـ مفتاح، واستخدام قيم العمود كـ 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() إنتاج معادلة تكرارية تنتج لكل قيمة تطلع وترتيب يحتوي على بيانات كل سطر.
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() تعود بمعادلة تكرارية، لكل سطر في 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
المراقبة، لم يكن هناك أي تغيير يظهر.