Pandas از کتابخانههای متن بازی است که برای کار با دادههایی با ساختار رابطهای (rational) یا برچسبگذاری شده ایجاد شده است. این کتابخانه ساختار دادههای متنوعی به همراه امکان اعمال عملیات عددی روی این دادهها را فراهم میکند وبه خوبی میتواند با سریهای زمانی کار کند. Pandas بر مبنای کتابخانهی NumPy ساخته شده است و بسیاری از ساختارهای NumPy در این کتابخانه استفاده شده و گسترش یافتهاند. در ادامه به آموزش کتابخانه Pandas میپردازیم. مزایای این کتابخانه شامل موارد زیر است:
محیطی که در این مقاله برای کار انتخاب کردهایم JuputerNotebook است که از توزیع آناکوندا استفاده شده است. برای توضیحات بیشتر و نحوهی نصب آن به این مقاله مراجعه کنید.
به طور کلی کتابخانه Pandas دارای دو دسته ساختار داده است:
البته نوع سومی تحت عنوان Panel هم بود که در نسخههای جدید منسوخ شده است.
سری یک آرایهی یک بُعدی و برچسبگذاری شده است (دارای ایندکس برای سطرهاست) که میتواند انواع مختلف داده (عدد صحیح، اعشاری، رشته، آبجکتهای پایتون و…) را در خود نگه دارد.
به محور برچسبها اندیس یا index میگویند. سریهای کتابخانه Pandas مثل یک ستون از صفحهی اکسل است. اندیسها باید منحصر به فرد باشند و هر اندیس فقط به یک عنصر اشاره کند. منبع داده برای سریهای کتابخانه Pandas میتواند پایگاه دادهی SQL، فایلهای CSV و اکسل باشد. نوع دادهی ورودی سری نیز میتواند به شکل لیست، تاپل و دیکشنری و عدد اسکالر باشد.
ایجاد یک سری:
یک سری در پانداس به شکل زیر تعریف میشود:
pandas.Series( data, index, dtype, copy)
که در آن:
در مثال زیر نحوهی ایجاد یک سری با استفاده از آرایه را میبینیم.
import pandas as pd
import numpy as np
# Creating empty series
ser = pd.Series()
print(ser)
# simple array
data = np.array(['g', 'e', 'e', 'k', 's'])
ser = pd.Series(data)
print(ser)
Series([], dtype: float64)
0 g
1 e
2 e
3 k
4 s
dtype: object
اگر مقدار ستون اندیس را مقداردهی نکنیم مانند مثال بالا به طور پیشفرض از صفر شروع به مقداردهی اندیسها میکند. میتوانیم ستون اندیسها را با عبارت index=[ ]نامگذاری کنیم:
pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
برای مشاهدهی دادههای یک سری از دستور values استفاده میکنیم و با index اندیسها را استخراج میکنیم:
my_series=pd.Series([1., 2., 3.], index=['a', 'b', 'c'])
print(my_series.values)
print(my_series.index)
دادهی ورودی یک سری میتواند به شکل دیکشنری نیز باشد. کلیدهای دیکشنری به طور پیشفرض در نقش ستون اندیسها ظاهر میشوند و اگر مقدار index به عنوان ورودی به کد داده شود، دادههای دیکشنری در مقابل اندیسهایی ظاهر میشوند که آن اندیس با مقدار کلید داده در دیکشنری برابر باشد.
import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data)
print (s)
سری خروجی به شکل زیر است:
میتوانیم ستون اندیس را خودمان مقدار دهی کنیم:
import pandas as pd
import numpy as np
data = {'a' : 0., 'b' : 1., 'c' : 2.}
s = pd.Series(data,index=['b','c','d','a'])
print (s)
میتوان به عناصر با شمارهی اندیس آنها و یا نام اندیس آنها در داخل براکت [ ] دسترسی داشت. در مثال زیر پنج عنصر اول را انتخاب میکنیم.
# import pandas and numpy
import pandas as pd
import numpy as np
# creating simple array
data = np.array(['g','e','e','k','s','f', 'o','r','g','e','e','k','s'])
ser = pd.Series(data)
#retrieve the first element
print(ser[:5])
0 g 1 e 2 e 3 k 4 s dtype: object
در مثال زیر هم به کمک برچسب اندیس به داده دسترسی داریم:
# import pandas and numpy
import pandas as pd
import numpy as np
# creating simple array
data = np.array(['g','e','e','k','s','f', 'o','r','g','e','e','k','s'])
ser = pd.Series(data,index=[10,11,12,13,14,15,16,17,18,19,20,21,22])
# accessing a element using index element
print(ser[16])
o
اندیسدهی به داده میتواند به معنای انتخاب زیرمجموعهای از داده باشد. در مثال زیر ستونی با نام Name از یک فایل csv را انتخاب میکنیم و با تابع( head(10 به ده عنصر ابتدایی سری، دست مییابیم:
# importing pandas module
import pandas as pd
# making data frame
df = pd.read_csv("nba.csv")
ser = pd.Series(df['Name'])
data = ser.head(10)
data
برای دستیابی به عناصر با اندیس 3 و 4 و 5 دستور زیر را مینویسیم:
# using indexing operator
data[3:6]
میتوان عدد یا برچسب اندیسهای مورد نظر را داخل براکت مقابل [loc[a:b قرار داد. توجه کنید که در اندیسدهی با loc، عدد آخر یعنی b درنظر گرفته میشود. به این مثال توجه کنید:
data.loc[3:6]
دستور iloc مشابه loc است با این تفاوت که در [iloc[a:b اندیسها فقط باید عددی باشند و دادهی مربوط به اندیس عدد b نیز جزو عناصر انتخابی نخواهد بود، همانطور که در کد زیر مشاهده میکنید، عنصر با اندیس 6 جزو خروجی نیست:
# using .iloc[] function
data.iloc[3:6]
عملیات باینری مثل جمع و تفریق و … را میتوان روی سریها انجام داد:
# importing pandas module
import pandas as pd
# creating a series
data = pd.Series([5, 2, 3,7], index=['a', 'b', 'c', 'd'])
print(data)
# creating a series
data1 = pd.Series([1, 6, 4, 9], index=['a', 'b', 'd', 'e'])
print(data1)
دو سری data و data1 را داریم:
حال برای جمع data و data1 از دستور add استفاده میکنیم:
data.add(data1, fill_value=0)
a 6.0 b 8.0 c 3.0 d 11.0 e 9.0 dtype: float64
سایر عملیات دودویی مثل .sub، .mul، .div،.pow و…. نیز وحود دارد که برای مطالعهی بیشتر میتوانید به داکیومنت کتابخانه Pandas مراجعه کنید.
دیتافریم (Dataframe) یک ساختار دادهی دو بعُدی است و دادهها شامل سطر(یا همان index) و ستون (یا همان columns) است و ساختاری رابطهای است و هر تعداد داده میتوانیم در آن ذخیره کنیم و انواع عملیات محاسباتی و رابطهای را همچون انتخاب، اتصال و گروهبندی را روی آن انجام دهیم.
یک دیتافریم (Dataframe) در کتابخانه Pandas (پانداس) به شکل زیر تعریف میشود:
pandas.DataFrame( data, index, columns, dtype, copy)
که در آن:
دیتافریم (Dataframe) در کتابخانه Pandas (پانداس)، به چند شکل مختلف میتواند ایجاد شود:
1.ایجاد دیتافریم (Dataframe) خالی
یک دیتافریم (Dataframe) اولیه میتواند شامل هیچ مقداری نباشد و تنها با متد DataFrame آن را ایجاد کنیم:
# import pandas as pd
import pandas as pd
# Calling DataFrame constructor
df = pd.DataFrame()
print(df)
Empty DataFrame
Columns: []
Index: []
2. ایجاد دیتافریم (Dataframe) با لیست
دادهی دیتافریم (Dataframe) میتواند یک لیست یا لیستهای تودرتو باشد:
# import pandas as pd
import pandas as pd
# list of strings
lst = ['this', 'is', 'a', 'practial',
'article', 'for', 'Pandas']
# Calling DataFrame constructor on list
df = pd.DataFrame(lst)
print(df)
0 0 this 1 is 2 a 3 practial 4 article 5 for 6 Pandas
نکته: پیش از ادامهی بقیهی مطالب، یادآور میشویم که در دیتافریم (Dataframe) هم مانند سریها میتوان ویژگی مرتبط با سطرها و ستونها را مقداردهی کرد.(مقادیر عددی یا رشتهای به index و columns داد.) اما اگر مقداردهی نکنیم به طور پیشفرض عددی و با شروع از صفر مقداردهی میشوند ((numpy.arrange(n :از 0 تا n-1). مثال زیر را ببینید:
# import pandas as pd
import pandas as pd
# list of strings
lst = ['this', 'is', 'a', 'practical',
'article', 'for', 'Pandas']
# Calling DataFrame constructor on list
df = pd.DataFrame(lst, index=['row1','row2','row3','row4','row5','row6','row7'], columns=['col1'])
print(df)
col1 row1 this row2 is row3 a row4 practical row5 article row6 for row7 Pandas
3- ایجاد دیتافریم (Dataframe) با دیکشنری
برای اینکه بتوانیم یک دیتافریم (Dataframe) با دادهای از جنس دیکشنری ایجاد کنیم که مقدار اختصاصی به هر کلید از نوع آرایه یا لیست است، باید طول این لیست یا آرایهها با هم برابر باشند. (اگر index را خودمان مقداردهی کنیم این مقدار باید برابر طول آرایه یا لیست باشد.). کلیدهای دیکشنری برای ستونهای دیتافریم (Dataframe) در نظر گرفته میشوند.
# Python code demonstrate creating
# DataFrame from dict narray / lists
# By default addresses.
import pandas as pd
# intialise data of lists.
data = {'Name':['Tom', 'nick', 'krish', 'jack'], 'Age':[20, 21, 19, 18]}
# Create DataFrame
df = pd.DataFrame(data)
# Print the output.
print(df)
خروجی این کد دیتافریمی (Dataframe) به شکل زیر است:
Name Age 0 Tom 20 1 nick 21 2 krish 19 3 jack 18
میتوان بر روی دیتافریم (Dataframe)ها عملیاتی چون انتخاب، حذف، افزودن و تغییر نام سطرها و ستونها را انجام داد.
انتخاب ستونها: برای انتخاب ستونها میتوان از نام آنها استفاده کرد. در کد زیر دیتافریمی (Dataframe) با نام df ایجاد میکنیم و سپس ستونهای Name و Qualification را انتخاب میکنیم.
# Import pandas package
import pandas as pd
# Define a dictionary containing employee data
data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'],
'Age':[27, 24, 22, 32],
'Address':['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'],
'Qualification':['Msc', 'MA', 'MCA', 'Phd']}
# Convert the dictionary into DataFrame
df = pd.DataFrame(data)
# select two columns
print(df[['Name', 'Qualification']])
Name Qualification 0 Jai Msc 1 Princi MA 2 Gaurav MCA 3 Anuj Phd
انتخاب سطرها: سطرهای مورد نظر را میتوان با دستور loc یا iloc یا ix انتخاب کرد و البته همانطور که در قسمت Series گفته شد برای انتخاب سطر با iloc تنها از شمارهی برچسب اندیس میتوان استفاده کرد. دادههای زیر را در نظر بگیرید:
# Import pandas package
import pandas as pd
# Define a dictionary containing employee data
data = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'],
'Age':[27, 24, 22, 32],
'Address':['Delhi', 'Kanpur', 'Allahabad', 'Kannauj'],
'Qualification':['Msc', 'MA', 'MCA', 'Phd']}
# Convert the dictionary into DataFrame
df = pd.DataFrame(data,index=('Person1','Person2','Person3','Person4'))
df
دیتافریم (Dataframe) ما در این کد به شکل زیر است:
Name | Age | Address | Qualification | |
---|---|---|---|---|
Person1 | Jai | 27 | Delhi | Msc |
Person2 | Princi | 24 | Kanpur | MA |
Person3 | Gaurav | 22 | Allahabad | MCA |
Person4 | Anuj | 32 | Kannauj | Phd |
حال اگر بخواهیم سطر اول را انتخاب کنیم، با یکی از دو دستور زیر این کار را میتوانیم انجام دهیم:
#with loc
df.loc[['Person1']]
#with iloc
df.iloc[[0]]
که خروجی هر دو کد یکسان است:
Name | Age | Address | Qualification | |
---|---|---|---|---|
Person1 | Jai | 27 | Delhi | Msc |
نکته:
Name Jai
Age 27
Address Delhi
Qualification Msc
Name: Person1, dtype: object
اگر بخواهیم دو سطر اول و دوم را انتخاب کنیم مانند کد زیر عمل میکنیم:
#with loc
df.loc['Person1':'Person2']
#or
df.loc[['Person1','Person2']]
#with iloc
df.iloc[0:2]
Name | Age | Address | Qualification | |
---|---|---|---|---|
Person1 | Jai | 27 | Delhi | Msc |
Person2 | Princi | 24 | Kanpur | MA |
و برای انتخاب سطر اول و اول و ستون دوم و سوم:
#with loc
df.loc['Person1':'Person2','Age':'Address']
#or
df.loc[['Person1','Person2'],['Age','Address']]
#with iloc
df.iloc[0:2,1:3]
Age | Address | |
Person1 | 27 | Delhi |
Person2 | 24 | Kanpur |
نکته: اگر ایندکس سطرها به صورت عددی بود، loc را مانند iloc مینویسیم با این تفاوت که در loc عدد اندیس آخر را درنظر میگیریم. یعنی مثلاً برای انتخاب سطر اول و دوم دستور را به صورت [loc[0:1 مینویسیم، درحالی که برای iloc به شکل [0:2]iloc است.
برای دسترسی به دیتافریم (Dataframe) با اندیس بولین، باید دیتافریمها (Dataframe) را با اندیس بولین ایجاد کنیم. یعنی دیتافریمی (Dataframe) با اندیسهایی که مقادیر آن True یا False باشد. به طور مثال:
# importing pandas as pd
import pandas as pd
# dictionary of lists
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
'degree': ["MBA", "BCA", "M.Tech", "MBA"],
'score':[90, 40, 80, 98]}
df = pd.DataFrame(dict, index = [True, False, True, False])
print(df)
شکل این دیتافریم (Dataframe) به صورت زیر است:
name degree score True aparna MBA 90 False pankaj BCA 40 True sudhir M.Tech 80 False Geeku MBA 98
دسترسی به عناصر دیتافریم (Dataframe) با اندیس بولین همچون سایر دیتافریمها (Dataframe) به یکی از روشهای loc و iloc است. برای دسترسی با loc مقدار True یا False را به عنوان پارامتر ورودی ارسال میکنیم.
# importing pandas as pd
import pandas as pd
# dictionary of lists
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
'degree': ["MBA", "BCA", "M.Tech", "MBA"],
'score':[90, 40, 80, 98]}
# creating a dataframe with boolean index
df = pd.DataFrame(dict, index = [True, False, True, False])
# accessing a dataframe using .loc[] function
print(df.loc[True])
name degree score True aparna MBA 90 True sudhir M.Tech 80
همانطور که قبلاً گفته شد، iloc تنها مقادیر عددی را به عنوان پارامتر ورودی میپذیرد، پس در نتیجه مقدار Boolean را نمیتوان به آن داد.
میتوان برای دسترسی به عناصر برمبنای مقادیرشان به کمک اپراتورهای منطقی همچون ==، <=، >= و != فیلترهایی تعریف کرد. خروجی چنین فیلترهایی مجموعهای بولین با مقادیر True و False است.
# importing pandas as pd
import pandas as pd
# dictionary of lists
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
'degree': ["BCA", "BCA", "M.Tech", "BCA"],
'score':[90, 40, 80, 98]}
# creating a dataframe
df = pd.DataFrame(dict)
# using a comparsion operator for filtering of data
print(df['degree'] == 'BCA')
0 True 1 True 2 False 3 True Name: degree, dtype: bool
همین فیلترها را بر روی index یا همان برچسب سطرها نیز میتوان اعمال کرد. مثال زیر را در نظر بگیرید:
# importing pandas as pd
import pandas as pd
# dictionary of lists
dict = {'name':["aparna", "pankaj", "sudhir", "Geeku"],
'degree': ["BCA", "BCA", "M.Tech", "BCA"],
'score':[90, 40, 80, 98]}
df = pd.DataFrame(dict, index = [0, 1, 2, 3])
print(df[df.index>=2])
name degree score 2 sudhir M.Tech 80 3 Geeku BCA 98
برای مرتبسازی صعودی یا نزولی دادههای ستونهای دیتافریم (Dataframe) از تابع sort_values() استفاده میکنیم. قاعدهی کلی به شکل زیر است:
DataFrame.sort_values(by, axis=0, ascending=True, inplace=False, kind=’quicksort’, na_position=’last’)
تمامی پارامترها به جز by دارای مقادیر پیشفرضاند.
by: نام یک یا مجموعهای از ستونها برای مرتبسازی دادهها بر مبنای آن ستونها است.
axis: عدد 0 یا عبارت ‘index’ برای سطر و 1 یا ‘columns’ برای ستون.
ascending: یک مقدار بولین که اگر True بود صعودی، و اگر False بود نزولی مرتب میکند.
inplace: یک مقدار بولین است. اگر True بود در دیتافریم (Dataframe) انتقالی به تابع، تغییراتی ایجاد میکند.
kind: یک مقدار رشتهای است که میتواند سه مقدار ‘quicksort’، ‘mergesort’ و یا ‘heapsort’ را بگیرد و الگوریتم مرتبسازی بر اساس آن عمل کند.
na_position: میتواند یکی از دو مقدار رشتهای ‘last’ یا ‘first’ را بگیرد و بر اساس آن تعیین کند که مکان مقادیر NAN یا همان تهی، پس از مرتبسازی در ابتدای جدول قرار گیرد یا در انتهای آن.
دیتافریم (Dataframe) برگشت داده شده از تابع مرتبسازی، همان ابعاد و shape دیتافریم (Dataframe) اولیه را دارد.
فرض کنید دیتافریمی (Dataframe) با نام data به شکل زیر داریم و میخواهیم براساس ستون name سطرها را مرتب کنیم.
name | Age | |
0 | John | 25 |
1 | Smith | 30 |
2 | Paul | 50 |
3 | Adam | 26 |
4 | Smith | 11 |
# importing pandas package
import pandas as pd
# sorting data frame by name
data.sort_values("name", axis = 0, ascending = True,
inplace = True, na_position ='last')
# display
data
name | Age | |
3 | Adam | 26 |
0 | John | 25 |
2 | Paul | 50 |
1 | Smith | 30 |
4 | Smith | 11 |
دادهی ناموجود یا تهی (Missing Values) زمانی رخ میدهد که یک یا چند آیتم مقداردهی نشده باشند و یا اطلاعاتی در خصوص آنها در دست نباشد. دادهی ناموجود در تحلیل دادههای سناریوهای واقعی مسألهی مهمی است. در پانداس از آن تحت عنوان NA NotAvailible نیز یاد میشود.
برای کنترل مقادیر ناموجود در دیتافریم (Dataframe) کتابخانه pandas (پانداس) میتوانیم از is null و not null استفاده کنیم. هردو تابع در کنترل اینکه آیا مقدار یک آیتم NAN هست یا نه؛ کمک میکنند. این توابع در سریها هم میتوانند برای یافتن مقادیر NAN به کار گرفته شوند. خروجی این توابع مقادیر بولین است.
# importing pandas as pd
import pandas as pd
# importing numpy as np
import numpy as np
# dictionary of lists
dict = {'First Score':[100, 90, np.nan, 95],
'Second Score': [30, 45, 56, np.nan],
'Third Score':[np.nan, 40, 80, 98]}
# creating a dataframe from list
df = pd.DataFrame(dict)
# using isnull() function
df.isnull()
First Score | Second Score | Third Score | |
---|---|---|---|
0 | False | False | True |
1 | False | False | False |
2 | True | False | False |
3 | False | True | False |
به منظور پرکردن و مقداردهی مقادیر تهی در دیتابیس از توابع fllna، replace و interpolate استفاده میکنیم که این توابع مقادیر NAN را با مقادیر تولیدی خود جایگزین میکنند. در کد زیر به کمک متد fillna مقادیر تهی را با صفر جایگزین میکنیم.
# importing pandas as pd
import pandas as pd
# importing numpy as np
import numpy as np
# dictionary of lists
dict = {'First Score':[100, 90, np.nan, 95],
'Second Score': [30, 45, 56, np.nan],
'Third Score':[np.nan, 40, 80, 98]}
# creating a dataframe from dictionary
df = pd.DataFrame(dict)
# filling missing value using fillna()
df.fillna(0)
First Score | Second Score | Third Score | |
---|---|---|---|
0 | 100.0 | 30.0 | 0.0 |
1 | 90.0 | 45.0 | 40.0 |
2 | 0.0 | 56.0 | 80.0 |
3 | 95.0 | 0.0 | 98.0 |
به منظور حذف مقادیر NAN از دیتافریم (Dataframe) از تابع dropna استفاده میکنیم. این تابع سطرها و ستونهای NAN را با شیوههای مختلف حذف میکند. دیتافریم (Dataframe) df را به شکل زیر داریم:
# importing pandas as pd
import pandas as pd
# importing numpy as np
import numpy as np
# dictionary of lists
dict = {'First Score':[100, 90, np.nan, 95],
'Second Score': [30, np.nan, 45, 56],
'Third Score':[52, 40, 80, 98],
'Fourth Score':[np.nan, np.nan, np.nan, 65]}
# creating a dataframe from dictionary
df = pd.DataFrame(dict)
df
First Score | Second Score | Third Score | Fourth Score | |
---|---|---|---|---|
0 | 100.0 | 30.0 | 52 | NaN |
1 | 90.0 | NaN | 40 | NaN |
2 | NaN | 45.0 | 80 | NaN |
3 | 95.0 | 56.0 | 98 | 65.0 |
در کد زیر سطرهایی که حداقل یک مقدار NAN دارند را حذف میکند.
# importing pandas as pd
import pandas as pd
# importing numpy as np
import numpy as np
# dictionary of lists
dict = {'First Score':[100, 90, np.nan, 95],
'Second Score': [30, np.nan, 45, 56],
'Third Score':[52, 40, 80, 98],
'Fourth Score':[np.nan, np.nan, np.nan, 65]}
# creating a dataframe from dictionary
df = pd.DataFrame(dict)
# using dropna() function
df.dropna()
خروجی به شکل زیر خواهد بود:
First Score | Second Score | Third Score | Fourth Score | |
---|---|---|---|---|
3 | 95.0 | 56.0 | 98 | 65.0 |
حال کدی مینویسیم که با آن سطری را که همهی عناصر آن صفر باشد را حذف کنیم. فرض کنید دیتافریم (Dataframe) زیر را داریم که سطر دوم آن همگی NAN است:
# importing pandas as pd
import pandas as pd
# importing numpy as np
import numpy as np
# dictionary of lists
dict = {'First Score':[100, np.nan, np.nan, 95],
'Second Score': [30, np.nan, 45, 56],
'Third Score':[52, np.nan, 80, 98],
'Fourth Score':[np.nan, np.nan, np.nan, 65]}
df = pd.DataFrame(dict)
# using dropna() function
df.dropna(how = 'all')
خروجی حاصل به شکل زیر است:
First Score | Second Score | Third Score | Fourth Score | |
---|---|---|---|---|
0 | 100.0 | 30.0 | 52.0 | NaN |
2 | NaN | 45.0 | 80.0 | NaN |
3 | 95.0 | 56.0 | 98.0 | 65.0 |
مجموعه دادهی زیر را در نظر بگیرید:
# importing pandas as pd
import pandas as pd
# importing numpy as np
import numpy as np
# dictionary of lists
dict = {'First Score':[100, np.nan, np.nan, 95],
'Second Score': [30, np.nan, 45, 56],
'Third Score':[52, np.nan, 80, 98],
'Fourth Score':[60, 67, 68, 65]}
# creating a dataframe from dictionary
df = pd.DataFrame(dict)
df
First Score | Second Score | Third Score | Fourth Score | |
---|---|---|---|---|
0 | 100.0 | 30.0 | 52.0 | 60 |
1 | NaN | NaN | NaN | 67 |
2 | NaN | 45.0 | 80.0 | 68 |
3 | 95.0 | 56.0 | 98.0 | 65 |
دستور( dropna(axis=1 منجر به حذف ستونهای اول و دوم وسوم خواهد شد. (وقتی axis را برابر 1 قرار میدهیم یعنی متد روی ستونها کار میکند و اگر صفر باشد روی سطرها):
# importing pandas as pd
import pandas as pd
# importing numpy as np
import numpy as np
# dictionary of lists
dict = {'First Score':[100, np.nan, np.nan, 95],
'Second Score': [30, np.nan, 45, 56],
'Third Score':[52, np.nan, 80, 98],
'Fourth Score':[60, 67, 68, 65]}
# creating a dataframe from dictionary
df = pd.DataFrame(dict)
# using dropna() function
df.dropna(axis = 1)
Fourth Score | |
---|---|
0 | 60 |
1 | 67 |
2 | 68 |
3 | 65 |
جمعبندی:
در این مقاله به معرفی کتابخانه Pandas در پایتون پرداختیم. پانداس یک کتابخانهی متن باز است که برای کار بر روی دادههای برچسبدار و رابطهای طراحی شده است. چنین ساختار دادهای باعث میشود تا به کمک عملیات تعریف شده بر روی دادههای رابطهای تحلیل سودمندی روی دادهها انجام داد. این کتابخانه به خاطر قابلیت سرعت و قدرت خوب پردازشی در علم داده بسیار پرکاربرد است و توابع و متدهای فراوانی را فراهم کردهاست. با مطالعهی این مقاله و انجام مثالهای آن با این فریم ورک آشنا شده و قادر به شروع انجام پروژهی خود خواهید بود.
اگر دوست داری به یک متخصص پایتون وب تبدیل بشی و در شرکتهای معتبر مشغول به کار با درآمد بالا بشی ، شرکت در دوره جامع آموزش پایتون را پیشنهاد میکنیم.
چطور میتونم در یک ستون از دیتا فریم هر داده رو منهای داده قبلش کنم و در ستونی جدید قرار بدم؟
باید از حلقه کمک بگیرید. این تاپیک استک درمورد اضافه کردن مقدار هست به راحتی میتونید بجاش از منها استفاده کنید.