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

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

یک آغازگر سریع صفحه گسترده

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

صفحه گسترده

به عنوان مثال ، در تصویر بالا ، صفحه گسترده فقط شامل یک صفحه است ، “Sheet1”. سلول “2A” مربوط به سطر دوم و ستون اول است. مقدار سلول 2A 1 است.

اگرچه برنامه هایی با الف رابط کاربری گرافیکی حروف را به نام ستون ها اختصاص می دهیم ، وقتی داده ها را تجزیه می کنیم ، شماره های سطر و ستون را از 0 شروع می کنیم. به این معنی که سلول 2A با (1 ، 0) ، 4B تا (1،3) ، 3C تا (2) مطابقت دارد ، 2) ، و غیره.

تنظیم محیط پایتون

ما استفاده خواهیم کرد پایتون 3 برای خواندن و نوشتن صفحه گسترده. برای خواندن و نوشتن فایل های XLSX ، باید ماژول Pandas را نصب کنید. این کار را می توانید از طریق یکی از نصب کننده های پایتون انجام دهید: pip یا easy_install. Pandas از openpyxl ماژول برای خواندن فایل های صفحه گسترده (.xlsx) جدید ، و xlrd ماژول ها برای خواندن صفحات گسترده قدیمی (پرونده های .xls). هر دو اینها openpyxl و xlrd هنگام نصب Pandas به عنوان وابستگی نصب می شوند:

pip3 install pandas

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

خواندن صفحات گسترده

اگر پرونده ای دارید و می خواهید داده های موجود در آن را تجزیه کنید ، باید موارد زیر را به ترتیب زیر انجام دهید:

  1. وارد کردن pandas مدول
  2. فایل صفحه گسترده (یا کتاب کار) را باز کنید
  3. یک برگه را انتخاب کنید
  4. مقادیر سلولهای داده خاص را استخراج کنید

یک فایل صفحه گسترده را باز کنید

بیایید ابتدا یک پرونده در پایتون باز کنیم. برای پیگیری می توانید از موارد زیر استفاده کنید صفحه گسترده نمونه، با احترام از کانتینر یادگیری:

import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')
workbook.head()
بخش کشور تولید – محصول باند تخفیف واحدهای فروخته شده قیمت ساخت قیمت فروش فروش ناخالص تخفیف حراجی چنگال سود تاریخ شماره ماه نام ماه سال
0 دولت کانادا بزرگراه هیچ یک 1618.5 3 20 32370.0 0.0 32370.0 16185.0 16185.0 2014-01-01 1 ژانویه 2014
1 دولت آلمان بزرگراه هیچ یک 1321.0 3 20 26420.0 0.0 26420.0 13210.0 13210.0 2014-01-01 1 ژانویه 2014
2 بازار میانه فرانسه بزرگراه هیچ یک 2178.0 3 15 32670.0 0.0 32670.0 21780.0 10890.0 2014-06-01 6 ژوئن 2014
3 بازار میانه آلمان بزرگراه هیچ یک 888.0 3 15 13320.0 0.0 13320.0 8880.0 4440.0 2014-06-01 6 ژوئن 2014
4 بازار میانه مکزیک بزرگراه هیچ یک 2470.0 3 15 37050.0 0.0 37050.0 24700.0 12350.0 2014-06-01 6 ژوئن 2014

Pandas صفحه گسترده را به صورت جدول می خواند و آن را به صورت جدول ذخیره می کند قاب داده Pandas.

اگر فایل شما دارای کاراکترهای غیر ASCII است ، باید آن را به صورت زیر باز کنید:

import sys
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx', encoding=sys.getfilesystemencoding())

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

workbook = pd.read_excel('~/Desktop/import-export-data.xlsx', usecols = 'A:E')
workbook.head()
بخش کشور تولید – محصول باند تخفیف واحدهای فروخته شده
0 دولت کانادا بزرگراه هیچ یک 1618.5
1 دولت آلمان بزرگراه هیچ یک 1321.0
2 بازار میانه فرانسه بزرگراه هیچ یک 2178.0
3 بازار میانه آلمان بزرگراه هیچ یک 888.0
4 بازار میانه مکزیک بزرگراه هیچ یک 2470.0

علاوه بر این ، می توانید از nrows و skiprows آرگومان ها برای خواندن تعداد معینی از ردیف ها یا نادیده گرفتن تعداد معینی ردیف در ابتدای کار.

باز کردن یک برگه خاص

با استفاده از می توانید یک صفحه خاص را از صفحه گسترده خود انتخاب کنید sheet_name بحث و جدل. به طور پیش فرض ، read_excel () تابع اولین ورق پرونده را تجزیه می کند. شما می توانید نام برگه را به عنوان یک رشته یا شاخص صفحه را (از 0 شروع کنید) ارائه دهید:


worksheet = pd.read_excel('sample-xlsx-file-for-testing.xlsx', sheet_name = 'Sheet1')

worksheet = pd.read_excel('sample-xlsx-file-for-testing.xlsx', sheet_name = 0)

شما همچنین می توانید تعدادی ورق را انتخاب کنید تا به عنوان دستور داده های Pandas ذخیره شود sheet_name بحث و جدل:


worksheets = pd.read_excel('~/Desktop/import-export-data.xlsx', sheet_name = [0, 1, 'Sheet 3'])

دریافت داده از سلول ها

هنگامی که صفحه کار را در یک داده داده انتخاب کردید ، می توانید با پرس و جو در قالب داده Pandas ، مقدار یک سلول داده خاص را استخراج کنید:

import pandas as pd
workbook = pd.read_excel('sample-xlsx-file-for-testing.xlsx')


print(workbook['Product'].iloc[0])

=> Carretera

.loc () روش به شما کمک می کند تا مقداری را براساس مکان فهرست جستجو کنید. در کد بالا ، .iloc() مقدار را در مکان 0 صحیح جستجو می کند. به همین ترتیب ، می توانید مقداری را با استفاده از برچسب از طریق .محل() روش. به عنوان مثال ، اگر استدلال را قبول کنید 0 به .loc() روش ، این برچسب را جستجو می کند 0 در فهرست:

print(workbook['Product'].loc[0])

=> Carretera

می توانید مجموعه داده خود را هنگامی که در یک داده داده با عملکردهای داخلی در Pandas بارگیری شد ، پرس و جو کنید. در اینجا مقاله ای در مورد است در جستجوی مقادیر چارچوب داده Pandas خود باشید.

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

گردش کار برای ایجاد کاربرگ همانند بخش قبلی است.

  1. وارد کردن pandas مدول
  2. داده ها را در یک کتاب کار ذخیره کنید
  3. یک ورق در کتاب کار ایجاد کنید
  4. اضافه کردن یک ظاهر طراحی شده به سلول ها در کتاب کار

یک پرونده جدید ایجاد کنید

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

import pandas as pd

name = ['John', 'Mary', 'Sherlock']
age = [11, 12, 13]
df = pd.DataFrame({ 'Name': name, 'Age': age })
df.index.name = 'ID'

سپس می توانید با فراخوانی شماره یک صفحه گسترده جدید ایجاد کنید برای بهتر شدن() تابع در dataframe ، مشخص کردن نام فایلی که باید به عنوان ذخیره کند:

df.to_excel('my_file.xlsx')

با استفاده از عملکرد می توانید همین پرونده را باز کنید read_excel().

افزودن ورق

با استفاده از. می توانید فریم داده خود را به عنوان یک صفحه خاص در کتاب کار ذخیره کنید sheet_name بحث و جدل. مقدار پیش فرض این استدلال است Sheet1:

df.to_excel('my_file.xlsx', sheet_name = 'My Sheet')

هنگام ذخیره صفحه گسترده ، گزینه های بیشتری دارید

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

import pandas as pd

workbook = pd.read_excel('my_file.xlsx')


workbook_2 = workbook.copy()

with pd.ExcelWriter('my_file_1.xlsx') as writer:
    workbook.to_excel(writer, sheet_name='Sheet1')
    workbook_2.to_excel(writer, sheet_name='Sheet2')

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

with pd.ExcelWriter('my_file_1.xlsx', engine="openpyxl", mode='a') as writer:
    workbook_2.to_excel(writer, sheet_name='Sheet3'

علاوه بر این ، از date_format و datetime_format برای تنظیم مقادیر برای مقادیر تاریخ و زمان:

with pd.ExcelWriter('my_file.xlsx',
  date_format='YYYY-MM-DD',
    datetime_format='YYYY-MM-DD HH:MM:SS') as writer:
  workbook.to_excel(writer)

خواندن صفحات گسترده Legacy (.xls)

شما می توانید صفحات گسترده قدیمی را با .xls پسوند با استفاده از همان نحو در Pandas:

workbook = pd.read_excel('my_file_name.xls')

در حالی که شما از همان استفاده کردید read_excel() تابع ، Pandas از xlrd موتور برای خواندن آن. شما می توانید صفحات گسترده قدیمی را با استفاده از همان نحوی که قبلاً در این آموزش به آن پرداختیم ، بخوانید و بنویسید.

خلاصه ای سریع از فایلهای CSV

CSV مخفف “مقادیر جدا شده با ویرگول” است (یا اگر جدا کننده استفاده شده کاراکتر دیگری غیر از ویرگول باشد ، گاهی اوقات کاراکتر را از هم جدا می کند) و نام کاملاً قابل توضیح است. یک فایل CSV معمولی به صورت زیر است:

'ID', 'Name', 'Age'
'1', 'John', '11'
'2', 'Mary', '12'
'3', 'Sherlock', '13'

برای آسان کردن تجزیه ، می توانید صفحات گسترده را به فایل های CSV تبدیل کنید. فایل های CSV با استفاده از csv ماژول در پایتون ، علاوه بر Pandas:

workbook = pd.read_csv('my_file_name.csv')

نتیجه

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

از چه زبان برنامه نویسی برای مدیریت صفحات گسترده استفاده می کنید؟ آیا پایتون کتابخانه دیگری برای این منظور دارد که شما ترجیح می دهید؟ احساس رایگان به من ضربه زدن در توییتر.