Ο απόλυτος οδηγός για τα πάντα για την επιστήμη των δεδομένων!

Ο απόλυτος οδηγός για τα πάντα για την επιστήμη των δεδομένων!

September 29, 2022 0 Von admin

Αυτό το άρθρο δημοσιεύτηκε ως μέρος του Data Science Blogathon.

Εισαγωγή

Κάθε μέρα παράγονται 2,5 εκατομμύριο byte δεδομένων! Σκεφτείτε πόσα μπορούμε να συμπεράνουμε από αυτό και τι συμπεράσματα μπορούμε να βγάλουμε. Περίμενε! Αλλά, πώς αντιμετωπίζουμε έναν τόσο τεράστιο όγκο δεδομένων;

Τι ακριβώς είναι όμως το Pandas και γιατί πρέπει να το χρησιμοποιούμε;

Το Pandas είναι μια βιβλιοθήκη Python που χρησιμοποιείται για εργασία με μεγάλες ποσότητες δεδομένων σε διάφορες μορφές, όπως αρχεία CSV, αρχεία TSV, φύλλα Excel και ούτω καθεξής. Διαθέτει λειτουργίες για την ανάλυση, τον καθαρισμό, την εξερεύνηση και την τροποποίηση δεδομένων. Τα Panda μπορούν να χρησιμοποιηθούν για διάφορους σκοπούς, συμπεριλαμβανομένων των εξής:

  • Τα δεδομένα του πραγματικού κόσμου δεν είναι ποτέ τέλεια και απαιτούν πολλή δουλειά. η βιβλιοθήκη Pandas κάνει αυτή την εργασία ευκολότερη και ταχύτερη, καθιστώντας τα σύνολα δεδομένων πιο σχετικά και πιο καθαρά.
  • Διαθέτει ένα ισχυρό σύνολο χαρακτηριστικών που μπορείτε να εφαρμόσετε στα δεδομένα σας για να τα προσαρμόσετε, να τα επεξεργαστείτε και να τα περιστρέψετε σύμφωνα με τις προτιμήσεις σας. Αυτό κάνει πολύ πιο εύκολο να αξιοποιήσετε στο έπακρο τα δεδομένα σας.
  • Σας επιτρέπει επίσης να αναπαραστήσετε δεδομένα με πολύ απλοποιημένο τρόπο. Αυτό βοηθά στην ανάλυση δεδομένων και στην ικανότητα .

Αυτά είναι μερικά μόνο από τα πολλά οφέλη της βιβλιοθήκης Pandas. Λοιπόν, ας εμβαθύνουμε σε αυτή τη βιβλιοθήκη και ας ζήσουμε όλα τα οφέλη που αναφέρονται! Ακούγεται ενδιαφέρον, δεν νομίζετε; Η μάθηση για τη Βιβλιοθήκη Pandas θα σας κεντρίσει το ενδιαφέρον.😁

Εγκατάσταση Pandas

Για να μάθετε για τη βιβλιοθήκη Pandas, πρέπει πρώτα να την εγκαταστήσετε στο σύστημά σας. Για να το κάνετε αυτό, εγκαταστήστε το Anaconda και, αφού εγκατασταθεί, εισαγάγετε τον ακόλουθο κωδικό στη γραμμή εντολών του Anaconda.

conda install pandas

Τώρα που εγκαταστήσαμε τα Panda στο σύστημά μας, ας δούμε τις δομές δεδομένων που περιέχει.

Δομές δεδομένων στα Pandas

Η βιβλιοθήκη Pandas ασχολείται με τις ακόλουθες δομές δεδομένων:

  1. Πλαίσιο δεδομένων Pandas:

Όποτε υπάρχει ένα σύνολο δεδομένων με τουλάχιστον δύο στήλες και οποιονδήποτε αριθμό εγγραφών (γραμμών), τότε είναι γνωστό ως Πλαίσιο δεδομένων.

  1. Σειρά Pandas:

Όποτε υπάρχει ένα σύνολο δεδομένων με μία μόνο στήλη με οποιονδήποτε αριθμό εγγραφών (γραμμών), τότε είναι γνωστό ως α Σειρά.

κωδικά πάντα
ΕΙΚΟΝΑ 1

Εισαγωγή The Pandas Library

Πριν μάθετε και χρησιμοποιήσετε τις λειτουργίες των Pandas, είναι απαραίτητο να εισαγάγετε πρώτα τη βιβλιοθήκη Pandas libraryPandas. Το κάνουμε γράφοντας τον ακόλουθο κώδικα στο σημειωματάριό μας Jupyter:

import pandas as pd

Σημείωση: „pd“ χρησιμοποιείται ως ψευδώνυμο, ώστε το πακέτο Pandas να μπορεί να αναφέρεται ως „pd“ αντί «Πάντα».

Τώρα που έχουμε εγκαταστήσει τα Pandas και τα εισαγάγαμε επίσης στο σημειωματάριό μας Jupyter, μπορούμε τώρα να εξερευνήσουμε τις διάφορες λειτουργίες των Panda.

Εισαγωγή δεδομένων

Πριν εργαστούμε σε δεδομένα, πρέπει πρώτα να τα εισαγάγουμε. Η βιβλιοθήκη Pandas έχει μια ποικιλία εντολών για την αντιμετώπιση διαφορετικών μορφών δεδομένων. Θα μάθουμε για μια τέτοια εντολή που ασχολείται με αρχεία CSV.

1. read_csv()

  • ο pd.read_csv() Η εντολή χρησιμοποιείται για την ανάγνωση ενός αρχείου CSV στο πλαίσιο δεδομένων.

Κωδικός Python:

Το σύνολο δεδομένων που χρησιμοποιείται είναι Αυτό.

Προβολή/Επιθεώρηση δεδομένων με Pandas

Πριν εργαστείτε με τα δεδομένα σας, είναι απαραίτητο να γνωρίζετε σωστά τα δεδομένα σας. Τα πάντα σας βοηθούν να το κάνετε:

1. κεφάλι() και ουρά()

Η παραπάνω έξοδος δεν είναι πολύ ενδιαφέρουσα για παρακολούθηση. Ας προσπαθήσουμε να δούμε μόνο τις πρώτες ή τις τελευταίες εγγραφές του συνόλου δεδομένων μας. Μπορούμε να το κάνουμε χρησιμοποιώντας τις ακόλουθες εντολές Pandas.

  • ο df.head() Η εντολή μας βοηθά να προβάλουμε τις κορυφαίες 5 εγγραφές (προεπιλεγμένη τιμή) του συνόλου δεδομένων μας. Εάν θέλετε να δείτε περισσότερα από 5, μπορείτε να το κάνετε πληκτρολογώντας – df.head(n) όπου n είναι ο αριθμός των εγγραφών που θέλετε να προβάλετε.
df.head()
panda εξόδου κωδικού
  • ο df.tail() Η εντολή μας βοηθά να δούμε τις τελευταίες 5 εγγραφές (προεπιλεγμένη τιμή) του συνόλου δεδομένων μας. Εάν θέλετε να δείτε περισσότερα από 5, μπορείτε να το κάνετε πληκτρολογώντας – df.tail(n) όπου n είναι ο αριθμός των εγγραφών που θέλετε να προβάλετε.
df.tail()
panda εξόδου κωδικού

2. σχήμα

  • ο δφ.σχήμα Η εντολή σάς παρέχει τον αριθμό των γραμμών και στηλών στο σύνολο δεδομένων σας.
df.shape()
panda εξόδου κωδικού

3. πληροφορίες()

  • ο df.info() Η εντολή εκτυπώνει τις πληροφορίες σχετικά με το σύνολο δεδομένων μας, συμπεριλαμβανομένων στηλών, τύπων δεδομένων στηλών, μη μηδενικών τιμών και χρήσης μνήμης.
df.info()
panda εξόδου κωδικού

4. περιγραφή ()

  • ο df.describe() Η εντολή υπολογίζει μια σύνοψη στατιστικών για τις στήλες του πλαισίου δεδομένων. Αυτή η συνάρτηση επιστρέφει τις τιμές μέτρησης, μέσης τιμής, τυπικής απόκλισης και διατεταρτημορίου εύρους (IQR).
df.describe()
panda εξόδου κωδικού

5. nunique()

  • ο df.nunique Η εντολή επιστρέφει τον αριθμό των μοναδικών καταχωρήσεων σε κάθε στήλη.
df.nunique()
panda εξόδου κωδικού

Επιλογή Δεδομένων

Συχνά δεν θέλετε να εργαστείτε μόνο με ένα υποσύνολο ολόκληρου του συνόλου δεδομένων. Σε τέτοιες περιπτώσεις, χρησιμοποιήστε τις ακόλουθες εντολές:

1. δφ[col]

  • ο df[col] εντολή επιστρέφει τη στήλη με την καθορισμένη ετικέτα ως σειρά.
# selecting the column 'title' 
df['title']
έξοδος κώδικα

2. δφ[[col1,col2]]

  • ο df[[col1, col2]] επιστρέφει στήλες ως πλαίσιο δεδομένων.
# selecting the columns 'title' and 'mediaType'
df[['title', 'mediaType']]
έξοδος κωδικού |  παντα

3. τοπ[ ]

  • ο df.loc[ ] Η εντολή σάς βοηθά να αποκτήσετε πρόσβαση σε μια ομάδα γραμμών και στηλών. Το loc βασίζεται σε ετικέτες, πράγμα που σημαίνει ότι πρέπει να καθορίσετε σειρές και στήλες με βάση τις ετικέτες σειρών και στηλών τους. Περιλαμβάνει τα άκρα, δηλ. df.loc[0:4] θα επιστρέψει όλες τις σειρές από 0-4 (συμπεριλαμβάνονται).
# selecting all the rows from 0-4 and the associated columns
df.loc[ :4]
# selecting all the rows and the column named 'title'
df.loc[: , 'title']
έξοδος κώδικα
# selecting all the rows from 1-5 and the columns named 'title' and 'rating'
df.loc[1:5, ['title', 'rating'] ]
panda εξόδου κωδικού
# selecting all the rows and columns with entries having rating > 4.5 
df.loc[df['rating'] > 4.5]
έξοδος κώδικα

4. iloc[ ]

  • ο df.iloc[ ] Η εντολή σας βοηθά επίσης να αποκτήσετε πρόσβαση σε μια ομάδα γραμμών και στηλών. Ωστόσο, σε αντίθεση με το loc, το iloc βασίζεται σε ακέραιο αριθμό θέσης, επομένως πρέπει να καθορίσετε σειρές και στήλες από τις ακέραιες τιμές θέσης τους. Εξαιρεί τα άκρα, δηλ. df.iloc[0:4] θα επιστρέψει όλες τις σειρές από 0-3 καθώς εξαιρείται η 4.
# selecting all the rows from 0-4(excluded) and the associated columns
df.iloc[0:4]
panda εξόδου κωδικού
# selecting all the rows and columns
df.iloc[: , :]
έξοδος κώδικα
# selecting all the rows and columns from 0-4(excluded)
df.iloc[0:4, 0:4]
έξοδος κώδικα
# selecting all the rows from 0-10(excluded) and the 0th, 2nd, and 5th columns
df.iloc[ 0:10, [0, 2, 5] ]
έξοδος κώδικα
# selecting the 3rd, 4th, and 5th rows and the 0th and 2nd columns
df.iloc[[3, 4, 5], [0, 2]]
έξοδος κώδικα

Φιλτράρισμα, ταξινόμηση και ομαδοποίηση

Όταν εργάζεστε με σύνολα δεδομένων, θα αντιμετωπίσετε περιστάσεις κατά τις οποίες πρέπει να ταξινομήσετε, να φιλτράρετε ή ακόμα και να ομαδοποιήσετε τα δεδομένα σας για να είναι πιο κατανοητά. Οι εντολές που αναφέρονται παρακάτω θα σας βοηθήσουν σε αυτό:

1. δφ[df[col] χειριστής αριθμός]

  • ο df[df[col] χειριστής αριθμός] Η εντολή σάς βοηθά να φιλτράρετε εύκολα δεδομένα.
# selecting all the records where column 'watched' > 1000
df[df['watched] > 1000]
έξοδος κώδικα
# selecting all the records where column 'watched' < 100
df[df['watched'] < 100]
έξοδος κωδικού |pandas
# filtering out with multiple conditions.
# selecting all the records where 'watched' > 1000 and 'eps' = 10
df[(df['watched'] > 1000) & (df['eps'] == 10)]
έξοδος κώδικα

2. sort_values()

  • ο df.sort_values() Η εντολή βοηθά στην ταξινόμηση των δεδομένων σας με αύξοντα ή φθίνοντα τρόπο.
# sorting the values of the column 'eps' in ascending manner(default)
df.sort_values('eps')
έξοδος κωδικού |pandas
# sorting the values of the column 'eps' in descending manner
df.sort_values('eps' , ascending = False)
έξοδος κώδικα
# sorting multiple columns in ascending and descending manner
# sorting the column 'eps' in ascending order and 'duration' in descending order
df.sort_values(['eps', 'duration'], ascending = [True, False])
έξοδος κώδικα

3. Groupby()

  • ο df.groupby() Η εντολή βοηθά στο διαχωρισμό των δεδομένων σε ξεχωριστές ομάδες και σας επιτρέπει να εκτελείτε λειτουργίες σε αυτές τις ομάδες.
# the below code means we want to analyze our data by different "eps" values. 
# the below code returns a DataFrameGroupBy object
df_groupby_eps = df.groupby('eps')
df_groupby_eps
έξοδος κωδικού |pandas
# using the size() attribute 
# it will display the group sizes [there are 7307 animes having only 1 episode and so on]
df_groupby_eps.size()
έξοδος κωδικού |pandas
# using the get_group() attribute
# it will retrieve one of the created groups
# it will display the anime that has 500 episodes
df_groupby_eps.get_group(500.0)
panda εξόδου κωδικού
# making use of aggregate functions to compute on grouped data
# applying the mean function on the grouped data
df_groupby_eps.mean()
έξοδος κωδικού |  παντα
# using the agg() function
# we can apply different aggregate functions.
# the below code will display the maximum and minimum rating of animes which are grouped by their votes.
df.groupby('votes').rating.agg(['max', 'min])
panda εξόδου κωδικού

Καθαρισμός δεδομένων

Εάν οι μεγαλύτεροι σας έχουν προειδοποιήσει για το πώς ο πραγματικός κόσμος δεν είναι αυτός που πιστεύουμε ότι είναι, πώς είναι ακατάστατος και ανερμήνευτος, τότε επιτρέψτε μου να προσθέσω κάτι ακόμα σε αυτόν. Τα δεδομένα του πραγματικού κόσμου είναι ακριβώς τα ίδια: ακατάστατα και ανερμήνευτα. Πρέπει πρώτα να καθαρίσετε τα δεδομένα για να αξιοποιήσετε στο έπακρο τα δεδομένα σας και να συναγάγετε σημαντικές πληροφορίες. Και όπως ανέφερα, οι Pandas είναι ο καλύτερός σου φίλος, οπότε η καλύτερή σου φίλη τα έχει καλύψει όλα.

1. isnull()

  • ο df.isnull() Η εντολή ελέγχει όλες τις μηδενικές τιμές στο σύνολο δεδομένων σας.
# checking for null values
# it will return the dataset with the entries as True / False where True means that this cell has a null value and False means that this cell does not has a null value. 
df.isnull()
έξοδος κωδικού |pandas
# we can use the sum() function with isnull()
# it will return the sum of null values for each column
df.isnull().sum()
έξοδος κώδικα

2. notnull()

ο df.notnull() η εντολή είναι ακριβώς το αντίθετο από df.isnull() εντολή. Αυτή η εντολή θα ελέγξει για τις μη μηδενικές τιμές στο σύνολο δεδομένων.

# returns the dataset with entries as True/False where True means not having a null value and False means having a null value. 
df.notnull()
έξοδος κωδικού |pandas
# using the sum() function
# it will return the sum of all the non null values for each column.
df.notnull().sum()
έξοδος κώδικα

3. drop()

  • ο πτώση() εντολή ρίχνει τις σειρές/στήλες με τις καταχωρήσεις που λείπουν.
# dropping all the rows with missing values
df.dropna()
έξοδος κωδικού |pandas
# using the "axis" parameter
# "axis = 0" (default) means Row and "axis = 1" means Column
# dropping all the columns with missing entries
df.dropna(axis = 1)
έξοδος κώδικα
# using the "how" parameter
# how = "any" means dropping rows/columns having "ANY" missing entries.
# how = "all" means dropping rows/columns having "ALL" missing entries.
# dropping the columns having any missing values.
df.dropna(axis = 1, how = 'any')
έξοδος κωδικού |pandas
# using the "thresh" parameter
# it specifies how many non-null values a row or column must have so as to not be dropped
# keeping only the columns with at least 14000 non-null values
df.dropna(axis = 1, thresh = 14000)
έξοδος κώδικα
# using the "subset" parameter
# it is used for defining in which columns to look for missing values 
# dropping all the rows where the "duration" column is NaN
df.dropna(subset = ['duration'])
έξοδος κωδικού |pandas

ΣΗΜΕΙΩΣΗ : ο πτώση() και γέμισμα() εντολές επιστρέφει ένα αντίγραφο του αντικειμένου σας αντί για το πραγματικό αντικείμενο. Για να ενημερώσετε το αντικείμενό σας , πρέπει να καθορίσετε την τιμή του στη θέση παράμετρος ως True. Μην ανησυχείς, το στη θέση η παράμετρος καλύπτεται παρακάτω.

3. fill()

  • ο df.fillna() Η εντολή κάνει ακριβώς αυτό που υπονοεί το όνομά της: συμπληρώνει τις καταχωρήσεις που λείπουν με κάποια τιμή.
# filling the NaN values with some user specified value
df.fillna(value = "Not Specified")
έξοδος κωδικού |pandas
  • χρησιμοποιώντας την παράμετρο «μέθοδος».
  • καθορίζει πώς θα συμπληρώσουμε τις τιμές που λείπουν
  • μέθοδος = ‚γέμισμα’/ ‚μπλήρωση‘
  • Το „fill“ σημαίνει εμπρός γέμισμα
  • Το „bfill“ σημαίνει backward fill
έξοδος κώδικα

ΠΩΣ ΛΕΙΤΟΥΡΓΕΙ Η ΜΕΘΟΔΟΣ ΓΕΜΙΣΗΣ

έξοδος κώδικα
ΠΩΣ ΛΕΙΤΟΥΡΓΕΙ Η ΜΕΘΟΔΟΣ BFILL
# executing the ffill method
df.fillna(method = 'ffill')
έξοδος κώδικα
# executing the bfill method
df.fillna(method = 'bfill')
έξοδος κώδικα
# using the "inplace" parameter
# The 'inplace = True' argument means that the data frame has to make changes permanent.
# If you use 'inplace = False' (default), you basically get back a copy 
# This is before using 'inplace = True'
df.dropna().head(2)
df.isnull().sum()
έξοδος κωδικού |  παντα
df.fillna(value = 1).head(2)
df.isnull().sum()
έξοδος κώδικα
# after using 'inplace = True'
df.dropna(inplace = True)
df.isnull().sum()
έξοδος κωδικού |  παντα

ΣΗΜΕΙΩΣΗ: Καθώς όλες οι σειρές με τιμές που λείπουν απορρίπτονται, δεν χρειάζεται να χρησιμοποιηθούν γέμισμα().

4. μετονομασία()

  • ο df.rename() εντολή μας βοηθά στην αλλαγή των ετικετών αξόνων.
# renaming the 'eps' column as 'Episodes'
df.rename(columns = {'eps' : 'Episodes'})
έξοδος κώδικα

Ερώτηση: Μπορείτε να μαντέψετε γιατί οι εγγραφές ξεκινούν από 149 αντί για 0;

Δημιουργία αντικειμένων δοκιμής

Δεν χρειάζεται απαραίτητα να χρησιμοποιείτε προϋπάρχοντα σύνολα δεδομένων. Αντίθετα, μπορείτε να δημιουργήσετε τα δικά σας δοκιμαστικά αντικείμενα και να εκτελέσετε μια σειρά από εντολές για να εξερευνήσετε περαιτέρω αυτήν τη βιβλιοθήκη. Καλύπτεστε σε αυτό από τις ακόλουθες εντολές:

1. DataFrame() & Series()

  • ο pd.DataFrame() εντολή σας βοηθά να δημιουργήσετε το δικό σας πλαίσιο δεδομένων με ευκολία.
  • ο pd.Series() εντολή σας βοηθά να δημιουργήσετε τη δική σας σειρά με ευκολία.
pd.DataFrame({'A' : [1,2,3,4], 'B' : [5,6,7,8], 'C' : [9,10,11,12]})
pd.Series({'a' : 1, 'b' : 2, 'c' : 3, 'd' : 4})
panda εξόδου κωδικού

Στατιστική

Η ικανότητα των Pandas να εφαρμόζουν στατιστικές τεχνικές στα δεδομένα είναι ευεργετική, καθώς βελτιώνει την ανάλυση και την ερμηνεία των δεδομένων. Οι εντολές που αναφέρονται παρακάτω μας βοηθούν να το πετύχουμε αυτό:

1. mean() & median()

  • ο df.mean() και df.median() Οι εντολές επιστρέφουν τη μέση και τη διάμεσο (αντίστοιχα) όλων των στηλών.
df.mean()
df.median()
έξοδος κώδικα |  αρκτοειδές ζώο της ασίας

2. corr()

  • ο df.corr() εντολή επιστρέφει τη συσχέτιση μεταξύ των στηλών.
# correlation can be defined as a relationship between variables.
# it lies between -1 and 1 (inclusive of both the values)
df.corr()
έξοδος κώδικα|  αρκτοειδές ζώο της ασίας

3. std()

  • ο df.std() Η εντολή επιστρέφει την τυπική απόκλιση όλων των στηλών.
df.std()
έξοδος κώδικα

4. max() & min()

  • ο df.max() και df.min() Οι εντολές επιστρέφουν την υψηλότερη και τη χαμηλότερη τιμή σε κάθε στήλη.
df.max()
df.min()
έξοδος κώδικα|  αρκτοειδές ζώο της ασίας
έξοδος κώδικα

Συνδυασμός πλαισίων δεδομένων

Ο συνδυασμός συνόλων δεδομένων είναι απαραίτητος όταν έχετε πολλά σύνολα δεδομένων αλλά θέλετε να μελετήσετε όλα τα δεδομένα τους ταυτόχρονα. Οι εντολές που αναφέρονται παρακάτω μπορεί να είναι χρήσιμες σε αυτό το σενάριο:

1. concat()

  • ο pd.concat() Η εντολή σάς επιτρέπει να συνδυάσετε δεδομένα σε γραμμές ή στήλες.
df2 = pd.DataFrame({'A': ['A0', 'A1', 'A2', 'A3'],
                        'B': ['B0', 'B1', 'B2', 'B3'],
                        'C': ['C0', 'C1', 'C2', 'C3'],
                        'D': ['D0', 'D1', 'D2', 'D3']},
                        index=[0, 1, 2, 3])
df3 = pd.DataFrame({'A': ['A4', 'A5', 'A6', 'A7'],
                        'B': ['B4', 'B5', 'B6', 'B7'],
                        'C': ['C4', 'C5', 'C6', 'C7'],
                        'D': ['D4', 'D5', 'D6', 'D7']},
                         index=[0, 1, 2, 3])
df4 = pd.DataFrame({'A': ['A8', 'A9', 'A10', 'A11'],
                        'B': ['B8', 'B9', 'B10', 'B11'],
                        'C': ['C8', 'C9', 'C10', 'C11'],
                        'D': ['D8', 'D9', 'D10', 'D11']},
                        index=[8,9,10,11])
df2
df3
df4
panda εξόδου κωδικού
pd.concat([df2,df3,df4]) 
κωδικά πάντα
# using the "axis" parameter 
pd.concat([df2,df3,df4], axis = 1)
Κωδικός Pandas

συμπέρασμα

Το Pandas είναι μια από τις πιο χρήσιμες και φιλικές προς το χρήστη βιβλιοθήκες επιστήμης δεδομένων και μηχανικής εκμάθησης. Βοηθά στην απόκτηση ουσιαστικών πληροφοριών από διάφορους τύπους συνόλων δεδομένων. Διαθέτει εξαιρετικά χαρακτηριστικά που, εάν κατανοηθούν σωστά, μπορούν να είναι χρήσιμα κατά την εργασία με δεδομένα και να επιταχύνουν τη διαδικασία. Μην σταματήσετε να μαθαίνετε για αυτήν την απίστευτη βιβλιοθήκη εδώ γιατί η βιβλιοθήκη Pandas έχει πολλές ακόμα ενδιαφέρουσες λειτουργίες με τις οποίες μπορείτε να συμπεράνετε πληροφορίες από δεδομένα σε λίγα λεπτά!

Σας ευχαριστούμε που διαβάσατε!😊

Τα μέσα που εμφανίζονται σε αυτό το άρθρο δεν ανήκουν στο Analytics Vidhya και χρησιμοποιούνται κατά την κρίση του συγγραφέα.