آموزش کامل داده کاوی و کار با داده در پایتون در ده دقیقه

آموزش کامل داده کاوی و کار با داده در پایتون در ده دقیقه

  buy_icon  

مقدمه

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

 

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

 

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

بنابراین پس از این مقاله توصیه می شود حتما مقاله صفر تا صد یادگیری ماشین با پایتون را مطالعه کنید که درواقع ادامه این مبحث محسوب می شود.

چند مثال زیر به شفاف شدن مفهوم داده کاوی کمک می کند:

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

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

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

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

 

خب دیگه بپریم داخل کد!!

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

 

آشنایی و استفاده از numpy

بعد از فراگیری مابحث پایه برنامه نویسی پایتون و انواع داده ها در پایتون، اولین ماژولی که باید برای کار با داده فراگرفت کتابخانه numpy است. ماژول numpy یک ابزار مفید برای تعریف ماتریس و آرایه در پایتون است و اکثر ماژول های دیگر در حوزه داده کاوی برپایه آن استوار هستند.

در ادامه نحوه استفاده مباحث مهم در numpy  را مرور می کنیم ولی برای تسلط بیشتر و یادگیری همه جانبه ماژول نامپای به مقاله “مرجع کامل ماژول numpy – داده کاوی با numpy” مراجعه کنید.

نصب و ایمپورت ماژول numpy

به راحتی در خط فرمان با تایپ عبارت زیر می توان آن را نصب کرد:

وارد کردن ماژول به داخل کد

 

تعریف ماتریس دلخواه در پایتون

لازم به ذکر است که المان همان درآیه های ماتریس می باشد.

به ترتیب تعریف ماتریس یک بعدی، دو بعدی و سه بعدی به صورت زیر می شود

اینکار را تا ابعاد بی نهایت می توان ادامه داد.

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

در خروجی چنین چیزی خواهی دید:

[[[1 2 3]
[4 5 6]
[7 8 9]]

[[1 2 3]
[4 5 6]
[7 8 9]]]

دسترسی به المان های مختلف آرایه

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

استخراج مقادیر در سطر و ستون های مختلف 

array([1, 4, 7])

array([1, 2, 3])

1

9

array([2, 5])

 

اتریبیوت های مهم کلاس numpy

تعداد محور های یک آرایه (یعنی ماتریس چند بعدی است)

3

ابعاد یک آرایه (یعنی ماتریس چند در چند است)

(2, 3, 3)

تعداد کل المان های ماتریس

18

 

ایجاد انواع آرایه با numpy

ایجاد ماتریس صفر

ماتریس صفر ماتریسی است که تمام درآیه (المان) های آن صفر است.

array([[0., 0., 0., 0.],
[0., 0., 0., 0.],
[0., 0., 0., 0.]])

ایجاد ماتریس یک

ماتریس یک آرایه ای است که تمام المان های آن یک باشد.

array([[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]],

[[1, 1, 1, 1],
[1, 1, 1, 1],
[1, 1, 1, 1]]], dtype=int16)

ایجاد دنباله ای از اعداد

array([10, 15, 20, 25])

array([0. , 0.25, 0.5 , 0.75, 1. , 1.25, 1.5 , 1.75, 2. ])

 

تغییر ابعاد آرایه numpy

فرض کنید می خواهیم یک ماتریس 4 در 5 حاوی دنباله ای از اعداد 1 تا 20 داشته باشیم، به این صورت عمل می کنیم:

array([ 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19, 20])

سپس

array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20]])

 

اعمال ریاضی روی آرایه ها در numpy

با فرض تعریف دو ماتریس زیر :

[[11 12 13 14]
[21 22 23 24]
[31 32 33 34]
[41 42 43 44]]

 

[[ 0 1 2 3]
[ 4 5 6 7]
[ 8 9 10 11]
[12 13 14 15]]

اعمال ریاضی مهم به صورت زیر است:

جمع و تفریق دو ماتریس

[[11 13 15 17]
[25 27 29 31]
[39 41 43 45]
[53 55 57 59]]

[[11 11 11 11]
[17 17 17 17]
[23 23 23 23]
[29 29 29 29]]

ضرب دو ماتریس به صورت ماتریسی

array([[ 320, 370, 420, 470],
[ 560, 650, 740, 830],
[ 800, 930, 1060, 1190],
[1040, 1210, 1380, 1550]])

ضرب دو ماتریس به صورت درآیه به درآیه

array([[ 0, 12, 26, 42],
[ 84, 110, 138, 168],
[248, 288, 330, 374],
[492, 546, 602, 660]])

ضرب ماتریس در یک عدد

array([[110, 120, 130, 140],
[210, 220, 230, 240],
[310, 320, 330, 340],
[410, 420, 430, 440]])

تقسیم دو ماتریس هم اندازه به صورت درایه به درایه 

array([[0. , 0.08333333, 0.15384615, 0.21428571],
[0.19047619, 0.22727273, 0.26086957, 0.29166667],
[0.25806452, 0.28125 , 0.3030303 , 0.32352941],
[0.29268293, 0.30952381, 0.3255814 , 0.34090909]])

تقیسم ماتریس بر یک عدد

درواقع تقیسم تمام درایه ها بر یک عدد

array([[1.1, 1.2, 1.3, 1.4],
[2.1, 2.2, 2.3, 2.4],
[3.1, 3.2, 3.3, 3.4],
[4.1, 4.2, 4.3, 4.4]])

عمل های آماری مهم روی ماتریس

عملگر های آماری درواقع تنها روی یک ماتریس اعمال می شود. برای مثال ماتریس زیر را در نظر بگیرید:

محاسبه مین و ماکس

استخراج مقدار مینیمم و ماکزیمم ماتریس به صورت کلی 

0.96496645

0.1305674

 

استخراج مقدار مینیمم و ماکزیمم ماتریس در راستای محورها

به همان صورت بالاست فقط داخل پرانتز شماره محور مورد نظر قرار می گیرد.

 

جمع المان های یک ماتریس

به صورت کلی 

3.47760015

در راستای یک محور

array([0.28378436, 1.6466191 , 1.54719669])

میانگین المان های ماتریس

به صورت کلی 

0.579600025

در راستای یک محور 

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

array([0.14189218, 0.82330955, 0.77359835])

انحراف معیار و واریانس

انحراف معیار

array([0.24833423, 0.37209835])

array([0.06166989, 0.13845718])

 

آشنایی و داده کاوی با پانداز Pandas

پس از آشنایی و فراگیری ماژول اساسی numpy نوبت به ماژول پانداز یا pandas که مهمترین ابزار داده کاوی با پایتون است می رسد. در ادامه مهمترین مباحث در این کتابخانه را بررسی می کنیم.

برای تسلط کامل به به کتابخانه پانداز در پایتون حتما مقاله مربوطه یعنی قسمت اول: مروری بر ماژول تحلیل داده و ساختار ساز Pandas را مطالعه کنید.

ماژول پانداز به زبان ساده چیست؟

اگرچه ماژول numpy قابلیت استفاده از آرایه ها و ماتریس ها و کار با داده را در اختیار مهندسان داده قرار می دهد اما راحتی و قابلیت های آن محدود است، در حالی که کتابخانه پانداز قابلیت ایجاد ساختار های داده همراه با قابلیت های منعطف بسیاری را می دهد. به زبان ساده ماژول pandas قابلیتی همچون صفحات excel را می دهد که به راحتی می توان با کمک آن داده ها را فیلتر کرد، جستجو کرد، اضافه کرد و یا آن ها را به هم چسباند.

برای تسلط عمیق به ماژول pandas  همراه با انجام پروژه های داده کاوی توصیه میکنم دوره جامع داده کاوی و یادگیری ماشین من را از این لینک تهیه و مشاهده کنید.

 

نصب ماژول pandas

مانند تمام ماژول های پایتون این ماژول هم به راحتی از طریق خط فرمان و ابزار  pip قابل نصب است. بنابراین در ویندوز با باز کردن cmd و در لینوکس و مک با باز کردن ترمینال دستور زیر را تایپ کنید:

قبل از شروع لازم است تا ماژول های لازم را فراخوانی کنید به این صورت :

 

ساختار ها در پایتون

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

  • ساختار Series: همان آرایه های یک بعدی است که دارای برچسب (یا شماره گذاری) است.
  • ساختار DataFrame: این ساختار بسیار پرکاربردی است که برای تعریف ساختار های دوبعدی دارای برچسب روی محور مناسب است.
  • ساختار Panel: برای داده های سه بعدی مورد استفاده قرار میگیرد.

 

تعریف ساختار Series

0 3.0

1 5.0

2 2.0

3 NaN

4 6.0

dtype: float64

 

تعریف ساختارDataFrame

A B C D

2013-04-04 -1.567549 -0.947035 -1.274456 0.992109

2013-04-05 1.977357 -0.972386 -1.247894 0.074602

2013-04-06 -0.060793 0.035156 2.181526 0.032502

2013-04-07 0.409941 -0.059565 -0.509266 0.478243

2013-04-08 -1.938009 -1.165169 -0.830520 2.521896

2013-04-09 2.490081 1.255505 0.376431 -0.413285

 

در این دستور index برچسب گذاری ( یا شماره گذاری) سطر ها را انجام می دهد که اینجا براساس سری زمانی (همان تاریخ ها) که تعریف کردیم صورت گرفته است. با استفاده از مشخصه columns ستون ها را نام گذاری می کنیم. طریقه دیگر نام گذاری به این صورت است :

A B C D

2013-04-04 -1.567549 -0.947035 -1.274456 0.992109

2013-04-05 1.977357 -0.972386 -1.247894 0.074602

2013-04-06 -0.060793 0.035156 2.181526 0.032502

2013-04-07 0.409941 -0.059565 -0.509266 0.478243

2013-04-08 -1.938009 -1.165169 -0.830520 2.521896

2013-04-09 2.490081 1.255505 0.376431 -0.413285

 

همانطور که تا اینجا متوجه شدید، اصلی ترین کار ماژول pandas دادن ساختار به داده هاست به صورتی مانند برنامه excel، که در این صورت کار با داده ها بسیار راحت تر و خوانا تر خواهد بود.

 

نمایش قسمت ابتدایی یا انتهایی داده ها

این دستورات زمانی مناسب است که داده بسیار طولانی است و فقط جهت اطمینان می خواهیم قسمت ابتدایی یا انتهایی داده ها را ببینیم:

C1 C2 C3 C4

2013-04-04 -1.054321 -0.387419 1.310832 -0.082377

2013-04-05 -0.390285 0.670329 -0.504397 0.523073

2013-04-06 1.288481 -0.872457 -1.885817 -0.016890

2013-04-07 -1.265296 -1.319355 -0.620387 -0.000344

2013-04-08 -1.545779 -0.036949 0.873803 1.669824

C1 C2 C3 C4

2013-04-05 -0.390285 0.670329 -0.504397 0.523073

2013-04-06 1.288481 -0.872457 -1.885817 -0.016890

2013-04-07 -1.265296 -1.319355 -0.620387 -0.000344

2013-04-08 -1.545779 -0.036949 0.873803 1.669824

2013-04-09 -0.476770 -1.056495 0.581996 -1.839315

 

نمایش داده ها 

array([[ -1.05432051e+00, -3.87419319e-01, 1.31083200e+00,

-8.23770737e-02],

[ -3.90285106e-01, 6.70328803e-01, -5.04397100e-01,

5.23072762e-01],

[ 1.28848140e+00, -8.72457369e-01, -1.88581697e+00,

-1.68899585e-02],

[ -1.26529570e+00, -1.31935537e+00, -6.20386748e-01,

-3.43917292e-04],

[ -1.54577923e+00, -3.69491200e-02, 8.73803393e-01,

1.66982434e+00],

[ -4.76769654e-01, -1.05649497e+00, 5.81996472e-01,

-1.83931453e+00]])

 

نمایش سریع یک خلاصه آماری از داده ها

C1 C2 C3 C4

count 6.000000 6.000000 6.000000 6.000000

mean -0.573995 -0.500391 -0.040661 0.042329

std 1.016366 0.737091 1.183741 1.135017

min -1.545779 -1.319355 -1.885817 -1.839315

25% -1.212552 -1.010486 -0.591389 -0.066005

50% -0.765545 -0.629938 0.038800 -0.008617

75% -0.411906 -0.124567 0.800852 0.392219

max 1.288481 0.670329 1.310832 1.669824

 

ترنهاده (ترانسپوز) داده ها

 

مرتب سازی

مرتب سازی براساس یکی از محور ها

C4 C3 C2 C1

2013-04-04 -0.082377 1.310832 -0.387419 -1.054321

2013-04-05 0.523073 -0.504397 0.670329 -0.390285

2013-04-06 -0.016890 -1.885817 -0.872457 1.288481

2013-04-07 -0.000344 -0.620387 -1.319355 -1.265296

2013-04-08 1.669824 0.873803 -0.036949 -1.545779

2013-04-09 -1.839315 0.581996 -1.056495 -0.476770

مرتب سازی براساس مقادیر ستون ها

C1 C2 C3 C4

2013-04-08 -1.545779 -0.036949 0.873803 1.669824

2013-04-07 -1.265296 -1.319355 -0.620387 -0.000344

2013-04-04 -1.054321 -0.387419 1.310832 -0.082377

2013-04-09 -0.476770 -1.056495 0.581996 -1.839315

2013-04-05 -0.390285 0.670329 -0.504397 0.523073

2013-04-06 1.288481 -0.872457 -1.885817 -0.016890

دسترسی به سلول ها در سطر و ستون های دلخواه

 

انتخاب یک ستون خاص

2013-04-04 -1.054321

2013-04-05 -0.390285

2013-04-06 1.288481

2013-04-07 -1.265296

2013-04-08 -1.545779

2013-04-09 -0.476770

Freq: D, Name: C1, dtype: float64

انتخاب ردیف مورنظر

C1 C2 C3 C4

2013-04-05 -0.390285 0.670329 -0.504397 0.523073

2013-04-06 1.288481 -0.872457 -1.885817 -0.016890

دسترسی به مقادیر مختلف با استفاده از نام سطر یا ستون خاص

C1 C3

2013-04-04 -1.054321 1.310832

2013-04-05 -0.390285 -0.504397

2013-04-06 1.288481 -1.885817

2013-04-07 -1.265296 -0.620387

2013-04-08 -1.545779 0.873803

2013-04-09 -0.476770 0.581996

 

دسترسی به مقادیر مختلف با استفاده از شماره سطر یا ستون خاص

C1 C2

2013-04-07 -1.265296 -1.319355

2013-04-08 -1.545779 -0.036949

 

جدا کردن و اتصال دیتافریم ها

0 1 2 3

0 -0.458359 -0.736636 -0.311574 0.251951

1 1.468506 0.862792 -0.572351 1.555926

2 0.640958 0.321420 -0.315744 0.834304

3 -1.926201 0.688985 0.489746 0.491300

4 1.494904 0.204955 -1.991027 -0.185517

5 0.558215 0.517445 0.225052 0.384150

6 -1.684241 -0.015076 1.025494 0.234759

7 -0.140998 -0.332382 1.111879 -1.536328

8 -0.411723 0.921607 -0.971322 0.179022

9 -0.768895 1.066320 0.953232 -0.345571

 

گروه بندی دیتا فریم

C D

A

bar 0.93372 2.436460

foo 0.47170 -2.895271

در صورت استفاده از مطالب این سایت لطفا به سایت ارجاع دهید

دیدگاه شما

( الزامي )

(الزامي)