با استفاده از کلاس 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) برای برگشت نوک فایل استفاده کنید.
1 پاسخ
جدید ترین قدیمی ترین بالاترین امتیاز پاسخ های من
در حال بارگیری...
برای ارسال پاسخ باید با حساب کاربری وارد شوید.
ورود به حساب کاربری
برای شبیهسازی فایل 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 میتواند مفید باشد.
گزارش