با داده‌ها چه می‌توان کرد؟ 12 - کار با پانداز - 3 چگونه داده‌ها را وارد کنیم؟

در این قسمت در ادامه موضوع کار با پانداز، به چگونگی وارد کردن داده ها به پانداز و خواندن و کار با داده های وارد شده، می پردازیم. در دنیای واقعی، داده ها تمیز و مرتب نیستند و از منابع مختلفی حاصل می شوند. مهمترین منابع داده ها که ما از آنها برای وارد کردن به پانداز استفاده می کنیم جدولها Table، داده های جدا شده توسط ویرگول csv، بانکهای اطلاعاتی database مانند sql وبسایتها html، جیسان json و غیره است. در زیر مهمترینهایی که گفته شد، به این صورت وارد پانداز می شود:
read_csv
read_table
read_excel
read_html 
read_json
read_sql
به این مثال توجه کنید. در این مثال از این فایل استفاده می شود. آنرا دانلود کرده و در محل (پوشه ای) که نوتبوک ژوپیتر را در آن ایجاد کرده اید، ذخیره کنید.

ابتدا پانداز را وارد import می کینم و سپس فایل را می خوانیم. توجه داشته باشید که باید آدرس فایل درون گیومه باشد.

از این فرمول هم می شود همان نتیجه را بدست آورد:
pd.read_table('ex1.csv', sep=',')

اما اگر  از ',' =sep استفاده نکنیم، به این صورت در می آید:

نام ستونها لزوما همیشه در داده ها قید نشده است. مثلا به این فایل توجه کنید. (دانلود کنید و در همان پوشه قرار دهید.)


اگر پس از آدرس فایل header=None قید نشود، نیتجه به این صورت در می آید:

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

توجه داشته باشید که این فایل دوم است و نه اول. و تیتر ستونها را ما خود مشخص کردیم.

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


برای آنکه بتوانیم one و two را اولا به عنوان نام ردیف مشخص کنیم و همچنین از تکرار آنها جلوگیری کنیم از این کد استفاده می کنیم:

index_col به معنی ستونهایی است که برای نام ردیفها استفاده می شود.

فرمت فایل بعدی txt است. به منظور خواندن آن به صورت لیست، صرفا از open یعنی باز کردن استفاده می کنیم.


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


از آنجاییکه تعداد نام ستونها (ردیف اول A B C) یکی کمتر از تعداد کل ستونهاست، پانداز خود ستون اول را به عنوان نام ردیفها در نظر می گیرد.

به مثال بعد توجه کنید. از طریق skiprows می شود هر ردیفی را که بخواهید از جدولتان حذف کنید. فایل شماره 4
اصل محتوای فایل به این صورت است:

و با این کد به این صورت در می آید، چرا که ردیفهای اول و سوم و چهارم (یعنی 0، 2، 3) محتوایی نیست که مورد استفاده ما باشد.

گاهی اوقات یک فایل حاوی تعداد بسیار زیادی data است. مثلا فایل بعدی دارای 10000 داده است. پانداز اجازه می دهد که هنگام خواندن فایل، تعداد مشخصی را که مد نظرمان است، وارد کنیم.

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

اکنون ما می توانیم یک فایل جدید ایجاد کنیم. این فرمان را بر روی سلول بعدی اجرا کنید:
data.to_csv('out.csv')
اکنون به همان پوشه ای که نوتبوک ژوپیتر در آن قرار دارد بروید. ملاحظه می کنید که یک فایل با نام out.csv بوجود آمده است که حاولی همان داده هایی است که در ex5.csv بوده.

پانداز می تواند داده هایی را که به شکل جیسان jaon وجود دارد را بسادگی تبدیل به جدول دیتافِریم مبدل کند. به این مثال توجه کنید که در این فایل قرار دارد و به این شکل است.
[{"a": 1, "b": 2, "c": 3},
 {"a": 4, "b": 5, "c": 6},
 {"a": 7, "b": 8, "c": 9}]
از این طریق پانداز می تواند فایل حاوی داده به صورت جیسان را بخواند:


برای خواندن اچ تی ام ال html، که همان فرمت صفحات اینترنت است، پانداز ابزارهای گوناگونی را مورد استفاده قرار میدهد. به این فایل توجه کنید. (دانلود و خود امتحان کنید.)


پانداز بطور اتوماتیک ابتدا به جستوی جدولها اقدام می کند و داده هایی که با تگ table> tags> در سایت هستند را می یابد. در قسمتهای آینده که دبناله بخش داده کاوی است، این موضوع را دنبال خواهیم کرد.

پانداز قابلیت خواندن فایل با فرمت مایکروسافت اکسل Excel را نیز دارد. بطور مثال این فایل را نگاه کنید.


دریافت داده ها از ای پی آی API (ذخیره شده و تغذیه کننده در یک مکان دیگر) بسیار در این رشته اهمیت دارد. پانداز ابزارهای مختلفی برای دریافت داده ها از ای پی آی در اختیار دارد. یکی از آسانترین شیوه های استفاده از requests است که ابتدا باید آنرا وارد کرد. به مثال زیر توجه کنید.

پس از وارد کردن requests، از متد get استفاده کرده و داده ها را در res ذخیره می کنیم. برای امتحان با استفاده از کلمه res پاسخ 200 که به معنی برقراری ارتباط است را می گیریم. (قبلا در مورد این اعداد و معانی آن گفته شد.)
اگر به آدرسی url که درون پرانتز وارد کردیم برویم، داده ها را که بصورت جیسان json است را می بینیم. بسیار مهم است که برای وارد کردن داده ها از ای پی آی، ابتدا شکل و شمایل داده ها را در منبع آن نگاه کنیم. سپس اولین تیتر داده ها را نگاه می کنیم. سپس با ایجاد یک دیتا فریم، ستونهای مورد نظرمان را قید می کنیم. در مثال بالا، با ()head پس از نام دیتافریم ایجاد شده، پنج داده اول از اولین مجموعه داده ها را نگاه می کنیم.

در بعضی مواقع، منبع داده ها از csv, json, API نیست و از بانک اطلاعاتی database گرفته می شود. sql یکی از متداول ترین منابع در این موارد است. پانداز براحتی می تواند از هر بانک اطلاعاتی داده ها را وارد کند. در مثال زیر، اتتدا یک database ایجاد می کنیم و از طریق یکی از آسانترین بسته های موجود، آنرا وارد کرده و می خوانیم.

در اولین سلول sqlite3 که در خود پایتون موجود است را وارد پانداز می کنیم. سپس یک جدول ایجاد مکرده و آنرا با بانک اطلاعاتی وصل می کنیم(سلول سوم.) بعد آنرا اجرا می کنیم. (سلول 4 و 5)
سپس تعدادی از داده ها را به جدول ایجاد شده می افزاییم. (سلول 6)
اکنون با استفاده از بسته SQLAlchemy project می توانیم جدول ایجاد شده مان را از بانک اطلاعاتی وارد پانداز کنیم. تنها کافی است که آنرا ابتدا مثل هر بسته دیگر وارد import کنیم. توجه داشته باشید که ساختن یک جدول sql واقعا مد نظر ما در اینجا نیست و فقط برای وارد کردن داده ها به پانداز از sql آنرا بوجود آوردیم. والا با SQLAlchemy می توان از هر بانک اطلاعاتی موجود استفاده کرد. مانند این:

ادامه دارد.


- اطلاعات مربوط به این بخش و قسمتهای دیگر در باره پانداز، بیشتر برگرفته از کتاب  Python for Data Analysis, Data Wrangling with Pandas, NumPy,and IPython چاپ دوم از انتشارات اورایلی است که توسط Wes McKinney، خالق پانداز، نوشته شده است. 

*- بیشتر ملاتها در مورد بررسیهای آماری در این سلسله مطالب، برگرفته از دو کتاب An Introduction to Statistical Learning و The Elements of Statistical Learning Data Mining, Inference, and Prediction از انتشارات سپرینگر springer.com/us و کلاسهای ارائه شده آنلاین توسط دانشگاه هاروارد است.



**- استفاده از این سلسله مطالب با ذکر منبع آزاد است.

 

Comments

Popular posts from this blog

با داده‌ها چه می‌توان کرد؟ 9 - پردازش خطی بصورت عملی