قسمت چهارم – واکشی داده از منابع مختلف در پانداس
در این آموزش شیوه های مختلف واکشی اطلاعات را آموزش خواهید دید به طور مثال چگونه داده را داخل پایتون از طریق Series یا Data frame و در ادامه چگونه از فایل CSV ، Excel ، بانک اطلاعاتی و… واکشی کنید.
- Series
- Data Frame
- CSV
- Excel
- SQL
- Web
در ابتدا لازم هست تفاوت از نوع Series و Data Frame را با هم بررسی کنیم.
در کتابخانه پانداس (Pandas)، دو ساختار دادهای اصلی به نامهایSeries و DataFrame وجود دارند که هرکدام کاربردهای متفاوتی دارند:
- Series : تعریف یک آرایهی یکبعدی است که میتواند دادههای هر نوعی (مانند اعداد، رشتهها و غیره) را نگهداری کند.
ایندکس: هر داده در سری دارای یک ایندکس است که بهطور پیشفرض از صفر شروع میشود، اما میتوان ایندکسهای دلخواه را نیز تعریف کرد.
ساختار: مشابه با یک ستون در یک DataFrame یا یک لیست در پایتون.
کاربرد: برای نمایش مجموعهای از دادههای تکبعدی مانند یک ستون از جدول یا یک لیست از دادهها استفاده میشود.
import pandas as pd # Create a Pandas Series from a list data = [1000, 2000, 3000, 4000, 5000] s = pd.Series(data) # Print the Series print(s)
- DataFrame: یک آرایهی دوبعدی است که شبیه به یک جدول (مانند یک صفحهی اکسل) میباشد و دادهها را بهصورت ردیفها و ستونها نگهداری میکند.
ایندکس و ستون: هر DataFrame هم دارای ایندکس برای ردیفها و هم دارای نام ستونها است.
ساختار: میتوان آن را به عنوان مجموعهای از چندین سری در نظر گرفت که هر سری یک ستون از دادهها را نمایش میدهد.
کاربرد: برای نمایش و مدیریت دادههای چندبعدی و جداول اطلاعاتی استفاده میشود.
import pandas as pd data = { "calories": [420, 380, 390], "duration": [50, 40, 45] } df = pd.DataFrame(data) print(df)
مثالی دیگر از دیتا فریم
import pandas as pd df = pd.DataFrame({ 'Fname':['مینا','سیما','رضا','سعید','وحید','هادی','پریسا'], 'Age':[21,34,42,18,24,80,22], 'Weight': [80, 76, 90, 60, 76, 49, 68], 'Gender':['F','F','M','M','M','M','F'], 'State':['تهران','تهران','فارس','مشهد','هرمزگان','تهران','کرمان'], 'Children':[4,1,2,3,0,2,0] }) print (df)
تفاوتها:
- ابعاد: Series تکبعدی است، اما DataFrame دوبعدی است (چندین ستون و ردیف دارد).
- ساختار: Series معادل یک ستون از DataFrame است، اما DataFrame مجموعهای از چندین Series است.
- نوع دادهها: Series فقط یک نوع داده (یک ستون) را نگه میدارد، اما DataFrame میتواند چندین ستون با انواع دادههای مختلف داشته باشد.
- فراخوانی داده از فایل CSV برای واکشی اطلاعات از یک فایل CSV می توانید از دستور read_csv استفاده کنید و اگر داده ها یونیکد هست ویزگی encoding را نیز تنظیم کنید.
import pandas as pd df = pd.read_csv('C:\\Users\\pirooz\\Desktop\\Power BI New Course\\Session19-Python\\Code\\Dataset.csv',delimiter=',',encoding = 'utf-8')
- فراخوانی داده از اکسل برای واکشی اطلاعات از فایل اکسل می توانید از تابع read_excel استفاده کنید همچنین از طریق ویژگی sheet_name می توانید شیت مورد نظر را فراخوانی کنید.
import pandas as pd df = pd.read_excel('C:\\Users\\pirooz\\Desktop\\Power BI New Course\\Session19-Python\\Code\\Financial.xlsx', sheet_name='Sheet1')
- فراخوانی داده از بانک اطلاعاتی SQL برای واکشی اطلاعات از بانک اطلاعاتی SQL در ابتدا لازم هست کتابخانه pyodbc را import کنیم در آموزش قسمت نحوه اضافه کردن کتابخانه را آموزش داده ایم (قسمت سوم – نصب پایتون و اضافه کردن کتابخانه Pandas) طبیعتا در ادامه نیاز هست که آدرس سرور ، نام دیتابیس ، نام کاربری و کلمه عبور (در صورتی که دسترسی به صورت SQL ی باشد) و کوئری را وارد کنیم . نکته مهم خط ارتباطی یا Connection String هست که باید تنظیم گردد.
متد صدا کردن دستور SQL تابع read_sql می باشد.
import pyodbc import pandas as pd server = '.' database = 'AdventureWorksDW2017' username = 'sa' password = '123' cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password) cursor = cnxn.cursor() query = "SELECT [AccountKey], [AccountDescription] FROM DimAccount;" df = pd.read_sql(query, cnxn) print(df)
- فراحوانی داده از یک صفحه وب : برای فراخوانی داده از یک صفحه وب باید از متد read_Html استفاده کرد این متد برای اجرا نیاز به یکسری کتابخانه دیگر دارد در واقع کتابخانه های زیر در داخل read_html وجود دارند
pip install lxml pip install html5lib pip install BeautifulSoup4 pip install requests
به طور مثال ما می خواهیم داده ای سایت runnersworld را واکشی کنیم
import pandas as pd # URL of the webpage containing marathon records DATA_URL = 'https://www.runnersworld.com/races-places/a20823734/these-are-the-worlds-fastest-marathoners-and-marathon-courses/' html_tables = pd.read_html(DATA_URL, header=0) print(html_tables)
دیدگاه خود را ثبت کنید
تمایل دارید در گفتگوها شرکت کنید؟در گفتگو ها شرکت کنید.