وبلاگ رسانگار
با ما حرفه ای باشید

سرور مجازی NVMe

خواندن و نوشتن فایل‌های اکسل (XLSX) در پایتون با کتابخانه پاندا

0 525
زمان لازم برای مطالعه: 5 دقیقه


معرفی

درست مانند سایر انواع فایل ها، می توانید از کتابخانه Pandas برای خواندن و نوشتن فایل های اکسل با استفاده از پایتون نیز استفاده کنید. در این آموزش کوتاه قصد داریم به روش خواندن و نوشتن فایل های اکسل از طریق آن بپردازیم DataFrameس

علاوه بر خواندن و نوشتن ساده، روش نوشتن چندگانه را نیز یاد خواهیم گرفت DataFrameدر یک فایل اکسل، روش خواندن سطرها و ستون های خاص از یک صفحه گسترده، و روش نامگذاری برگه های منفرد و چندگانه در یک فایل قبل از انجام هر کاری.

اگر می‌خواهید درباره انواع فایل‌های دیگر بیشتر بدانید، ما شما را تحت پوشش قرار داده‌ایم:

خواندن و نوشتن فایل های اکسل در پایتون با پانداها

طبیعتا برای استفاده از پاندا ابتدا باید آن را نصب کنیم. ساده ترین روش برای نصب آن از طریق pip.

اگر از ویندوز استفاده می کنید:

$ python pip install pandas

اگر از لینوکس یا MacOS استفاده می کنید:

$ pip install pandas

توجه داشته باشید که ممکن است یک ModuleNotFoundError یا ImportError خطا هنگام اجرای کد در این مقاله. مثلا:

ModuleNotFoundError: No module named 'openpyxl'

اگر اینطور است، باید ماژول(های) گم شده را نصب کنید:

$ pip install openpyxl xlsxwriter xlrd

نوشتن فایل های اکسل با استفاده از پانداها

ما اطلاعاتی را که می خواهیم در یک فایل اکسل بنویسیم در یک ذخیره می کنیم DataFrame. با استفاده از داخلی to_excel() تابع، ما می توانیم این اطلاعات را در یک فایل اکسل استخراج کنیم.

اول، اجازه دهید import ماژول پاندا:

import pandas as pd

حال، بیایید از یک فرهنگ لغت برای پر کردن a استفاده کنیم DataFrame:

df = pd.DataFrame({'States':('California', 'Florida', 'Montana', 'Colorodo', 'Washington', 'Virginia'),
    'Capitals':('Sacramento', 'Tallahassee', 'Helena', 'Denver', 'Olympia', 'Richmond'),
    'Population':('508529', '193551', '32315', '619968', '52555', '227032')})

این کلیدها در فرهنگ لغت ما به عنوان نام ستون عمل می کند. به طور مشابه، ارزش های به ردیف های حاوی اطلاعات تبدیل شوند.

در حال حاضر، ما می توانیم استفاده کنید to_excel() تابع نوشتن محتویات در یک فایل. تنها آرگومان مسیر فایل است:

df.to_excel('./states.xlsx')

در اینجا فایل اکسل ایجاد شده است:

صفحه گسترده ایالت ها

لطفاً توجه داشته باشید که ما از هیچ پارامتری در مثال خود استفاده نمی کنیم. بنابراین، برگه داخل فایل نام پیش فرض خود را حفظ می کند – “ورق 1”. همانطور که می بینید، فایل اکسل ما یک ستون اضافی حاوی اعداد دارد. این اعداد شاخص های هر ردیف هستند که مستقیماً از پانداها می آیند DataFrame.

ما می توانیم نام برگه خود را با اضافه کردن تغییر دهیم sheet_name پارامتر به ما to_excel() زنگ زدن:

df.to_excel('./states.xlsx', sheet_name='States')

به طور مشابه، اضافه کردن index پارامتر و تنظیم آن بر روی False ستون ایندکس را از خروجی حذف می کند:

df.to_excel('./states.xlsx', sheet_name='States', index=False)

حالا فایل اکسل به شکل زیر است:

صفحه گسترده حالت ها بدون نمایه

نوشتن چندین دیتا فریم در یک فایل اکسل

امکان نوشتن هم هست چندگانه فریم های داده به یک فایل اکسل. اگر مایل هستید، می توانید برای هر دیتافریم یک برگه متفاوت نیز تنظیم کنید:

income1 = pd.DataFrame({'Names': ('Stephen', 'Camilla', 'Tom'),
                   'Salary':(100000, 70000, 60000)})

income2 = pd.DataFrame({'Names': ('Pete', 'April', 'Marty'),
                   'Salary':(120000, 110000, 50000)})

income3 = pd.DataFrame({'Names': ('Victor', 'Victoria', 'Jennifer'),
                   'Salary':(75000, 90000, 40000)})

income_sheets = {'Group1': income1, 'Group2': income2, 'Group3': income3}
writer = pd.ExcelWriter('./income.xlsx', engine='xlsxwriter')

for sheet_name in income_sheets.keys():
    income_sheets(sheet_name).to_excel(writer, sheet_name=sheet_name, index=False)

writer.save()

در اینجا، ما 3 دیتافریم مختلف ایجاد کرده‌ایم که شامل نام‌های مختلف کارمندان و حقوق آنها به عنوان داده است. هر یک از این دیتافریم ها توسط فرهنگ لغت مربوطه خود پر شده است.

ما این سه را در داخل ترکیب کرده ایم income_sheets متغیر، جایی که هر کدام کلید نام برگه است و هر کدام ارزش هست DataFrame هدف – شی.

در نهایت، ما استفاده کرده ایم xlsxwriter موتور برای ایجاد یک writer هدف – شی. این شی به to_excel() فراخوانی تابع

حتی قبل از اینکه چیزی بنویسیم، حلقه را از طریق آن مرور می کنیم کلیدها از income و برای هر کدام کلید، محتوا را در نام برگه مربوطه بنویسید.

این هم فایل تولید شده:

فایل اکسل چند برگه

می بینید که فایل اکسل دارای سه برگه مختلف به نام است Group1، Group2، و Group3. هر یک از این برگه ها حاوی نام کارمندان و حقوق آنها با توجه به تاریخ در سه فریم داده مختلف در کد ما است.

پارامتر موتور در to_excel() تابع برای تعیین ماژول زیربنایی توسط کتابخانه Pandas برای ایجاد فایل اکسل استفاده می شود. در مورد ما، xlsxwriter ماژول به عنوان موتور برای ExcelWriter کلاس بسته به موتورهای مختلف می توان مشخص کرد روی ویژگی های مربوط به آنها

بسته به ماژول های پایتون نصب شده روی سیستم شما، گزینه های دیگر برای ویژگی موتور عبارتند از: openpyxl (برای xlsx و xlsm) و xlwt (برای xls).

جزئیات بیشتر استفاده از xlsxwriter ماژول با کتابخانه Pandas در دسترس هستند اسناد رسمی.

آخرین اما نه کم اهمیت، در کد بالا باید به صراحت فایل را با استفاده از آن ذخیره کنیم writer.save()، در غیر این صورت ادامه نخواهد داشت روی دیسک

خواندن فایل های اکسل با پانداها

در مقابل نوشتن DataFrame اشیاء به یک فایل اکسل، می‌توانیم با خواندن فایل‌های اکسل در آن برعکس عمل کنیم DataFrameس بسته بندی محتویات یک فایل اکسل در یک DataFrame به آسانی تماس گرفتن است read_excel() تابع:

students_grades = pd.read_excel('./grades.xlsx')
students_grades.head()

برای این مثال، ما می خوانیم این فایل اکسل.

در اینجا تنها آرگومان مورد نیاز مسیر فایل اکسل است. مطالب خوانده شده و در یک بسته بندی می شوند DataFrame، که سپس می توانیم از طریق پیش نمایش آن را مشاهده کنیم head() تابع.

توجه داشته باشید: استفاده از این روش، اگرچه ساده ترین روش است فقط برگه اول را بخوانید.

بیایید نگاهی به خروجی آن بیندازیم head() تابع:

چارچوب داده نمرات

Pandas یک برچسب ردیف یا شاخص عددی را به آن اختصاص می دهد DataFrame به طور پیش فرض زمانی که از read_excel() تابع.

می‌توانیم با پاس دادن یکی از ستون‌های فایل اکسل به‌عنوان، فهرست پیش‌فرض را لغو کنیم index_col پارامتر:

students_grades = pd.read_excel('./grades.xlsx', sheet_name='Grades', index_col='Grade')
students_grades.head()

اجرای این کد منجر به موارد زیر می شود:

شاخص نمرات

در مثال بالا، ایندکس پیش فرض را با the جایگزین کرده ایم “مقطع تحصیلی” ستون از فایل اکسل. با این حال، اگر ستونی با مقادیری داشته باشید که می تواند به عنوان شاخص بهتری عمل کند، باید شاخص پیش فرض را لغو کنید.

خواندن ستون های خاص از یک فایل اکسل

خواندن یک فایل به طور کامل مفید است، اگرچه در بسیاری از موارد، شما واقعاً می خواهید به یک عنصر خاص دسترسی داشته باشید. برای مثال، ممکن است بخواهید مقدار عنصر را بخوانید و آن را به فیلدی از یک شی اختصاص دهید.

باز هم، این کار با استفاده از read_excel() تابع، با این حال، ما به تصویب usecols پارامتر. برای مثال، می‌توانیم تابع را به خواندن ستون‌های خاص محدود کنیم. بیایید پارامتر را به گونه ای اضافه کنیم که ستون های مربوط به را بخوانیم “نام دانش آموز”، “مقطع تحصیلی” و “علائم به دست آمده” ارزش های.

این کار را با مشخص کردن شاخص عددی هر ستون انجام می دهیم:

cols = (0, 1, 3)

students_grades = pd.read_excel('./grades.xlsx', usecols=cols)
students_grades.head()

با اجرای این کد به دست می آید:

استفاده از دیتافریم

همانطور که می بینید، ما فقط ستون های مشخص شده در را بازیابی می کنیم cols فهرست

نتیجه

ما برخی از کاربردهای کلی را پوشش داده ایم read_excel() و to_excel() عملکردهای کتابخانه پانداها با آنها، ما فایل‌های اکسل موجود را خوانده‌ایم و داده‌های خود را روی آنها نوشته‌ایم.

با استفاده از پارامترهای مختلف، می‌توانیم رفتار این توابع را تغییر دهیم و به ما این امکان را می‌دهد که فایل‌های سفارشی‌سازی شده بسازیم، نه اینکه همه چیز را از یک DataFrame.

(برچسب‌ها به ترجمه)# python



منتشر شده در 1403-01-17 07:36:03

امتیاز شما به این مطلب
دیدگاه شما در خصوص مطلب چیست ؟

آدرس ایمیل شما منتشر نخواهد شد.

لطفا دیدگاه خود را با احترام به دیدگاه های دیگران و با توجه به محتوای مطلب درج کنید