سلام! من به عنوان تأمین کننده محصولات NAN ، من با یک تن از داده ها در Pandas DataFrames سروکار داشته ام ، و یک مسئله مزاحم که همیشه مطرح می شود ، این مقادیر "نان" است. می دانید ، آن دسته از خالی های کوچک که اگر مراقب نباشید می توانند تمام تحلیل شما را خراب کنند. در این وبلاگ ، من می خواهم نکاتی را در مورد چگونگی رسیدگی به این مقادیر "نان" مانند یک حرفه ای به اشتراک بگذارم.
اول از همه ، بیایید در مورد معنای "نان" صحبت کنیم. "نان" مخفف "نه یک شماره" است ، و اساساً روش پاندا است که می گوید داده های گمشده یا نامعتبر در DataFrame شما وجود دارد. این می تواند به دلایل مختلف اتفاق بیفتد - شاید داده ها به درستی جمع آوری نشده باشند ، یا خطایی در ورود داده ها رخ داده است. علت هرچه باشد ، ارزشهای "نان" می توانند آچار را در تجزیه و تحلیل داده های شما پرتاب کنند ، بنابراین مهم است که بدانید چگونه با آنها برخورد کنید.
یکی از ساده ترین راه ها برای رسیدگی به مقادیر "نان" فقط رها کردن آنها است. پانداس روشی واقعاً مفید داردقطره ()که می توانید برای خلاص شدن از هر ردیف یا ستون حاوی مقادیر "نان" استفاده کنید. در اینجا یک مثال آورده شده است:
واردات پاندا به عنوان pd واردات numpy به عنوان np # یک نمونه dataframe با داده های "nan" داده = {'col1': [1 ، 2 ، np.nan ، 4] ، 'col2': [5 ، np.nan ، 7 ، 8] ، 'col3': [9 ، 10 ، np.nan]} n 'np.nan]} df = pd.dataframe) df_dropped_rows = df.dropna () # ستون های قطره ای با مقادیر 'nan' df_dropped_cols = df.dropna (محور = 1)
در کد بالا ،قطره ()بدون هیچ استدلالی ، ردیف هایی را که حداقل یک مقدار "نان" داشته باشد ، رها می کند. اگر عبور کنیدمحور = 1به جای آن ستون ها را رها می کند. اگر داده های زیادی داشته باشید و مقادیر "نان" نسبتاً نادر است ، این روش عالی است ، اما در صورت وجود مقادیر "نان" زیادی نیز می تواند منجر به از بین رفتن قابل توجه داده ها شود.
گزینه دیگر پر کردن مقادیر "نان" با یک مقدار خاص است. پاندا روشی به نام داردپر کردن ()که می توانید برای انجام این کار استفاده کنید. می توانید مقادیر "نان" را با یک مقدار ثابت ، میانگین ، میانه یا حالت ستون یا حتی مقدار قبلی یا بعدی در ستون پر کنید. در اینجا چند نمونه آورده شده است:
# مقادیر 'nan' را با مقدار ثابت df_filled_constant = df.fillna (0) # پر کردن مقادیر 'nan' با میانگین ستون df_filled_mean = df.fillna (df.mean ()) # پر کردن مقادیر nan 'nan' با مقدار قبلی df_filled_prev = dflan = 'flan' ffilna ( df_filled_next = df.fillna (روش = 'bfill')
پر کردن مقادیر "نان" می تواند راهی مناسب برای حفظ داده های شما باشد ، اما باید مراقب باشید که برای پر کردن آنها از چه ارزشی استفاده می کنید. اگر داده ها به طور عادی توزیع شوند ، استفاده از میانگین یا میانه می تواند به خوبی کار کند ، اما اگر داده ها دارای تعداد زیادی از خارج باشند ، ممکن است مناسب نباشد.
اگر با داده های سری زمانی سر و کار دارید ، ممکن است بخواهید از درون یابی برای پر کردن مقادیر "نان" استفاده کنید. درون یابی روشی برای برآورد مقادیر بین نقاط داده شناخته شده است. پاندا روشی به نام دارددرون یابی ()که می توانید برای انجام این کار استفاده کنید. در اینجا یک مثال آورده شده است:
# مقادیر interpolate 'nan' df_interpolated = df.interpolate ()
درون یابی می تواند راهی عالی برای پر کردن مقادیر "نان" در داده های سری زمانی باشد زیرا روند داده ها را در نظر می گیرد. با این حال ، توجه به این نکته حائز اهمیت است که درون یابی فقط یک تخمین است و مقادیر واقعی می تواند متفاوت باشد.
حال ، بیایید در مورد برخی از تکنیک های پیشرفته تر برای رسیدگی به ارزش های "نان" صحبت کنیم. یک رویکرد استفاده از الگوریتم های یادگیری ماشین برای پیش بینی مقادیر گمشده است. شما می توانید یک مدل را بر روی داده های غیر دفع آموزش دهید و سپس از آن برای پیش بینی مقادیر "نان" استفاده کنید. این می تواند یک روش دقیق تر برای پر کردن مقادیر "نان" باشد ، اما به منابع و تخصص محاسباتی بیشتری نیز نیاز دارد.
رویکرد دیگر استفاده از چند ضلعی است. چند ضلعی یک تکنیک آماری است که شامل ایجاد چندین نسخه از DataFrame ، پر کردن مقادیر "نان" در هر نسخه با استفاده از یک روش متفاوت و سپس ترکیب نتایج است. این می تواند به کاهش تعصب و عدم اطمینان مرتبط با پر کردن مقادیر "نان" کمک کند.
در تجربه من به عنوان تأمین کننده NAN ، فهمیدم که ترکیبی از این تکنیک ها معمولاً بهترین کار را می کند. به عنوان مثال ، من ممکن است با رها کردن ردیف ها یا ستون ها با تعداد زیادی از مقادیر "نان" شروع کنم ، سپس مقادیر "نان" باقیمانده را با استفاده از ترکیبی از مقادیر ثابت ، میانگین و درون یابی پر کنم. و اگر به یک تخمین دقیق تر نیاز داشته باشم ، ممکن است از یادگیری ماشین یا تعدیل چندگانه استفاده کنم.
قبل از بسته بندی ، می خواهم به چند محصول اشاره کنم که ممکن است مورد توجه شما باشد. اگر در صنعت چاپ هستید ، ممکن است بخواهید بررسی کنیدجوهر تصعید رنگبشر این یک جوهر با کیفیت بالا است که برای چاپ انواع مختلف مواد مناسب است. و اگر در صنعت داروسازی هستید ، ممکن است به آن علاقه مند باشیدFlorfenicol Cas No: 73231-34-2وتاکسی تتراسیکلین هیدروکلراید HCl CAS شماره: 2058-46-0بشر اینها هر دو مواد اولیه دارویی API هستند که به طور گسترده در تولید آنتی بیوتیک ها مورد استفاده قرار می گیرند.
اگر به هر یک از محصولات NAN ما علاقه مند هستید یا در مورد رسیدگی به مقادیر "نان" در داده های خود سؤالی دارید ، از دستیابی به بحث تهیه دریغ نکنید. ما همیشه خوشحالیم که کمک می کنیم!


منابع:
- مک کینی ، دبلیو. (2012). پایتون برای تجزیه و تحلیل داده ها: درگیری داده ها با پاندا ، Numpy و Ipython. اویرلی مدیا.
- Vanderplas ، J. (2016). کتاب راهنمای علوم داده Python: ابزارهای اساسی برای کار با داده ها. اویرلی مدیا.
