از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
روش تبدیل موثر انواع داده ها در پانداها
سرفصلهای مطلب
معرفی
دستکاری کارآمد داده ها یک مهارت حیاتی برای هر دانشمند یا تحلیلگر داده است. در میان بسیاری از ابزارهای موجود، کتابخانه پانداها در پایتون به دلیل تطبیق پذیری و قدرت آن متمایز است. با این حال، یکی از جنبههای دستکاری داده که اغلب نادیده گرفته میشود، تبدیل نوع داده است – عمل تغییر نوع داده سری داده یا DataFrame.
تبدیل نوع داده در پانداها فقط در مورد تبدیل داده ها از یک فرمت به فرمت دیگر نیست. همچنین در مورد افزایش کارایی محاسباتی، صرفه جویی در حافظه و اطمینان از همسویی داده های شما با الزامات عملیات خاص است. خواه تبدیل یک رشته به تاریخ زمان یا تبدیل یک شی به یک متغیر طبقهبندی شده باشد، تبدیل نوع کارآمد میتواند به کد پاکتر و زمانهای محاسباتی سریعتر منجر شود.
در این مقاله، تکنیکهای مختلف تبدیل انواع دادهها در پانداها را بررسی میکنیم و به شما کمک میکند پتانسیلهای بیشتر قابلیتهای دستکاری دادههای خود را باز کنید. ما برخی از عملکردها و تکنیک های کلیدی را در پانداها برای تبدیل موثر نوع داده کشف خواهیم کرد، از جمله
astype()
،to_numeric()
،to_datetime()
،apply()
، وapplymap()
. ما همچنین بهترین شیوههای حیاتی را که باید در حین انجام این تبدیلها در نظر داشته باشیم، برجسته خواهیم کرد.
تسلط بر astype() عملکرد در پانداها
این astype()
function در Pandas یکی از ساده ترین و در عین حال قدرتمندترین ابزارها برای تبدیل نوع داده است. این به ما امکان می دهد نوع داده یک ستون یا حتی چندین ستون را در یک DataFrame تغییر دهیم.
تصور کنید یک DataFrame دارید که در آن ستونی از اعداد به عنوان رشته خوانده شده است (نوع داده شی). این یک سناریوی کاملا رایج است، به خصوص هنگام وارد کردن داده ها از منابع مختلف مانند فایل های CSV. شما می توانید استفاده کنید astype()
تابع تبدیل این ستون از شی به عددی.
توجه داشته باشید: قبل از اقدام به هر گونه تبدیل، همیشه باید داده های خود را کاوش کنید و وضعیت فعلی آن را درک کنید. استفاده کنید info()
و dtypes
برای درک انواع داده های فعلی DataFrame خود را مشخص کنید.
فرض کنید یک DataFrame به نام داریم df
با یک ستون age
که در حال حاضر به عنوان رشته (شیء) ذخیره می شود. بیایید نگاهی به روش تبدیل آن به اعداد صحیح بیندازیم:
df('age') = df('age').astype('int')
با یک خط کد، نوع داده کل را تغییر داده ایم age
ستون به اعداد صحیح
اما اگر داشته باشیم چندین ستون که نیاز به تبدیل دارند? این astype()
تابع نیز می تواند آن را اداره کند. فرض کنید دو ستون داریم، age
و income
، هر دو به عنوان رشته ذخیره می شوند. می توانیم آنها را به ترتیب به عدد صحیح و شناور تبدیل کنیم:
df(('age', 'income')) = df(('age', 'income')).astype({'age': 'int', 'income': 'float'})
در اینجا، ما یک فرهنگ لغت در اختیار شما قرار می دهیم astype()
تابع، که در آن کلیدها نام ستون ها و مقادیر انواع داده های جدید هستند.
این astype()
عملکرد در پانداها واقعاً همه کاره است. با این حال، مهم است که اطمینان حاصل کنید که تبدیلی که میخواهید انجام دهید معتبر است. به عنوان مثال، اگر age
ستون شامل هر کاراکتر غیر عددی است، تبدیل به اعداد صحیح با شکست مواجه می شود. در چنین مواردی، ممکن است نیاز به استفاده از توابع تبدیل تخصصی تری داشته باشید که در قسمت بعدی به آن خواهیم پرداخت.
توابع تبدیل پانداها – to_numeric() و to_datetime()
فراتر از ژنرال astype()
تابع، Pandas همچنین توابع تخصصی برای تبدیل انواع داده ها را فراهم می کند – to_numeric()
و to_datetime()
. این توابع با پارامترهای اضافی ارائه می شوند کنترل بیشتر در هنگام تبدیل، به خصوص زمانی که با داده های بد قالب سروکار دارید.
توجه داشته باشید: انواع داده ها را به مناسب ترین نوع برای مورد استفاده خود تبدیل کنید. به عنوان مثال، اگر دادههای عددی شما حاوی مقادیر اعشاری نباشد، ذخیره آن بهعنوان اعداد صحیح به جای شناور از نظر حافظه کارآمدتر است.
to_numeric()
این to_numeric()
عملکرد طراحی شده است تا تبدیل داده های عددی ذخیره شده به عنوان رشته ها به انواع داده های عددی. یکی از ویژگی های کلیدی آن است errors
پارامتری که به شما امکان می دهد مقادیر غیر عددی را به شیوه ای قوی مدیریت کنید.
به عنوان مثال، اگر می خواهید یک ستون رشته را به یک شناور تبدیل کنید اما حاوی مقادیر غیر عددی است، می توانید از آن استفاده کنید. to_numeric()
با errors='coerce'
بحث و جدل. این همه مقادیر غیر عددی را به NaN
:
df('column_name') = pd.to_numeric(df('column_name'), errors='coerce')
to_datetime()
هنگام برخورد با تاریخ و زمان، to_datetime()
عملکرد نجات دهنده است. این می تواند طیف گسترده ای از قالب های تاریخ را به یک قالب استاندارد تاریخ تاریخ تبدیل کند که می تواند برای دستکاری یا تجزیه و تحلیل بیشتر تاریخ و زمان استفاده شود.
df('date_column') = pd.to_datetime(df('date_column'))
این to_datetime()
عملکرد بسیار قدرتمند است و می تواند بسیاری از فرمت های تاریخ و زمان را مدیریت کند. با این حال، اگر دادههای شما در قالب غیرعادی هستند، ممکن است لازم باشد یک رشته قالب را مشخص کنید.
df('date_column') = pd.to_datetime(df('date_column'), format='%d-%m-%Y')
اکنون که درک درستی از این توابع تبدیل تخصصی داریم، میتوانیم در مورد کارایی تبدیل انواع دادهها به «دسته» با استفاده از astype()
.
افزایش کارایی با دسته بندی نوع داده
این category
نوع داده در Pandas اینجاست تا به ما کمک کند با دادههای متنی که در دستههای محدودی قرار میگیرند مقابله کنیم. یک متغیر طبقهبندی معمولاً تعداد محدود و معمولاً ثابتی از مقادیر ممکن را میگیرد. به عنوان مثال می توان به جنسیت، طبقه اجتماعی، گروه خونی، وابستگی به کشور، زمان مشاهده و غیره اشاره کرد روی.
وقتی یک متغیر رشته ای دارید که فقط چند مقدار متفاوت می گیرد، تبدیل آن به یک متغیر دسته بندی می تواند مقدار زیادی از حافظه را ذخیره کند. علاوه بر این، عملیاتی مانند مرتب سازی یا مقایسه می تواند باشد به طور قابل توجهی سریعتر با داده های طبقه بندی شده
در اینجا روش تبدیل ستون DataFrame به category
نوع داده:
df('column_name') = df('column_name').astype('category')
این دستور نوع داده را تغییر می دهد column_name
به category
. پس از تبدیل، داده ها دیگر به عنوان یک رشته ذخیره نمی شوند، بلکه به عنوان یک مرجع به یک آرایه داخلی از دسته ها ذخیره می شوند.
به عنوان مثال، اگر یک DataFrame دارید df
با یک ستون color
حاوی مقادیر Red
، Blue
، Green
، تبدیل آن به category
باعث صرفه جویی قابل توجهی در حافظه می شود، به خصوص برای مجموعه داده های بزرگتر. این اتفاق می افتد زیرا
توجه داشته باشید: این category
نوع داده برای متغیرهای اسمی ایده آل است – متغیرهایی که ترتیب مقادیر اهمیتی ندارد. با این حال، برای متغیرهای ترتیبی (در مواردی که ترتیب اهمیت دارد)، ممکن است بخواهید یک لیست مرتب شده از دسته ها را به CategoricalDtype
تابع.
در بخش بعدی، اعمال توابع تبدیل سفارشی در DataFrame خود را برای تبدیل های پیچیده تر با apply()
و applymap()
.
استفاده کردن درخواست دادن() و applicationmap() برای تبدیل نوع داده های پیچیده
هنگامی که با تبدیلهای پیچیده نوع داده سروکار دارید که نمیتوان مستقیماً توسط آنها کار کرد astype()
، to_numeric()
، یا to_datetime()
پانداها دو عملکرد را ارائه می دهند، apply()
و applymap()
، که می تواند بسیار موثر باشد. این توابع به شما اجازه می دهند یک تابع سفارشی را به DataFrame یا Series اعمال کنید، به شما امکان می دهد تا تبدیل داده های پیچیده تری را انجام دهید.
این درخواست دادن() تابع
این apply()
تابع می تواند استفاده شود روی یک DataFrame یا یک سری. هنگام استفاده روی یک DataFrame، تابعی را در امتداد یک محور اعمال می کند – ستون یا ردیف.
در اینجا یک مثال از استفاده است apply()
برای تبدیل ستونی از اعداد رشته ای به اعداد صحیح:
def convert_to_int(x):
return int(x)
df('column_name') = df('column_name').apply(convert_to_int)
در این مورد، convert_to_int()
تابع برای هر عنصر در اعمال می شود column_name
.
این applicationmap() تابع
در حالی که apply()
آثار روی یک ردیف یا ستون، applymap()
از نظر عناصر کار می کند روی کل DataFrame این بدان معنی است که تابعی که به آن پاس می دهید applymap()
به هر عنصر در DataFrame اعمال می شود:
def convert_to_int(x):
return int(x)
df = df.applymap(convert_to_int)
این convert_to_int()
تابع اعمال می شود هر عنصر در DataFrame
توجه داشته باشید: به خاطر داشته باشید که تبدیل های پیچیده می توانند از نظر محاسباتی گران باشند، بنابراین از این ابزارها با احتیاط استفاده کنید.
نتیجه
نوع داده مناسب برای داده های شما می تواند نقش مهمی در افزایش کارایی محاسباتی و اطمینان از صحت نتایج شما داشته باشد. در این مقاله، تکنیکهای اساسی تبدیل انواع داده در پانداها از جمله استفاده از astype()
، to_numeric()
، و to_datetime()
توابع، و به قدرت اعمال توابع سفارشی با استفاده از apply()
و applymap()
برای تحولات پیچیده تر
به یاد داشته باشید، کلید تبدیل کارآمد نوع داده، درک داده ها و الزامات تجزیه و تحلیل شما، و سپس به کارگیری مناسب ترین تکنیک تبدیل است. با به کارگیری موثر این تکنیک ها، می توانید از تمام قدرت پانداها برای انجام وظایف دستکاری داده های خود به نحو احسن استفاده کنید.
سفر تسلط بر دستکاری داده ها در پانداها به اینجا ختم نمی شود. این رشته وسیع و همیشه در حال تکامل است. اما با دانش اساسی در مورد تبدیل نوع داده که از طریق این مقاله به دست آورده اید، اکنون به خوبی برای مقابله با طیف وسیع تری از چالش های دستکاری داده ها مجهز شده اید. بنابراین، مانند همیشه، به کاوش و یادگیری ادامه دهید!
(برچسبها به ترجمه)# python
منتشر شده در 1402-12-30 19:30:03