از طریق منوی جستجو مطلب مورد نظر خود در وبلاگ را به سرعت پیدا کنید
خواندن و نوشتن فایلهای اکسل (XLSX) در پایتون با کتابخانه پاندا
سرفصلهای مطلب
معرفی
درست مانند سایر انواع فایل ها، می توانید از کتابخانه 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