Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas

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

Η βιβλιοθήκη pandas μας παρέχει πολλά χρήσιμα εργαλεία για την εκτέλεση διερευνητικής ανάλυσης δεδομένων (EDA). Αλλά πριν τις χρησιμοποιήσετε, συνήθως πρέπει να ξεκινήσετε με πιο γενικές συναρτήσεις όπως df.describe(). Ωστόσο, πρέπει να σημειωθεί ότι οι δυνατότητες που παρέχονται από τέτοιες λειτουργίες είναι περιορισμένες και τα αρχικά στάδια εργασίας με οποιαδήποτε σύνολα δεδομένων κατά την εκτέλεση του EDA είναι πολύ συχνά πολύ παρόμοια μεταξύ τους.

Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas

Ο συγγραφέας του υλικού που δημοσιεύουμε σήμερα λέει ότι δεν είναι λάτρης της εκτέλεσης επαναλαμβανόμενων ενεργειών. Ως αποτέλεσμα, αναζητώντας εργαλεία για γρήγορη και αποτελεσματική εκτέλεση διερευνητικής ανάλυσης δεδομένων, βρήκε τη βιβλιοθήκη pandas-profiling. Τα αποτελέσματα της δουλειάς του εκφράζονται όχι με τη μορφή ορισμένων μεμονωμένων δεικτών, αλλά με τη μορφή μιας αρκετά λεπτομερούς αναφοράς HTML που περιέχει τις περισσότερες πληροφορίες σχετικά με τα αναλυόμενα δεδομένα που μπορεί να χρειαστεί να γνωρίζετε πριν αρχίσετε να εργάζεστε πιο στενά μαζί του.

Εδώ θα εξετάσουμε τα χαρακτηριστικά της χρήσης της βιβλιοθήκης προφίλ pandas χρησιμοποιώντας το σύνολο δεδομένων Titanic ως παράδειγμα.

Διερευνητική ανάλυση δεδομένων με χρήση πάντα

Αποφάσισα να πειραματιστώ με το προφίλ pandas στο σύνολο δεδομένων του Τιτανικού λόγω των διαφορετικών τύπων δεδομένων που περιέχει και της παρουσίας τιμών που λείπουν σε αυτό. Πιστεύω ότι η βιβλιοθήκη pandas-profiling είναι ιδιαίτερα ενδιαφέρουσα σε περιπτώσεις που τα δεδομένα δεν έχουν ακόμη καθαριστεί και χρειάζεται περαιτέρω επεξεργασία ανάλογα με τα χαρακτηριστικά της. Για να εκτελέσετε με επιτυχία μια τέτοια επεξεργασία, πρέπει να ξέρετε από πού να ξεκινήσετε και τι να προσέξετε. Εδώ είναι χρήσιμες οι δυνατότητες δημιουργίας προφίλ για πάντα.

Αρχικά, εισάγουμε τα δεδομένα και χρησιμοποιούμε panda για να λάβουμε περιγραφικά στατιστικά στοιχεία:

# импорт необходимых пакетов
import pandas as pd
import pandas_profiling
import numpy as np

# импорт данных
df = pd.read_csv('/Users/lukas/Downloads/titanic/train.csv')

# вычисление показателей описательной статистики
df.describe()

Αφού εκτελέσετε αυτό το κομμάτι κώδικα, θα λάβετε αυτό που φαίνεται στο παρακάτω σχήμα.

Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas
Περιγραφικά στατιστικά στοιχεία που ελήφθησαν χρησιμοποιώντας τυπικά εργαλεία panda

Αν και υπάρχουν πολλές χρήσιμες πληροφορίες εδώ, δεν περιέχει όλα όσα θα ήταν ενδιαφέρον να μάθουμε για τα υπό μελέτη δεδομένα. Για παράδειγμα, θα μπορούσε κανείς να υποθέσει ότι σε ένα πλαίσιο δεδομένων, σε μια δομή DataFrame, υπάρχουν 891 σειρές. Εάν αυτό πρέπει να ελεγχθεί, τότε απαιτείται άλλη γραμμή κώδικα για τον προσδιορισμό του μεγέθους του πλαισίου. Αν και αυτοί οι υπολογισμοί δεν απαιτούν ιδιαίτερα πόρους, η συνεχής επανάληψη τους είναι βέβαιο ότι θα σπαταλήσει χρόνο που πιθανώς θα μπορούσε καλύτερα να δαπανηθεί για τον καθαρισμό των δεδομένων.

Διερευνητική ανάλυση δεδομένων χρησιμοποιώντας pandas-profiling

Τώρα ας κάνουμε το ίδιο χρησιμοποιώντας το pandas-profiling:

pandas_profiling.ProfileReport(df)

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

Το πρώτο μέρος της αναφοράς θα περιέχει μια ενότητα Επισκόπηση, που θα παρέχει βασικές πληροφορίες για τα δεδομένα (αριθμός παρατηρήσεων, αριθμός μεταβλητών κ.λπ.). Θα περιέχει επίσης μια λίστα ειδοποιήσεων, ειδοποιώντας τον αναλυτή για πράγματα που πρέπει να δώσει ιδιαίτερη προσοχή. Αυτές οι ειδοποιήσεις μπορούν να παρέχουν ενδείξεις σχετικά με το πού μπορείτε να εστιάσετε τις προσπάθειές σας για εκκαθάριση δεδομένων.

Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas
Ενότητα αναφοράς επισκόπησης

Διερευνητική Ανάλυση Μεταβλητών

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

Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas
Σχετικά με την Αριθμητική Μεταβλητή Ηλικίας

Όπως μπορείτε να δείτε από το προηγούμενο παράδειγμα, το pandas-profiling μας δίνει αρκετούς χρήσιμους δείκτες, όπως το ποσοστό και τον αριθμό των τιμών που λείπουν, καθώς και τα περιγραφικά στατιστικά μέτρα που έχουμε ήδη δει. Επειδή Age είναι μια αριθμητική μεταβλητή, η απεικόνιση της κατανομής της με τη μορφή ιστογράμματος μας επιτρέπει να συμπεράνουμε ότι έχουμε μια κατανομή λοξή προς τα δεξιά.

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

Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas
Σχετικά με τη μεταβλητή κατηγορίας Φύλο

Δηλαδή, αντί να βρει τον μέσο όρο, το ελάχιστο και το μέγιστο, η βιβλιοθήκη με προφίλ pandas βρήκε τον αριθμό των τάξεων. Επειδή Sex — μια δυαδική μεταβλητή, οι τιμές της αντιπροσωπεύονται από δύο κλάσεις.

Αν σας αρέσει να εξετάζετε τον κώδικα όπως εγώ, μπορεί να σας ενδιαφέρει πώς ακριβώς υπολογίζει αυτές τις μετρήσεις η βιβλιοθήκη προφίλ pandas. Το να μάθετε για αυτό, δεδομένου ότι ο κώδικας της βιβλιοθήκης είναι ανοιχτός και διαθέσιμος στο GitHub, δεν είναι τόσο δύσκολο. Δεδομένου ότι δεν είμαι μεγάλος οπαδός της χρήσης μαύρων κουτιών στα έργα μου, έριξα μια ματιά στον πηγαίο κώδικα της βιβλιοθήκης. Για παράδειγμα, αυτός είναι ο μηχανισμός για την επεξεργασία αριθμητικών μεταβλητών, που αντιπροσωπεύεται από τη συνάρτηση περιγραφή_αριθμητικό_1δ:

def describe_numeric_1d(series, **kwargs):
    """Compute summary statistics of a numerical (`TYPE_NUM`) variable (a Series).
    Also create histograms (mini an full) of its distribution.
    Parameters
    ----------
    series : Series
        The variable to describe.
    Returns
    -------
    Series
        The description of the variable as a Series with index being stats keys.
    """
    # Format a number as a percentage. For example 0.25 will be turned to 25%.
    _percentile_format = "{:.0%}"
    stats = dict()
    stats['type'] = base.TYPE_NUM
    stats['mean'] = series.mean()
    stats['std'] = series.std()
    stats['variance'] = series.var()
    stats['min'] = series.min()
    stats['max'] = series.max()
    stats['range'] = stats['max'] - stats['min']
    # To avoid to compute it several times
    _series_no_na = series.dropna()
    for percentile in np.array([0.05, 0.25, 0.5, 0.75, 0.95]):
        # The dropna() is a workaround for https://github.com/pydata/pandas/issues/13098
        stats[_percentile_format.format(percentile)] = _series_no_na.quantile(percentile)
    stats['iqr'] = stats['75%'] - stats['25%']
    stats['kurtosis'] = series.kurt()
    stats['skewness'] = series.skew()
    stats['sum'] = series.sum()
    stats['mad'] = series.mad()
    stats['cv'] = stats['std'] / stats['mean'] if stats['mean'] else np.NaN
    stats['n_zeros'] = (len(series) - np.count_nonzero(series))
    stats['p_zeros'] = stats['n_zeros'] * 1.0 / len(series)
    # Histograms
    stats['histogram'] = histogram(series, **kwargs)
    stats['mini_histogram'] = mini_histogram(series, **kwargs)
    return pd.Series(stats, name=series.name)

Αν και αυτό το κομμάτι κώδικα μπορεί να φαίνεται αρκετά μεγάλο και πολύπλοκο, στην πραγματικότητα είναι πολύ απλό στην κατανόηση. Το θέμα είναι ότι στον πηγαίο κώδικα της βιβλιοθήκης υπάρχει μια συνάρτηση που καθορίζει τους τύπους των μεταβλητών. Εάν αποδειχθεί ότι η βιβλιοθήκη έχει συναντήσει μια αριθμητική μεταβλητή, η παραπάνω συνάρτηση θα βρει τις μετρήσεις που εξετάζαμε. Αυτή η συνάρτηση χρησιμοποιεί τυπικές λειτουργίες panda για εργασία με αντικείμενα του τύπου Series, αρέσει series.mean(). Τα αποτελέσματα των υπολογισμών αποθηκεύονται σε ένα λεξικό stats. Τα ιστογράμματα δημιουργούνται χρησιμοποιώντας μια προσαρμοσμένη έκδοση της συνάρτησης matplotlib.pyplot.hist. Η προσαρμογή έχει ως στόχο να διασφαλίσει ότι η συνάρτηση μπορεί να λειτουργήσει με διαφορετικούς τύπους συνόλων δεδομένων.

Μελετήθηκαν δείκτες συσχέτισης και δειγματοληπτικά δεδομένα

Μετά τα αποτελέσματα της ανάλυσης των μεταβλητών, το pandas-profiling, στην ενότητα Συσχετίσεις, θα εμφανίσει τους πίνακες συσχέτισης Pearson και Spearman.

Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas
Πίνακας συσχέτισης Pearson

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

Τέλος, η αναφορά pandas-profiling, στην ενότητα Sample, εμφανίζει, ως παράδειγμα, ένα κομμάτι δεδομένων που λαμβάνονται από την αρχή του συνόλου δεδομένων. Αυτή η προσέγγιση μπορεί να οδηγήσει σε δυσάρεστες εκπλήξεις, καθώς οι πρώτες λίγες παρατηρήσεις μπορεί να αντιπροσωπεύουν ένα δείγμα που δεν αντικατοπτρίζει τα χαρακτηριστικά ολόκληρου του συνόλου δεδομένων.

Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas
Ενότητα που περιέχει δείγματα δεδομένων υπό μελέτη

Ως αποτέλεσμα, δεν συνιστώ να δώσετε προσοχή σε αυτήν την τελευταία ενότητα. Αντίθετα, είναι καλύτερο να χρησιμοποιήσετε την εντολή df.sample(5), το οποίο θα επιλέξει τυχαία 5 παρατηρήσεις από το σύνολο δεδομένων.

Αποτελέσματα της

Συνοψίζοντας, η βιβλιοθήκη με προφίλ panda δίνει στον αναλυτή ορισμένες χρήσιμες δυνατότητες που θα σας φανούν χρήσιμες σε περιπτώσεις όπου πρέπει να αποκτήσετε γρήγορα μια γενική ιδέα των δεδομένων ή να διαβιβάσετε μια αναφορά ανάλυσης νοημοσύνης σε κάποιον. Ταυτόχρονα, η πραγματική εργασία με δεδομένα, λαμβάνοντας υπόψη τις δυνατότητές τους, εκτελείται, όπως χωρίς τη χρήση pandas-profiling, χειροκίνητα.

Αν θέλετε να ρίξετε μια ματιά στο πώς είναι όλες οι αναλύσεις δεδομένων νοημοσύνης σε ένα σημειωματάριο Jupyter, ρίξτε μια ματιά στο αυτό το έργο μου δημιουργήθηκε χρησιμοποιώντας το nbviewer. Και στο Αυτό Μπορείτε να βρείτε τον αντίστοιχο κώδικα στα αποθετήρια GitHub.

Αγαπητοί αναγνώστες! Από πού ξεκινάτε να αναλύετε νέα σύνολα δεδομένων;

Επιταχύνετε την διερευνητική ανάλυση δεδομένων χρησιμοποιώντας τη βιβλιοθήκη δημιουργίας προφίλ pandas

Πηγή: www.habr.com

Προσθέστε ένα σχόλιο