با استفاده از کلاس StringIO محتوای یک فایل CSV فرضی را در حافظه بارگذاری کنید، مجموع هر ستون عددی را محاسبه کرده و نتایج را به صورت یک CSV جدید در حافظه ذخیره کنید.

2.0 بازدید آخرین ویرایش در 221 روز قبل ساعت 01:26

0.0

برای حل این مسأله می‌توانید از ماژول io و کلاس StringIO برای شبیه‌سازی فایل در حافظه استفاده کنید و برای پردازش داده‌ها از pandas (یا در صورت تمایل از ماژول csv برای راه‌حل خالص پایتون) بهره ببرید؛ ابتدا متن CSV را به StringIO بدهید و با pandas.read_csv آن را بخوانید، سپس با متد .sum() مجموع ستون‌های عددی را محاسبه کنید و نتایج را در یک DataFrame جدید قرار دهید و با استفاده از DataFrame.to_csv داخل یک StringIO بنویسید. نکات مفید: از getvalue() برای گرفتن رشته CSV خروجی استفاده کنید و در صورت بازخوانی دوباره StringIO از seek(0) برای برگشت نوک فایل استفاده کنید.

توسط پژوهشگر در 221 روز قبل ساعت 01:26
دسته بندی ها: Python Python for beginner
nima در 221 روز قبل ساعت 13:17

برای شبیه‌سازی فایل CSV در حافظه با StringIO، مطمئن شوید که ستون‌های غیر عددی را در حین جمع‌بندی نادیده می‌گیرید یا به اعداد مناسب تبدیل می‌کنید. بعد از خواندن با pandas.read_csv، با استفاده از df.select_dtypes(include=[np.number]).sum() می‌توانید فقط ستون‌های عددی را جمع کنید و نتیجه را در DataFrame جدیدی ذخیره کنید. سپس با df_out.to_csv(output_io, index=False) خروجی را در حافظه بنویسید و با output_io.getvalue() به رشته CSV دسترسی پیدا کنید؛ اگر دوباره از StringIO استفاده می‌کنید، به.seek(0) برگردانید تا دوباره بتوانید بخوانید. همچنین به وجود مقادیر گمشده توجه کنید؛ NAها می‌توانند بر جمع نهایی اثر بگذارند و استفاده از fillna یا dropna می‌تواند مفید باشد.

گزارش

1 پاسخ

جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من

در حال بارگیری...
ورود به حساب کاربری