15 مقتطفات من Python لتحسين خط أنابيب علوم البيانات

عقدة المصدر: 1055895

15 مقتطفات من Python لتحسين خط أنابيب علوم البيانات

حلول Python السريعة لمساعدة دورة علوم البيانات الخاصة بك.


By لوكاس سواريس، Machine Learning Engineer في K1 Digital



تصوير كارلوس موزا on Unsplash

لماذا المقتطفات مهمة لعلوم البيانات

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

في هذا المنشور ، سأشارك 15 مقتطفًا من التعليمات البرمجية للمساعدة في الجوانب المختلفة لخط أنابيب تحليل البيانات الخاص بك

1. تحميل ملفات متعددة باستخدام glob و list comprehension

 
 

import glob
import pandas as pd
csv_files = glob.glob("path/to/folder/with/csvs/*.csv")
dfs = [pd.read_csv(filename) for filename in csv_files]

2. الحصول على قيم فريدة من جدول العمود

 
 

import pandas as pd
df = pd.read_csv("path/to/csv/file.csv")
df["Item_Identifier"].unique()array(['FDA15', 'DRC01', 'FDN15', ..., 'NCF55', 'NCW30', 'NCW05'], dtype=object)

3. اعرض إطارات بيانات الباندا جنبًا إلى جنب

 
 

from IPython.display import display_html
from itertools import chain,cycledef display_side_by_side(*args,titles=cycle([''])): # source: https://stackoverflow.com/questions/38783027/jupyter-notebook-display-two-pandas-tables-side-by-side html_str='' for df,title in zip(args, chain(titles,cycle(['</br>'])) ): html_str+='<th style="text-align:center"><td style="vertical-align:top">' html_str+="<br>" html_str+=f'<h2>{title}</h2>' html_str+=df.to_html().replace('table','table style="display:inline"') html_str+='</td></th>' display_html(html_str,raw=True)
df1 = pd.read_csv("file.csv")
df2 = pd.read_csv("file2")
display_side_by_side(df1.head(),df2.head(), titles=['Sales','Advertising'])
### Output



الصورة من قبل المؤلف

 

4. إزالة جميع NaNs في إطار بيانات الباندا

 
 

df = pd.DataFrame(dict(a=[1,2,3,None]))
df
df.dropna(inplace=True)
df


بابوا نيو غينيا

5. إظهار عدد إدخالات NaN في أعمدة DataFrame

 
 

def findNaNCols(df): for col in df: print(f"Column: {col}") num_NaNs = df[col].isnull().sum() print(f"Number of NaNs: {num_NaNs}")
df = pd.DataFrame(dict(a=[1,2,3,None],b=[None,None,5,6]))
findNaNCols(df)# OutputColumn: a
Number of NaNs: 1
Column: b
Number of NaNs: 2

6. تحويل الأعمدة مع .apply ووظائف لامدا

 
 

df = pd.DataFrame(dict(a=[10,20,30,40,50]))
square = lambda x: x**2
df["a"]=df["a"].apply(square)
df


بابوا نيو غينيا

7. تحويل عمودين DataFrame إلى قاموس

 
 

df = pd.DataFrame(dict(a=["a","b","c"],b=[1,2,3]))
df_dictionary = dict(zip(df["a"],df["b"]))
df_dictionary{'a': 1, 'b': 2, 'c': 3}

8. رسم شبكة التوزيعات مع الشروط الشرطية على الأعمدة

 
 

import numpy as np
import matplotlib.pyplot as plt
import seaborn as sns
sns.set()
import pandas as pd df = pd.DataFrame(dict(a=np.random.randint(0,100,100),b=np.arange(0,100,1)))
plt.figure(figsize=(15,7))
plt.subplot(1,2,1)
df["b"][df["a"]>50].hist(color="green",label="bigger than 50")
plt.legend()
plt.subplot(1,2,2)
df["b"][df["a"]<50].hist(color="orange",label="smaller than 50")
plt.legend()
plt.show()


بابوا نيو غينيا
الصورة من قبل المؤلف

 

9. إجراء اختبارات t لقيم الأعمدة المختلفة في حيوانات الباندا

 
 

from scipy.stats import ttest_rel data = np.arange(0,1000,1)
data_plus_noise = np.arange(0,1000,1) + np.random.normal(0,1,1000)
df = pd.DataFrame(dict(data=data, data_plus_noise=data_plus_noise))
print(ttest_rel(df["data"],df["data_plus_noise"]))# Output
Ttest_relResult(statistic=-1.2717454718006775, pvalue=0.20375954602300195)

10. دمج إطارات البيانات في عمود معين

 
 

df1 = pd.DataFrame(dict(a=[1,2,3],b=[10,20,30],col_to_merge=["a","b","c"]))
df2 = pd.DataFrame(dict(d=[10,20,100],col_to_merge=["a","b","c"]))
df_merged = df1.merge(df2, on='col_to_merge')
df_merged


بابوا نيو غينيا

11. تطبيع القيم في عمود الباندا مع sklearn

 
 

from sklearn.preprocessing import MinMaxScaler
scaler = MinMaxScaler()
scores = scaler.fit_transform(df["a"].values.reshape(-1,1))

12. إسقاط NaNs في عمود معين في الباندا

 
 

df.dropna(subset=["col_to_remove_NaNs_from"],inplace=True)

13. اختيار مجموعة فرعية من إطار البيانات مع الشرطية و or بيان

 
 

df = pd.DataFrame(dict(result=["Pass","Fail","Pass","Fail","Distinction","Distinction"]))
pass_index = (df["result"]=="Pass") | (df["result"]=="Distinction")
df_pass = df[pass_index]
df_pass


بابوا نيو غينيا

14. الرسم البياني الأساسي الدائري

 
 

import matplotlib.pyplot as plt df = pd.DataFrame(dict(a=[10,20,50,10,10],b=["A","B","C","D","E"]))
labels = df["b"]
sizes = df["a"]
plt.pie(sizes, labels=labels, autopct='%1.1f%%', shadow=True, startangle=140)
plt.axis('equal')
plt.show()


بابوا نيو غينيا

15. تغيير سلسلة النسبة المئوية إلى قيمة عددية باستخدام .apply()

 
 

def change_to_numerical(x): try: x = int(x.strip("%")[:2]) except: x = int(x.strip("%")[:1]) return x df = pd.DataFrame(dict(a=["A","B","C"],col_with_percentage=["10%","70%","20%"]))
df["col_with_percentage"] = df["col_with_percentage"].apply(change_to_numerical)
df


بابوا نيو غينيا

وفي الختام

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

إذا أعجبك هذا المنشور تواصل معي على  تويترلينكدين: وتتبعني متوسط. شكرا ونراكم في المرة القادمة! 🙂

المزيد من المحتوى في عادي

 
السيرة الذاتية: لوكاس سواريس مهندس ذكاء اصطناعي يعمل على تطبيقات التعلم العميق لمجموعة واسعة من المشاكل.

أصلي. تم إعادة النشر بإذن.

هذا الموضوع ذو علاقة بـ:

المصدر: https://www.kdnuggets.com/2021/08/15-python-snippets-optimize-data-science-pipeline.html

الطابع الزمني:

اكثر من KD nuggets