فيما يلي نظرة عامة سريعة على كل طريقة وما تقوم به: ","read_csv()",": تحميل البيانات من ملف CSV إلى إطار بيانات Pandas DataFrame.","الرأس()",": يعرض الصفوف القليلة الأولى من إطار البيانات.","معلومات()",": يوفر ملخصًا موجزًا مختصرًا لإطار البيانات، بما في ذلك أنواع الأعمدة والقيم المفقودة.","وصف()",": توليد إحصائيات وصفية للأعمدة الرقمية.","لاغية()",": يحدد البيانات المفقودة في إطار البيانات.","دروبنا()",": يزيل الصفوف أو الأعمدة ذات البيانات المفقودة.","ملء()",": يستبدل البيانات المفقودة بقيم محددة.","تجميع حسب()",": تجميع البيانات بناءً على عمود واحد أو أكثر وتطبيق الدوال المجمعة.","فرز_القيم()",": فرز إطار البيانات حسب عمود واحد أو أكثر.","تطبيق()",": يطبق الدوال المخصصة على صفوف أو أعمدة إطار البيانات.","المتطلبات الأساسية"," أولاً، تأكد من تثبيت Python على جهازك. إذا لم يكن كذلك، يمكنك تنزيله من هذا الرابط.
بمجرد إعداد Python، تأكد من تثبيت مكتبة Pandas. إذا لم تكن مثبتة، يمكنك إضافتها بسهولة باستخدام الأمر التالي: ","تثبيت الباندا"," سوف نستخدم مجموعة البيانات الوهمية العقارية التالية في الأمثلة التي سنضربها: ","معرّف العقار","الموقع","غرف النوم","الحمامات","السعر","سكويرفوتاج","تاريخ الإدراج","101","نيويورك","3","2","750000","1800","2023-05-15","102","سان فرانسيسكو","1","850000","1400","2023-06-01","103","لوس أنجلوس","4","2500","2023-04-10","104","شيكاغو","650000","1700","105","ميامي","5","1200000","3500","2023-03-22","106","هيوستن","450000","2000","2023-07-01","أفضل 10 وظائف وأساليب بانداس 10","1. read_csv(): يقوم بتحميل البيانات من ملف CSV إلى إطار بيانات Pandas DataFrame."," الخطوة الأولى في استخدام الباندا هي تحميل بياناتك لإعدادها للمعالجة أو التحليل. إحدى الطرق الأكثر شيوعًا لاستيراد البيانات إلى إطار بيانات بانداس هي الدالة read_csv(). ","مثال على الرمز:","استيراد بانداس ك pd\n# تحميل مجموعة البيانات في إطار بيانات Pandas DataFrame\nfile_path = \"real_estate_listings.csv\" # استبدل بمسار ملفك الفعلي\n\n# قم بإنشاء إطار البيانات\ndf = pd.read_csv(file_path)","كـ pd","pandas.read_csv()","pd.read_csv()"," أولاً، نبدأ باستيراد مكتبة بانداس. باستخدام "," هو اصطلاح شائع بين المطورين لتبسيط الشيفرة البرمجية. على سبيل المثال، بدلًا من كتابة ","يمكننا ببساطة استخدام ","مما يجعل الكود أكثر إيجازًا وأسهل في القراءة. ","read_csv"," بعد ذلك، حدد المسار إلى ملف CSV الذي تريد تحميله إلى Pandas DataFrame. بعد ذلك، قم بإنشاء متغير واستخدم "," لتحميل الملف إلى إطار البيانات. ","المعلمات الرئيسية:"," دعونا الآن نستكشف بعض المعلمات المهمة التي تتبع هذه الطريقة: ","المحدِّد:"," حدد المحدد المستخدم في ملف CSV (على سبيل المثال ،،، ؛، \\t).","df = pd.read_csv(file_path, delimiter=',')","الفهرس_كول",": في جدولنا، يتم تحديد كل قائمة عقار من خلال معرف موجود في \"","\". لضمان استخدام بانداس لهذا العمود كمعرف فريد لكل خاصية، يمكننا تعيينه صراحةً كعمود المعرف. خلاف ذلك، سيقوم بانداس تلقائيًا بإنشاء وتعيين قيم المعرف الخاص به لكل قائمة.","df = pd.read_csv(file_path, index_col='PropertyID')","أوسيكولز",": إذا كان ملف CSV الخاص بك يحتوي على العديد من الأعمدة ولكنك تحتاج فقط إلى عدد قليل محدد، فإن بانداس يتيح لك تحقيق ذلك بسهولة باستخدام معلمة محددة.","df = pd.read_csv(file_path, usecols=['Location', 'Price', 'Bedrooms'])","2. الرأس() والذيل(): فحص البيانات","الذيل()"," الآن بعد أن تم تحميل البيانات في DataFrame، يمكننا البدء في استكشافها. للقيام بذلك، توفر بانداس طريقتين مفيدتين للغاية: "," و ",". هذه الطرق ضرورية لفحص الصفوف الأولى أو الأخيرة من مجموعة بياناتك بسرعة. ","الرأس(): تعرض هذه الطريقة أول 5 صفوف من مجموعة البيانات بشكل افتراضي. وهي مفيدة بشكل خاص للتحقق من تحميل البيانات بشكل صحيح والتحقق من بنيتها.","الذيل(): تعمل هذه الطريقة بشكل مشابه لطريقة head() ولكنها تعرض الصفوف القليلة الأخيرة بدلًا من ذلك. إنها مفيدة لفحص نهاية مجموعة البيانات، خاصةً عند التحقق مما إذا كانت البيانات كاملة أو أن السجلات اللاحقة بها قيم مفقودة.","# عرض أول 5 صفوف\nطباعة(df.head())\n# عرض آخر 3 صفوف\nطباعة(df.tail(3))\n"," ناتج ",": ","3. المعلومات() - فهم بنية إطار البيانات"," توفر الدالة info() ملخصًا موجزًا لإطار البيانات. وتتضمن تفاصيل مثل: ","عدد الصفوف والأعمدة.","أسماء الأعمدة وأنواع بياناتها.","عدد القيم غير الفارغة في كل عمود."," هذه الطريقة مفيدة لفهم بنية مجموعة بياناتك بسرعة واكتشاف المشكلات مثل القيم المفقودة أو أنواع البيانات غير الصحيحة. ","# احصل على ملخص موجز لإطار البيانات\nطباعة(df.info())"," ينتج عن الكود أعلاه المخرجات التالية: ","<class 'pandas.core.frame.DataFrame'>\nRangeIndex: 6 entries, 0 to 5\nData columns (total 7 columns):\n# Column Non-Null Count Dtype \n--- ------ -------------- ----- \n0 PropertyID 6 non-null int64 \n1 Location 6 non-null object\n2 Bedrooms 6 non-null int64 \n3 Bathrooms 6 non-null int64 \n4 Price 5 non-null float64\n5 SquareFootage 6 non-null int64 \n6 ListingDate 5 non-null object\ndtypes: float64(1), int64(4), object(2)\nmemory usage: 464.0+ bytes\n","4. الوصف(): توليد إحصائيات موجزة"," إن "," طريقة تعطي ملخصًا سريعًا للمقاييس الإحصائية الرئيسية مثل ","المتوسط",", ","الانحراف المعياري","النسب المئوية","وأكثر من ذلك. افتراضياً "," يعمل مع البيانات الرقمية، ولكن يمكنه أيضًا التعامل مع البيانات الفئوية، مما يوفر رؤى مصممة خصيصًا بناءً على نوع البيانات. ",": قائمة من الأرقام بين 0 و1، تحدد النسب المئوية التي سيتم إرجاعها. الإعداد الافتراضي هو لا شيء، والذي يُرجع النسب المئوية 25 و50 و75. قراءة المزيد ","هنا",".","تشمل",": قائمة بأنواع البيانات المراد تضمينها في الملخص. يمكنك تحديد أنواع البيانات مثل int، أو float، أو كائن (للسلاسل)، إلخ. الافتراضي هو بلا، مما يعني تضمين جميع الأنواع الرقمية.","استبعاد","لا يوجد",": قائمة بأنواع البيانات المراد استبعادها من الملخص. هذه المعلمة هي أيضًا "," افتراضيًا، مما يعني عدم استبعاد أي أنواع.","طباعة(df.describe()))"," يكون ناتج الكود كما يلي: "," معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ الإدراج\nالعدد 6.000000 6 6.000000 6.000000... 5.000000e+00 6.000000 5\nفريد NaN 6 NaN ... NaN NaN NaN 5\nأعلى NaN نيويورك NaN NaN .... NaN NaN NaN 2023-05-15\nفريك NaN 1 NaN ... NaN ... NaN NaN NaN 1\nالمتوسط 103.500000 NaN 3.500000... 7.800000 ه+05 2150.000000 NaN\nالمتوسط القياسي 1.870829 NaN 1.048809... 2.774887e+05 755.645419 NaN\nالحد الأدنى 101.000000 NaN 2.000000... 4.500000e+05 4.500000e+05 1400.000000 NaN\n25٪ 102.250000 NaN 3.000000... 6.500000e+05 6.500000e+05 1725.000000 NaN\n50٪ 103.500000 NaN 3.500000... 7.500000e+05 7.500000e+05 1900.000000 NaN\n75% 104.750000 104.750000 NaN 4.000000... 8.500000e+05 8.500000e+05 2375.000000 NaN\nبحد أقصى 106.000000.000000 NaN 5.000000... 1.200000000e+06 3500.000000 NaN\n","شرح كل إحصائية","العدد = 6","مثال على ذلك: "," لـ ","، مما يشير إلى أن جميع الصفوف تحتوي على بيانات صحيحة.","العد",": عدد العناصر غير المفقودة لكل عمود.","المتوسط = 3.5","، مما يشير إلى متوسط ","3.5 غرف نوم"," لكل عقار.",": متوسط قيمة العمود.","std = 1.048809","مما يعني وجود تباين معتدل في عدد غرف النوم.","ستد",": الانحراف المعياري، الذي يوضح انتشار القيم من المتوسط.","الحد الأدنى = 2","الحد الأقصى = 5","الحد الأدنى/الحد الأقصى",": أصغر القيم وأكبرها.","25%",": القيمة التي تقع تحتها 25% من البيانات (الربع الأول).","50%",": القيمة الوسيطة","75%",": القيمة التي تقع تحتها 75% من البيانات (الربع الثالث).","25٪، 50٪، 75٪ (أرباع)",": هذه تمثل انتشار البيانات:","5. isnull(): تحديد البيانات المفقودة","صحيح","نانو","خطأ","المجموع()"," في تحديد البيانات المفقودة في إطار البيانات. تقوم بإرجاع إطار بيانات بنفس شكل الإطار الأصلي، مع "," حيث البيانات مفقودة "," و "," خلاف ذلك. يُستخدم عادةً مع دوال أخرى مثل "," لحساب القيم المفقودة عبر الأعمدة أو الصفوف. ","# تحديد القيمالمفقودة\nطباعة (df.isull())\n# عد القيم المفقودة لكل عمود\nطباعة(df.isnull().sum())\n","df.isull()"," المخرجات: "," معرّف العقار الموقع غرف النوم الحمامات السعر المساحة المربعة تاريخ الإدراج\n0 كاذب كاذب كاذب كاذب خطأ خطأ خطأ\n1 كاذب خطأ خطأ خطأ خطأ خطأ خطأ\n2 كاذب خطأ خطأ خطأ خطأ خطأ خطأ\n3 خطأ خطأ خطأ خطأ خطأ خطأ صواب\n4 خطأ خطأ خطأ خطأ خطأ خطأ كاذب\n5 كاذب كاذب كاذب كاذب خطأ خطأ خطأ\n","df.isull().sum()","معرف الملكية 0\nالموقع 0\nغرف النوم 0\nالحمامات 0\nالسعر 1\nقدم مربع 0\nتاريخ الإدراج 1\nالنوع د: int64\n","6. دروبنا(): إزالة البيانات المفقودة"," تحذف الدالة ","الصفوف"," أو ","الأعمدة"," ببيانات مفقودة "," من إطار البيانات. بشكل افتراضي، يزيل الصفوف التي تحتوي على أي قيم مفقودة. يمكنك تخصيص سلوكه لإزالة الأعمدة فقط، أو لإسقاط الصفوف/الأعمدة التي تكون فيها جميع القيم المفقودة أو مجموعة فرعية محددة من القيم مفقودة ","# إسقاط الصفوف التي تحتوي على أي قيم مفقودة \ndf_dropped_rows = df.dropna()\nطباعة(df_dropped_rows)\n\n# إسقاط الأعمدة التي تحتوي على أي قيم مفقودة \ndf_dropped_columns = df.dropna(axis=1)\nطباعة(df_dropped_columns)\n"," هذا هو الشكل الذي يبدو عليه إطار البيانات بعد إزالة كل "," تحتوي على "," القيم: "," إليك إطار البيانات مع "," قيم تمت إزالتها. ","7. fillna(): استبدال البيانات المفقودة"," تحل الدالة محل البيانات المفقودة "," بقيم محددة. الباندا "," بكفاءة التعامل مع القيم الفارغة وإزالتها من إطار البيانات، بينما يعالج أسلوب "," حلاً مرنًا لاستبدال "," بقيمة محددة من اختيارك. تقدم هذه الطريقة طريقة مرنة لإدارة البيانات المفقودة من خلال تمكينك من ملء الفجوات باستخدام قيمة ثابتة، وهي ","الوضع","أو إحصائيات محسوبة أخرى. ","# املأ القيم الناقصة في عمود \"السعر\" بمتوسط السعر df['Price] = \ndf['Price'].fillna(df['Price'].mean()) \nطباعة(df)"," يوضِّح ناتج الكود أن "," تم استبدال القيمة بنجاح بمتوسط السعر. ","780000"," يحتوي العمود أيضًا على "," القيمة. بدلًا من إجراء عملية حسابية، يمكننا ببساطة استخدام عنصر نائب مثل \"","غير معروف",". إليك كيفية القيام بذلك; ","# ملء القيم المفقودة في عمود \"تاريخ الإدراج\" بعنصر نائب\ndf['ListingDate] = df['ListingDate].fillna('غير معروف')\nطباعة(df)\n"," يبدو إطار البيانات الآن كما يلي: ","8. groupby(): تجميع وتجميع البيانات"," تعد الدالة groupby() في Pandas أداة متعددة الاستخدامات وقوية لتقسيم إطار البيانات إلى مجموعات بناءً على عمود واحد أو أكثر، مما يتيح تحليل البيانات وتجميعها بكفاءة.
تعمل الدالة على مبدأ التقسيم والتطبيق والجمع:
أولاً، يتم تقسيم البيانات إلى مجموعات؛
بعد ذلك، يتم تطبيق دالة محددة على كل مجموعة؛
أخيرًا، يتم دمج النتائج في إطار بيانات جديد.
يبسط هذا النهج المبسط مهام معالجة البيانات المعقدة ويعزز الكفاءة التحليلية. "," على سبيل المثال، يمكنك حساب متوسط أسعار العقارات حسب الموقع أو حساب عدد العقارات المعروضة في كل فئة من فئات غرف النوم. ","# التجميع حسب 'الموقع' وحساب متوسط السعر\navg_price_price_by_location = df.groupby('Location)['Price].average()\nطباعة(avg_price_price_by_location)\n# التجميع حسب \"غرف النوم\" وحساب إجمالي المساحة المربعة\nإجمالي_قدم_مربع_بحسب_غرف_النوم = df.groupby('Bedrooms)['Bedrooms']['SquareFootage].sum()\nطباعة(total_sqft_sqft_by_bedrooms)\n# التجميع حسب أعمدة متعددة وحساب العدد\nCount_by_location_bedrooms = df.groupby(['Location', 'Bedrooms']).size()\nطباعة(Count_by_location_bedrooms)\n","متوسط السعر حسب الموقع:","الموقع\nشيكاغو 650000.0\nهيوستن 450000.0\nلوس أنجلوس ناين\nميامي 1200000.0\nنيويورك 750000.0\nسان فرانسيسكو 850000.0\nالاسم: السعر، النوع د: float64\n","إجمالي المساحة المربعة حسب غرف النوم:","غرف النوم\n2 1400\n3 3500\n4 4500\n5 3500\n","العد حسب الموقع وغرف النوم:","الموقع غرف النوم\nشيكاغو 3 1 3 \nهيوستن 4 1\nلوس أنجلوس 4 1\nميامي 5 1\nنيويورك 3 1 3 \nسان فرانسيسكو 2 1\nالنوع د: int64\n","9. sort_values(): فرز البيانات"," تُستخدم الدالة sort_values() لفرز إطار البيانات الخاص بك حسب عمود واحد أو أكثر، إما بترتيب تصاعدي أو تنازلي. يعد الفرز ضروريًا لترتيب البيانات، أو تحديد الحدود القصوى (على سبيل المثال، العقارات الأعلى سعرًا)، أو ببساطة تنظيم مجموعة البيانات لتحسين سهولة قراءتها، يمكنك الفرز بناءً على أعمدة رقمية أو فئوية أو أعمدة التاريخ والوقت. ","# الفرز حسب 'السعر' بترتيب تنازلي\ndf_sorted_بحسب_السعر = df.sort_values(by='Price'، تصاعدي=خطأ)\nطباعة(df_sorted_by_price)\n# الفرز حسب 'الموقع' بترتيب تصاعدي\ndf_sorted_by_location = df.sort_values(by='Location')\nطباعة(df_sorted_by_location)\n# الفرز حسب عدة أعمدة: أولاً حسب \"غرف النوم\" (تصاعديًا) ثم حسب \"السعر\" (تنازليًا)\ndf_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms', 'Price'], تصاعدي=[صواب، خطأ])\nطباعة(df_sorted_by_bedrooms_price)\n","الترتيب حسب السعر (تنازلياً):"," معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ القائمة\n4 105 105 ميامي 5... 1200000.0 3500 2023-03-22\n1 102 سان فرانسيسكو 2... 850000.0 1400 2023-06-01\n0 101 نيويورك 3.... 750000.0 1800 2023-05-15\n3 104 شيكاغو 3.... 650000.0 650000. 0 1700 NaN\n5 106 هيوستن 4.... 450000.0 2000 2023-07-01\n2 103 لوس أنجلوس 4.... لا شيء 2500 2023-04-10","فرز حسب الموقع (تصاعدي):","[6 صفوف × 7 أعمدة]\n معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ الإدراج\n3 104 104 شيكاغو 3 .. . 650000.0 650000.0 1700 NaN\n5 106 هيوستن 4 .. .. 450000.0 2000 2023-07-01\n2 103 لوس أنجلوس 4 .. .. لا شيء 2500 2023-04-10\n4 105 ميامي 5 . ... 1200000.0 3500 2023-03-22\n0 101 نيويورك 3 .. .. 750000.0 1800 2023-05-15\n1 102 سان فرانسيسكو 2 .. .. 850000.0 1400 2023-06-01\n","فرز حسب غرف النوم (تصاعدي) والسعر (تنازلي):"," معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ القائمة\n1 102 سان فرانسيسكو 2... 850000.0 1400 2023-06-01\n0 101 نيويورك 3.... 750000.0 1800 2023-05-15\n3 104 شيكاغو 3.... 650000.0 650000. 0 1700 NaN\n5 106 هيوستن 4.... 450000.0 2000 2023-07-01\n2 103 لوس أنجلوس 4.... لا شيء 2500 2023-04-10\n4 105 ميامي 5.... 1200000.0 3500 2023-03-22\n","10. تطبيق(): تطبيق الدوال المخصصة على البيانات"," تسمح لك الدالة apply() بتطبيق الدوال المخصصة على الصفوف أو الأعمدة في DataFrame. إنها طريقة قوية لتنفيذ التحويلات أو العمليات الحسابية أو العمليات الشرطية التي تتجاوز دوال بانداس المدمجة. "," دعنا نضرب مثالاً حيث نهدف إلى إنشاء عمود جديد لحساب سعر القدم المربع. ","# تعريف دالة مخصصة لحساب السعر لكل قدم مربع\ndef price_per_sqft(السعر، قدم مربع):\n إرجاع السعر/القدم المربع إذا كان القدم المربع != 0 وإلا 0\n\n# قم بتطبيق الدالة المخصصة لإنشاء عمود جديد \ndf['PricePerPerSqFt'] = df.apply(lambda row: price_per_sqft(row['Price'], row['SquareFootage'])، المحور=1)\nطباعة (df)\n","إليك مخرجات الكود أعلاه:"," معرّف العقار الموقع غرف النوم ... مربعالقدم المربع تاريخ العرض السعر بالقدم المربع\n0 101 نيويورك 101 3... 1800 2023-05-15 416.666667\n1 102 سان فرانسيسكو 2... 1400 2023-06-01 607.142857\n2 103 لوس أنجلوس 4... 2500 2023-04-10 صافي\n3 104 شيكاغو 3.... 1700 NaN 382.352941 382.352941\n4 105 ميامي 5.... 3500 2023-03-22 34 2.857143\n5 106 هيوستن 4... 2000 2023-07-01 225.000000\n"," مثال آخر يمكن أن يكون تحويل أسماء المواقع على الأحرف الكبيرة; ","# تطبيق تحويل لكتابة جميع أسماء المواقع بأحرف كبيرة\ndf['Location] = df['Location].apply(lambda x: x.top()))\nطباعة(df)\n","إليك كيف يبدو ذلك:"," معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ القائمة\n0 101 نيويورك 101 3... 750000.0 1800 2023-05-15\n1 102 سان فرانسيسكو 2.... 850000.0 1400 2023-06-01\n2 103 لوس أنجلوس 4.... لا 2500 2500 2023-04-10\n3 104 شيكاغو 3.... 650000.0 650000. 0 1700 NaN\n4 105 ميامي 5.... 1200000.0 3500 2023-03-22\n5 106 هيوستن 4.... 450000.0 2000 2023-07-01","الخاتمة"," استكشفنا في هذا الدليل 10 دوال أساسية في بانداس لتحليل البيانات، بدءًا من تحميل البيانات وفحصها باستخدام "," لتنظيفه وتحويله باستخدام طرق مثل ","و ",". تشكل هذه الوظائف أساس أي سير عمل لتحليل البيانات، مما يمكّنك من تنظيف مجموعات البيانات ومعالجتها وتلخيصها بفعالية. سيؤهلك إتقانها للتعامل مع تحديات البيانات في العالم الحقيقي بثقة. ابدأ التدريب اليوم، واستكشف كيف يمكن لهذه الأدوات تبسيط مهام التحليل الخاصة بك! ","بواسطة: ProxyScrape","اكتب للبحث هنا...","أحدث المنشورات","Web Scraping with Puppeteer and Proxies: A Beginner’s Guide","How to Save Scraped Data in Google Sheets","How to Handle Pagination in Web Scraping using Python","Exporting Web Scraped Data to CSV, JSON, and Databases ","مقدمة في تحليل الويب في بايثون مع بارسل","الضوء proxyscrape شعار","https://proxyscrape.com/static/light_text_logo.svg","هل تبحث عن مساعدة مع وكلائنا أو
تريد المساعدة؟ إليك خياراتك:","كرانش بيس","نبذة عنا","شكراً للجميع على الدعم الرائع!","روابط سريعة","برنامج الانتساب","بريميوم","ProxyScrape تجربة متميزة","مدقق الوكلاء عبر الإنترنت","أنواع الوكلاء","الدول الوكيلة","حالات استخدام الوكيل","مهم","سياسة ملفات تعريف الارتباط","إخلاء المسؤولية","سياسة الخصوصية","الشروط والأحكام","وسائل التواصل الاجتماعي","فيسبوك","لينكد إن","تويتر","كورا","برقية","الخلاف","\n © جميع الحقوق محفوظة © 2025 - ثيب بي في | بروغسترات 18 | 2812 ميكلين | بلجيكا | ضريبة القيمة المضافة BE 0749 716 760\n"]}
Pandas هي المكتبة المفضلة لمحللي البيانات ومبرمجي Python الذين يغامرون في عالم معالجة البيانات وتحليلها. فببناء جملها البديهي وبُنى بياناتها القوية تجعل التعامل مع مجموعات البيانات الضخمة ليس فقط سهل الإدارة بل وفعّال أيضًا. سواء كنت تقوم باستيراد ملفات CSV، أو تنظيف مجموعات البيانات الفوضوية، أو تحليل اتجاهات البيانات، فإن Pandas لديها الأدوات التي تحتاجها.
إذا كنت قد بدأت للتو رحلتك في تعلم البانداس، سيقدم لك هذا المنشور 10 وظائف وطرق أساسية يجب على كل مبتدئ إتقانها. ستساعدك هذه الدوال على تحميل البيانات وفحصها وتنظيفها وتحليلها بسهولة.
فيما يلي نظرة عامة سريعة على كل طريقة وما تقوم به:
read_csv()
: تحميل البيانات من ملف CSV إلى إطار بيانات Pandas DataFrame.الرأس()
: يعرض الصفوف القليلة الأولى من إطار البيانات.معلومات()
: يوفر ملخصًا موجزًا مختصرًا لإطار البيانات، بما في ذلك أنواع الأعمدة والقيم المفقودة.وصف()
: توليد إحصائيات وصفية للأعمدة الرقمية.لاغية()
: يحدد البيانات المفقودة في إطار البيانات.دروبنا()
: يزيل الصفوف أو الأعمدة ذات البيانات المفقودة.ملء()
: يستبدل البيانات المفقودة بقيم محددة.تجميع حسب()
: تجميع البيانات بناءً على عمود واحد أو أكثر وتطبيق الدوال المجمعة.فرز_القيم()
: فرز إطار البيانات حسب عمود واحد أو أكثر.تطبيق()
: يطبق الدوال المخصصة على صفوف أو أعمدة إطار البيانات. أولاً، تأكد من تثبيت Python على جهازك. إذا لم يكن كذلك، يمكنك تنزيله من هذا الرابط.
بمجرد إعداد Python، تأكد من تثبيت مكتبة Pandas. إذا لم تكن مثبتة، يمكنك إضافتها بسهولة باستخدام الأمر التالي:
تثبيت الباندا
سوف نستخدم مجموعة البيانات الوهمية العقارية التالية في الأمثلة التي سنضربها:
معرّف العقار | الموقع | غرف النوم | الحمامات | السعر | سكويرفوتاج | تاريخ الإدراج |
101 | نيويورك | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | سان فرانسيسكو | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | لوس أنجلوس | 4 | 3 | 2500 | 2023-04-10 | |
104 | شيكاغو | 3 | 2 | 650000 | 1700 | |
105 | ميامي | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | هيوستن | 4 | 3 | 450000 | 2000 | 2023-07-01 |
الخطوة الأولى في استخدام الباندا هي تحميل بياناتك لإعدادها للمعالجة أو التحليل. إحدى الطرق الأكثر شيوعًا لاستيراد البيانات إلى إطار بيانات بانداس هي الدالة read_csv().
استيراد بانداس ك pd
# تحميل مجموعة البيانات في إطار بيانات Pandas DataFrame
file_path = "real_estate_listings.csv" # استبدل بمسار ملفك الفعلي
# قم بإنشاء إطار البيانات
df = pd.read_csv(file_path)
أولاً، نبدأ باستيراد مكتبة بانداس. باستخدام كـ pd
هو اصطلاح شائع بين المطورين لتبسيط الشيفرة البرمجية. على سبيل المثال، بدلًا من كتابة pandas.read_csv()
يمكننا ببساطة استخدام pd.read_csv()
مما يجعل الكود أكثر إيجازًا وأسهل في القراءة.
بعد ذلك، حدد المسار إلى ملف CSV الذي تريد تحميله إلى Pandas DataFrame. بعد ذلك، قم بإنشاء متغير واستخدم read_csv
لتحميل الملف إلى إطار البيانات.
دعونا الآن نستكشف بعض المعلمات المهمة التي تتبع هذه الطريقة:
المحدِّد:
حدد المحدد المستخدم في ملف CSV (على سبيل المثال ،،، ؛، \t).df = pd.read_csv(file_path, delimiter=',')
الفهرس_كول
: في جدولنا، يتم تحديد كل قائمة عقار من خلال معرف موجود في "معرّف العقار". لضمان استخدام بانداس لهذا العمود كمعرف فريد لكل خاصية، يمكننا تعيينه صراحةً كعمود المعرف. خلاف ذلك، سيقوم بانداس تلقائيًا بإنشاء وتعيين قيم المعرف الخاص به لكل قائمة.df = pd.read_csv(file_path, index_col='PropertyID')
أوسيكولز
: إذا كان ملف CSV الخاص بك يحتوي على العديد من الأعمدة ولكنك تحتاج فقط إلى عدد قليل محدد، فإن بانداس يتيح لك تحقيق ذلك بسهولة باستخدام معلمة محددة.df = pd.read_csv(file_path, usecols=['Location', 'Price', 'Bedrooms'])
الآن بعد أن تم تحميل البيانات في DataFrame، يمكننا البدء في استكشافها. للقيام بذلك، توفر بانداس طريقتين مفيدتين للغاية: الرأس()
و الذيل()
. هذه الطرق ضرورية لفحص الصفوف الأولى أو الأخيرة من مجموعة بياناتك بسرعة.
# عرض أول 5 صفوف
طباعة(df.head())
# عرض آخر 3 صفوف
طباعة(df.tail(3))
ناتج الرأس()
:
معرّف العقار | الموقع | غرف النوم | الحمامات | السعر | سكويرفوتاج | تاريخ الإدراج |
101 | نيويورك | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | سان فرانسيسكو | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | لوس أنجلوس | 4 | 3 | 2500 | 2023-04-10 | |
104 | شيكاغو | 3 | 2 | 650000 | 1700 | |
105 | ميامي | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
ناتج الذيل()
:
معرّف العقار | الموقع | غرف النوم | الحمامات | السعر | سكويرفوتاج | تاريخ الإدراج |
104 | شيكاغو | 3 | 2 | 650000 | 1700 | |
105 | ميامي | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | هيوستن | 4 | 3 | 450000 | 2000 | 2023-07-01 |
توفر الدالة info() ملخصًا موجزًا لإطار البيانات. وتتضمن تفاصيل مثل:
هذه الطريقة مفيدة لفهم بنية مجموعة بياناتك بسرعة واكتشاف المشكلات مثل القيم المفقودة أو أنواع البيانات غير الصحيحة.
# احصل على ملخص موجز لإطار البيانات
طباعة(df.info())
ينتج عن الكود أعلاه المخرجات التالية:
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 6 entries, 0 to 5
Data columns (total 7 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 PropertyID 6 non-null int64
1 Location 6 non-null object
2 Bedrooms 6 non-null int64
3 Bathrooms 6 non-null int64
4 Price 5 non-null float64
5 SquareFootage 6 non-null int64
6 ListingDate 5 non-null object
dtypes: float64(1), int64(4), object(2)
memory usage: 464.0+ bytes
إن وصف() طريقة تعطي ملخصًا سريعًا للمقاييس الإحصائية الرئيسية مثل المتوسط, الانحراف المعياري, النسب المئويةوأكثر من ذلك. افتراضياً وصف()
يعمل مع البيانات الرقمية، ولكن يمكنه أيضًا التعامل مع البيانات الفئوية، مما يوفر رؤى مصممة خصيصًا بناءً على نوع البيانات.
النسب المئوية
: قائمة من الأرقام بين 0 و1، تحدد النسب المئوية التي سيتم إرجاعها. الإعداد الافتراضي هو لا شيء، والذي يُرجع النسب المئوية 25 و50 و75. قراءة المزيد هنا.تشمل
: قائمة بأنواع البيانات المراد تضمينها في الملخص. يمكنك تحديد أنواع البيانات مثل int، أو float، أو كائن (للسلاسل)، إلخ. الافتراضي هو بلا، مما يعني تضمين جميع الأنواع الرقمية.استبعاد
: قائمة بأنواع البيانات المراد استبعادها من الملخص. هذه المعلمة هي أيضًا لا يوجد
افتراضيًا، مما يعني عدم استبعاد أي أنواع.طباعة(df.describe()))
يكون ناتج الكود كما يلي:
معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ الإدراج
العدد 6.000000 6 6.000000 6.000000... 5.000000e+00 6.000000 5
فريد NaN 6 NaN ... NaN NaN NaN 5
أعلى NaN نيويورك NaN NaN .... NaN NaN NaN 2023-05-15
فريك NaN 1 NaN ... NaN ... NaN NaN NaN 1
المتوسط 103.500000 NaN 3.500000... 7.800000 ه+05 2150.000000 NaN
المتوسط القياسي 1.870829 NaN 1.048809... 2.774887e+05 755.645419 NaN
الحد الأدنى 101.000000 NaN 2.000000... 4.500000e+05 4.500000e+05 1400.000000 NaN
25٪ 102.250000 NaN 3.000000... 6.500000e+05 6.500000e+05 1725.000000 NaN
50٪ 103.500000 NaN 3.500000... 7.500000e+05 7.500000e+05 1900.000000 NaN
75% 104.750000 104.750000 NaN 4.000000... 8.500000e+05 8.500000e+05 2375.000000 NaN
بحد أقصى 106.000000.000000 NaN 5.000000... 1.200000000e+06 3500.000000 NaN
العدد = 6
لـ غرف النوم، مما يشير إلى أن جميع الصفوف تحتوي على بيانات صحيحة.المتوسط = 3.5
لـ غرف النوم، مما يشير إلى متوسط 3.5 غرف نوم لكل عقار.std = 1.048809
لـ غرف النوممما يعني وجود تباين معتدل في عدد غرف النوم.الحد الأدنى = 2
و الحد الأقصى = 5
لـ غرف النوم.25%
: القيمة التي تقع تحتها 25% من البيانات (الربع الأول).50%
: القيمة الوسيطة75%
: القيمة التي تقع تحتها 75% من البيانات (الربع الثالث). إن لاغية() في تحديد البيانات المفقودة في إطار البيانات. تقوم بإرجاع إطار بيانات بنفس شكل الإطار الأصلي، مع صحيح
حيث البيانات مفقودة نانو
و خطأ
خلاف ذلك. يُستخدم عادةً مع دوال أخرى مثل المجموع()
لحساب القيم المفقودة عبر الأعمدة أو الصفوف.
# تحديد القيمالمفقودة
طباعة (df.isull())
# عد القيم المفقودة لكل عمود
طباعة(df.isnull().sum())
df.isull()
المخرجات:
معرّف العقار الموقع غرف النوم الحمامات السعر المساحة المربعة تاريخ الإدراج
0 كاذب كاذب كاذب كاذب خطأ خطأ خطأ
1 كاذب خطأ خطأ خطأ خطأ خطأ خطأ
2 كاذب خطأ خطأ خطأ خطأ خطأ خطأ
3 خطأ خطأ خطأ خطأ خطأ خطأ صواب
4 خطأ خطأ خطأ خطأ خطأ خطأ كاذب
5 كاذب كاذب كاذب كاذب خطأ خطأ خطأ
df.isull().sum()
المخرجات:
معرف الملكية 0
الموقع 0
غرف النوم 0
الحمامات 0
السعر 1
قدم مربع 0
تاريخ الإدراج 1
النوع د: int64
إن دروبنا() تحذف الدالة الصفوف أو الأعمدة ببيانات مفقودة نانو
من إطار البيانات. بشكل افتراضي، يزيل الصفوف التي تحتوي على أي قيم مفقودة. يمكنك تخصيص سلوكه لإزالة الأعمدة فقط، أو لإسقاط الصفوف/الأعمدة التي تكون فيها جميع القيم المفقودة أو مجموعة فرعية محددة من القيم مفقودة
# إسقاط الصفوف التي تحتوي على أي قيم مفقودة
df_dropped_rows = df.dropna()
طباعة(df_dropped_rows)
# إسقاط الأعمدة التي تحتوي على أي قيم مفقودة
df_dropped_columns = df.dropna(axis=1)
طباعة(df_dropped_columns)
هذا هو الشكل الذي يبدو عليه إطار البيانات بعد إزالة كل الصفوف تحتوي على نانو
القيم:
معرّف العقار | الموقع | غرف النوم | الحمامات | السعر | سكويرفوتاج | تاريخ الإدراج |
101 | نيويورك | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | سان فرانسيسكو | 2 | 1 | 850000 | 1400 | 2023-06-01 |
105 | ميامي | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | هيوستن | 4 | 3 | 450000 | 2000 | 2023-07-01 |
إليك إطار البيانات مع الأعمدة تحتوي على نانو
قيم تمت إزالتها.
معرّف العقار | الموقع | غرف النوم | الحمامات | سكويرفوتاج |
101 | نيويورك | 3 | 2 | 1800 |
102 | سان فرانسيسكو | 2 | 1 | 1400 |
103 | لوس أنجلوس | 4 | 3 | 2500 |
104 | شيكاغو | 3 | 2 | 1700 |
105 | ميامي | 5 | 4 | 3500 |
106 | هيوستن | 4 | 3 | 2000 |
إن ملء() تحل الدالة محل البيانات المفقودة نانو
بقيم محددة. الباندا دروبنا()
بكفاءة التعامل مع القيم الفارغة وإزالتها من إطار البيانات، بينما يعالج أسلوب ملء()
حلاً مرنًا لاستبدال نانو
بقيمة محددة من اختيارك. تقدم هذه الطريقة طريقة مرنة لإدارة البيانات المفقودة من خلال تمكينك من ملء الفجوات باستخدام قيمة ثابتة، وهي المتوسط, المتوسط, الوضعأو إحصائيات محسوبة أخرى.
# املأ القيم الناقصة في عمود "السعر" بمتوسط السعر df['Price] =
df['Price'].fillna(df['Price'].mean())
طباعة(df)
يوضِّح ناتج الكود أن نانو
تم استبدال القيمة بنجاح بمتوسط السعر.
معرّف العقار | الموقع | غرف النوم | الحمامات | السعر | سكويرفوتاج | تاريخ الإدراج |
101 | نيويورك | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | سان فرانسيسكو | 2 | 1 | 850000 | 1400 | 2023-06-01 |
103 | لوس أنجلوس | 4 | 3 | 780000 | 2500 | 2023-04-10 |
104 | شيكاغو | 3 | 2 | 650000 | 1700 | نانو |
105 | ميامي | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | هيوستن | 4 | 3 | 450000 | 2000 | 2023-07-01 |
إن تاريخ الإدراج يحتوي العمود أيضًا على نانو
القيمة. بدلًا من إجراء عملية حسابية، يمكننا ببساطة استخدام عنصر نائب مثل "غير معروف. إليك كيفية القيام بذلك;
# ملء القيم المفقودة في عمود "تاريخ الإدراج" بعنصر نائب
df['ListingDate] = df['ListingDate].fillna('غير معروف')
طباعة(df)
يبدو إطار البيانات الآن كما يلي:
معرّف العقار | الموقع | غرف النوم | الحمامات | السعر | سكويرفوتاج | تاريخ الإدراج |
101 | نيويورك | 3 | 2 | 750000 | 1800 | 2023-05-15 |
102 | سان فرانسيسكو | 2 | 1 | نانو | 1400 | 2023-06-01 |
103 | لوس أنجلوس | 4 | 3 | 780000 | 2500 | 2023-04-10 |
104 | شيكاغو | 3 | 2 | 650000 | 1700 | غير معروف |
105 | ميامي | 5 | 4 | 1200000 | 3500 | 2023-03-22 |
106 | هيوستن | 4 | 3 | 450000 | 2000 | 2023-07-01 |
تعد الدالة groupby() في Pandas أداة متعددة الاستخدامات وقوية لتقسيم إطار البيانات إلى مجموعات بناءً على عمود واحد أو أكثر، مما يتيح تحليل البيانات وتجميعها بكفاءة.
تعمل الدالة على مبدأ التقسيم والتطبيق والجمع:
أولاً، يتم تقسيم البيانات إلى مجموعات؛
بعد ذلك، يتم تطبيق دالة محددة على كل مجموعة؛
أخيرًا، يتم دمج النتائج في إطار بيانات جديد.
يبسط هذا النهج المبسط مهام معالجة البيانات المعقدة ويعزز الكفاءة التحليلية.
على سبيل المثال، يمكنك حساب متوسط أسعار العقارات حسب الموقع أو حساب عدد العقارات المعروضة في كل فئة من فئات غرف النوم.
# التجميع حسب 'الموقع' وحساب متوسط السعر
avg_price_price_by_location = df.groupby('Location)['Price].average()
طباعة(avg_price_price_by_location)
# التجميع حسب "غرف النوم" وحساب إجمالي المساحة المربعة
إجمالي_قدم_مربع_بحسب_غرف_النوم = df.groupby('Bedrooms)['Bedrooms']['SquareFootage].sum()
طباعة(total_sqft_sqft_by_bedrooms)
# التجميع حسب أعمدة متعددة وحساب العدد
Count_by_location_bedrooms = df.groupby(['Location', 'Bedrooms']).size()
طباعة(Count_by_location_bedrooms)
متوسط السعر حسب الموقع:
الموقع
شيكاغو 650000.0
هيوستن 450000.0
لوس أنجلوس ناين
ميامي 1200000.0
نيويورك 750000.0
سان فرانسيسكو 850000.0
الاسم: السعر، النوع د: float64
إجمالي المساحة المربعة حسب غرف النوم:
غرف النوم
2 1400
3 3500
4 4500
5 3500
العد حسب الموقع وغرف النوم:
الموقع غرف النوم
شيكاغو 3 1 3
هيوستن 4 1
لوس أنجلوس 4 1
ميامي 5 1
نيويورك 3 1 3
سان فرانسيسكو 2 1
النوع د: int64
تُستخدم الدالة sort_values() لفرز إطار البيانات الخاص بك حسب عمود واحد أو أكثر، إما بترتيب تصاعدي أو تنازلي. يعد الفرز ضروريًا لترتيب البيانات، أو تحديد الحدود القصوى (على سبيل المثال، العقارات الأعلى سعرًا)، أو ببساطة تنظيم مجموعة البيانات لتحسين سهولة قراءتها، يمكنك الفرز بناءً على أعمدة رقمية أو فئوية أو أعمدة التاريخ والوقت.
# الفرز حسب 'السعر' بترتيب تنازلي
df_sorted_بحسب_السعر = df.sort_values(by='Price'، تصاعدي=خطأ)
طباعة(df_sorted_by_price)
# الفرز حسب 'الموقع' بترتيب تصاعدي
df_sorted_by_location = df.sort_values(by='Location')
طباعة(df_sorted_by_location)
# الفرز حسب عدة أعمدة: أولاً حسب "غرف النوم" (تصاعديًا) ثم حسب "السعر" (تنازليًا)
df_sorted_by_bedrooms_price = df.sort_values(by=['Bedrooms', 'Price'], تصاعدي=[صواب، خطأ])
طباعة(df_sorted_by_bedrooms_price)
الترتيب حسب السعر (تنازلياً):
معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ القائمة
4 105 105 ميامي 5... 1200000.0 3500 2023-03-22
1 102 سان فرانسيسكو 2... 850000.0 1400 2023-06-01
0 101 نيويورك 3.... 750000.0 1800 2023-05-15
3 104 شيكاغو 3.... 650000.0 650000. 0 1700 NaN
5 106 هيوستن 4.... 450000.0 2000 2023-07-01
2 103 لوس أنجلوس 4.... لا شيء 2500 2023-04-10
فرز حسب الموقع (تصاعدي):
[6 صفوف × 7 أعمدة]
معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ الإدراج
3 104 104 شيكاغو 3 .. . 650000.0 650000.0 1700 NaN
5 106 هيوستن 4 .. .. 450000.0 2000 2023-07-01
2 103 لوس أنجلوس 4 .. .. لا شيء 2500 2023-04-10
4 105 ميامي 5 . ... 1200000.0 3500 2023-03-22
0 101 نيويورك 3 .. .. 750000.0 1800 2023-05-15
1 102 سان فرانسيسكو 2 .. .. 850000.0 1400 2023-06-01
فرز حسب غرف النوم (تصاعدي) والسعر (تنازلي):
معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ القائمة
1 102 سان فرانسيسكو 2... 850000.0 1400 2023-06-01
0 101 نيويورك 3.... 750000.0 1800 2023-05-15
3 104 شيكاغو 3.... 650000.0 650000. 0 1700 NaN
5 106 هيوستن 4.... 450000.0 2000 2023-07-01
2 103 لوس أنجلوس 4.... لا شيء 2500 2023-04-10
4 105 ميامي 5.... 1200000.0 3500 2023-03-22
تسمح لك الدالة apply() بتطبيق الدوال المخصصة على الصفوف أو الأعمدة في DataFrame. إنها طريقة قوية لتنفيذ التحويلات أو العمليات الحسابية أو العمليات الشرطية التي تتجاوز دوال بانداس المدمجة.
دعنا نضرب مثالاً حيث نهدف إلى إنشاء عمود جديد لحساب سعر القدم المربع.
# تعريف دالة مخصصة لحساب السعر لكل قدم مربع
def price_per_sqft(السعر، قدم مربع):
إرجاع السعر/القدم المربع إذا كان القدم المربع != 0 وإلا 0
# قم بتطبيق الدالة المخصصة لإنشاء عمود جديد
df['PricePerPerSqFt'] = df.apply(lambda row: price_per_sqft(row['Price'], row['SquareFootage'])، المحور=1)
طباعة (df)
إليك مخرجات الكود أعلاه:
معرّف العقار الموقع غرف النوم ... مربعالقدم المربع تاريخ العرض السعر بالقدم المربع
0 101 نيويورك 101 3... 1800 2023-05-15 416.666667
1 102 سان فرانسيسكو 2... 1400 2023-06-01 607.142857
2 103 لوس أنجلوس 4... 2500 2023-04-10 صافي
3 104 شيكاغو 3.... 1700 NaN 382.352941 382.352941
4 105 ميامي 5.... 3500 2023-03-22 34 2.857143
5 106 هيوستن 4... 2000 2023-07-01 225.000000
مثال آخر يمكن أن يكون تحويل أسماء المواقع على الأحرف الكبيرة;
# تطبيق تحويل لكتابة جميع أسماء المواقع بأحرف كبيرة
df['Location] = df['Location].apply(lambda x: x.top()))
طباعة(df)
إليك كيف يبدو ذلك:
معرّف العقار الموقع غرف النوم ... السعر مربعالقدم المربع تاريخ القائمة
0 101 نيويورك 101 3... 750000.0 1800 2023-05-15
1 102 سان فرانسيسكو 2.... 850000.0 1400 2023-06-01
2 103 لوس أنجلوس 4.... لا 2500 2500 2023-04-10
3 104 شيكاغو 3.... 650000.0 650000. 0 1700 NaN
4 105 ميامي 5.... 1200000.0 3500 2023-03-22
5 106 هيوستن 4.... 450000.0 2000 2023-07-01
استكشفنا في هذا الدليل 10 دوال أساسية في بانداس لتحليل البيانات، بدءًا من تحميل البيانات وفحصها باستخدام
و read_csv()
لتنظيفه وتحويله باستخدام طرق مثل معلومات()
, لاغية()
و ملء()
. تشكل هذه الوظائف أساس أي سير عمل لتحليل البيانات، مما يمكّنك من تنظيف مجموعات البيانات ومعالجتها وتلخيصها بفعالية. سيؤهلك إتقانها للتعامل مع تحديات البيانات في العالم الحقيقي بثقة. ابدأ التدريب اليوم، واستكشف كيف يمكن لهذه الأدوات تبسيط مهام التحليل الخاصة بك! تطبيق()