آموزش یادگیری ماشین (Machine Learning) در پایتون – کتابخانه Pandas

712 ۲

آموزش کتابخانه Pandas با بررسی دیتاست Titanic

آموزش کتابخانه Pandas با بررسی دیتاست Titanic

سهیل تهرانی پور

تابستان ۱۳۹۷

import pandas as pd

pd.read_csv()

نحوه خواندن فایل با فرمت csv توسط pandas

titanic_data = pd.read_csv("titanic.csv")
head()

نمایش ۵ داده اول ذخیره شده در دیتافریم

در صورت ثبت عدد به عنوان پارامتر ورودی، همان تعداد داده از index های ابتدایی دیتافریم را نمایش خواهد داد.

titanic_data.head()
shape

مشاهده ابعاد (سطر و ستون) دیتافریم

titanic_data.shape

(۱۳۰۹, ۱۴)

Columns

مشاهده عناوین ستون های دیتافریم

titanic_data.columns
Index(['pclass', 'survived', 'name', 'sex', 'age', 'sibsp', 'parch', 'ticket',
       'fare', 'cabin', 'embarked', 'boat', 'body', 'home.dest'],
      dtype='object')

dtypes

مشاهده عناوین ستون ها و تایپ داده هایشان

titanic_data.dtypes
pclass         int64
survived       int64
name          object
sex           object
age          float64
sibsp          int64
parch          int64
ticket        object
fare         float64
cabin         object
embarked      object
boat          object
body         float64
home.dest     object
dtype: object

info()

اطلاعات کاملتر در مورد داده ها

تعداد کل داده ها

تمامی ستون ها به همراه تایپ داده هایشان

هر ستون چه تعداد داده not-null دارد

titanic_data.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 1309 entries, 0 to 1308
Data columns (total 14 columns):
pclass       1309 non-null int64
survived     1309 non-null int64
name         1309 non-null object
sex          1309 non-null object
age          1046 non-null float64
sibsp        1309 non-null int64
parch        1309 non-null int64
ticket       1309 non-null object
fare         1308 non-null float64
cabin        295 non-null object
embarked     1307 non-null object
boat         486 non-null object
body         121 non-null float64
home.dest    745 non-null object
dtypes: float64(3), int64(4), object(7)
memory usage: 143.2+ KB
انتخاب سطر و ستون های خاص
titanic_data['survived'][0:5]
۰    ۱
۱    ۱
۲    ۰
۳    ۰
۴    ۰
Name: survived, dtype: int64
titanic_data.survived[0:5]
۰    ۱
۱    ۱
۲    ۰
۳    ۰
۴    ۰
Name: survived, dtype: int64
انتخاب ستون ها بر اساس چند عنوان مورد نظر
titanic_data[['survived','age']][0:5]
survived age
۰ ۱ ۲۹٫۰۰
۱ ۱ ۰٫۹۲
۲ ۰ ۲٫۰۰
۳ ۰ ۳۰٫۰۰
۴ ۰ ۲۵٫۰۰

value_counts()

پرینت داده های Unique در کل ستون

titanic_data['survived'].value_counts()
۰    ۸۰۹
۱    ۵۰۰
Name: survived, dtype: int64
از بین بازماندگان ۳۳۹ نفر زن و تنها ۱۶۱ نفر مرد بوده اند.
titanic_data['survived'].value_counts(normalize=True) * 100
۰    ۶۱٫۸۰۲۹۰۳
۱    ۳۸٫۱۹۷۰۹۷
Name: survived, dtype: float64
از بین بازماندگان ۳۳۹ نفر زن و تنها ۱۶۱ نفر مرد بوده اند.
pd.crosstab( titanic_data.sex, titanic_data.survived )
survived ۰ ۱
sex
female ۱۲۷ ۳۳۹
male ۶۸۲ ۱۶۱
نرمالایز نمودن داده ها بر اساس سطرa
pd.crosstab( titanic_data.sex, titanic_data.survived, normalize = "index" )
survived ۰ ۱
sex
female ۰٫۲۷۲۵۳۲ ۰٫۷۲۷۴۶۸
male ۰٫۸۰۹۰۱۵ ۰٫۱۹۰۹۸۵

 

نرمالایز نمودن داده ها بر اساس ستون
pd.crosstab( titanic_data.sex, titanic_data.survived, normalize = "columns" )
survived ۰ ۱
sex
female ۰٫۱۵۶۹۸۴ ۰٫۶۷۸
male ۰٫۸۴۳۰۱۶ ۰٫۳۲۲
نرمالایز نمودن کل داده ها
pd.crosstab( titanic_data.sex, titanic_data.survived, normalize = "all" )
survived ۰ ۱
sex
female ۰٫۰۹۷۰۲۱ ۰٫۲۵۸۹۷۶
male ۰٫۵۲۱۰۰۸ ۰٫۱۲۲۹۹۵
لیست کودکان زیر ۵ سال برای ارایه به خانواده بازماندگان
below_5_years = titanic_data[ titanic_data.age <= 5 ]
below_5_years[0:3]
چه تعداد از مسافران کودک زیر ۵ سال بودند؟
len( below_5_years )
۵۶
 ۳۷ کودک از بین ۵۶ کودک زنده ماندند.
 
titanic_data[ titanic_data.age <= 5 ]["survived"].value_counts( )
۱    ۳۷
۰    ۱۹
Name: survived, dtype: int64
نزدیک به ۲/۳ از کل کودکان زنده ماندند
titanic_data[ titanic_data.age <= 5 ]["survived"].value_counts( normalize = True )
۱    ۰٫۶۶۰۷۱۴
۰    ۰٫۳۳۹۲۸۶
Name: survived, dtype: float64
از بین مسافرین، افراد با نام Allen را میخواهیم.
titanic_data[titanic_data.name.str.contains( "Allen") ]

unique()

داده های منحصر به فرد در هر ستون

titanic_data.embarked.unique()
array(['S', 'C', nan, 'Q'], dtype=object)
بررسی تعداد داده ها با مقدار NaN در ستون Embarked – محل نجات یا غرق شدن افراد مشخص نباشد
titanic_data.embarked.value_counts(dropna=False)
S      914
C      270
Q      123
NaN      2
Name: embarked, dtype: int64
titanic_data.embarked.dropna().unique()
array(['S', 'C', 'Q'], dtype=object)
dropna()حذف داده های بدون مقدار
clean_titanic_data = titanic_data.dropna()
len( clean_titanic_data )
۰
استراتژی های پیشنهادی کار با دستور dropna()
حدف سطرهایی که در ستونشان NA‌ دارند
clean_titanic_data = titanic_data.dropna( how = "all" )
len( clean_titanic_data )
۱۳۰۹
حدف سطرهایی که در برخی از ستون هایشان NA‌ دارند
clean_titanic_data = titanic_data.dropna( subset = ['age','pclass'], how = 'any' )
len( clean_titanic_data )
۱۰۴۶
نحوه تغییر نام یک ستون
titanic_data.head( 2)
new_titanic = titanic_data.rename( columns = { 'row.names': 'rownum' },
                  inplace = True  )
titanic_data.head(2)
پرینت اطلاعات مربوط به جنسیت و سن و Pclass افرادی که زنده ماندند.
titanic_data[ ( titanic_data.survived == 1 ) &
           ( titanic_data.age <= 5 ) ][['age',
                                        'sex',
                                        'pclass']][0:5]
age sex pclass
۱ ۰٫۹۲ male ۱
۹۴ ۴٫۰۰ male ۱
۳۳۹ ۱٫۰۰ male ۲
۳۴۰ ۴٫۰۰ female ۲
۳۵۹ ۰٫۸۳ male ۲
پرینت اطلاعات مربوط به جنسیت و Pclass افرادی که زنده ماندند و سن آن ها مشخص نبوده است.
titanic_data[ titanic_data.age.isnull() ][['age',
                                         'survived',
                                         'sex',
                                         'pclass']][0:5]
age survived sex pclass
۱۵ NaN ۰ male ۱
۳۷ NaN ۱ male ۱
۴۰ NaN ۰ male ۱
۴۶ NaN ۰ male ۱
۵۹ NaN ۱ female ۱
پرینت اطلاعات مربوط به جنسیت و Pclass افرادی که زنده ماندند و سن آن ها مشخص است.
titanic_data[ -titanic_data.age.isnull() ][['age',
                                          'survived',
                                          'sex',
                                          'pclass']][0:5]
age survived sex pclass
۰ ۲۹٫۰۰ ۱ female ۱
۱ ۰٫۹۲ ۱ male ۱
۲ ۲٫۰۰ ۰ female ۱
۳ ۳۰٫۰۰ ۰ male ۱
۴ ۲۵٫۰۰ ۰ female ۱
نحوه ادغام و گروه بندی ستون های مختلف
titanic_data.groupby( 'pclass' )['age'].mean()
pclass
۱    ۳۹٫۱۵۹۹۳۰
۲    ۲۹٫۵۰۶۷۰۵
۳    ۲۴٫۸۱۶۳۶۷
Name: age, dtype: float64
pclass_age_mean_df = titanic_data.groupby( 'pclass' )['age'].mean().reset_index()
pclass_age_mean_df
pclass age
۰ ۱ ۳۹٫۱۵۹۹۳۰
۱ ۲ ۲۹٫۵۰۶۷۰۵
۲ ۳ ۲۴٫۸۱۶۳۶۷
pclass_gender_age_mean_df = titanic_data.groupby( ['pclass', 'sex'] )['age'].mean().reset_index()
pclass_gender_age_mean_df
pclass sex age
۰ ۱ female ۳۷٫۰۳۷۵۹۴
۱ ۱ male ۴۱٫۰۲۹۲۷۲
۲ ۲ female ۲۷٫۴۹۹۲۲۳
۳ ۲ male ۳۰٫۸۱۵۳۸۰
۴ ۳ female ۲۲٫۱۸۵۳۲۹
۵ ۳ male ۲۵٫۹۶۲۲۶۴
pclass_gender_survival_count_df = titanic_data.groupby( ['pclass', 'sex'] )['survived'].sum().reset_index()
pclass_gender_survival_count_df
pclass sex survived
۰ ۱ female ۱۳۹
۱ ۱ male ۶۱
۲ ۲ female ۹۴
۳ ۲ male ۲۵
۴ ۳ female ۱۰۶
۵ ۳ male ۷۵
pclass_age_gender_survival_df = pclass_gender_age_mean_df.merge(
  pclass_gender_survival_count_df, on = ['pclass', 'sex'])
pclass_age_gender_survival_df
pclass sex age survived
۰ ۱ female ۳۷٫۰۳۷۵۹۴ ۱۳۹
۱ ۱ male ۴۱٫۰۲۹۲۷۲ ۶۱
۲ ۲ female ۲۷٫۴۹۹۲۲۳ ۹۴
۳ ۲ male ۳۰٫۸۱۵۳۸۰ ۲۵
۴ ۳ female ۲۲٫۱۸۵۳۲۹ ۱۰۶
۵ ۳ male ۲۵٫۹۶۲۲۶۴ ۷۵
نحوه مربت سازی داده های دیتافریم
pclass_age_gender_survival_df.sort_values( 'survived')
pclass sex age survived
۳ ۲ male ۳۰٫۸۱۵۳۸۰ ۲۵
۱ ۱ male ۴۱٫۰۲۹۲۷۲ ۶۱
۵ ۳ male ۲۵٫۹۶۲۲۶۴ ۷۵
۲ ۲ female ۲۷٫۴۹۹۲۲۳ ۹۴
۴ ۳ female ۲۲٫۱۸۵۳۲۹ ۱۰۶
۰ ۱ female ۳۷٫۰۳۷۵۹۴ ۱۳۹
pclass_age_gender_survival_df.sort_values( 'survived', ascending = False)
pclass sex age survived
۰ ۱ female ۳۷٫۰۳۷۵۹۴ ۱۳۹
۴ ۳ female ۲۲٫۱۸۵۳۲۹ ۱۰۶
۲ ۲ female ۲۷٫۴۹۹۲۲۳ ۹۴
۵ ۳ male ۲۵٫۹۶۲۲۶۴ ۷۵
۱ ۱ male ۴۱٫۰۲۹۲۷۲ ۶۱
۳ ۲ male ۳۰٫۸۱۵۳۸۰ ۲۵

نویسنده: دکتر سهیل تهرانی پور

سال: تابستان ۱۳۹۷

نوشته مرتبط

2 دیدگاه موجود است

  1. با سلام
    ضمن تشکر از آموزشهای مفید و کاربردی شما، من ویدیوهایی را که در سایت پابلیک کرده اید دنبال میکنم، چگونه میتوانم به مجموعه ویدیوهای آموزشی شما در زمینه ماشین لرنینگ دسترسی داشته باشم.
    سپاسگزارم

    جواب

دیدگاه خود را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *