Λύθηκε: τα πάντα φιλτράρουν τις σειρές με ασαφείς τιμές

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

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

Εγκατάσταση και εισαγωγή απαιτούμενων βιβλιοθηκών

Για να ξεκινήσουμε, θα χρειαστεί να εγκαταστήσουμε και να εισαγάγουμε τις απαραίτητες βιβλιοθήκες. Μπορείτε να χρησιμοποιήσετε το pip για να εγκαταστήσετε και τα Panda και το fuzzywuzzy:

pip install pandas
pip install fuzzywuzzy

Μόλις εγκατασταθεί, εισαγάγετε τις βιβλιοθήκες στον κώδικα Python σας:

import pandas as pd
from fuzzywuzzy import fuzz, process

Φιλτράρισμα σειρών με βάση τις ασαφείς τιμές

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

data = {'Garment': ['T-shirt', 'Polo shirt', 'Jeans', 'Leather jacket', 'Winter coat'],
        'Style': ['Casual', 'Casual', 'Casual', 'Biker', 'Winter']}
df = pd.DataFrame(data)

Υποθέτοντας ότι θέλουμε να φιλτράρουμε σειρές που περιέχουν ρούχα με ονόματα παρόμοια με το "Tee shirt", θα χρειαστεί να χρησιμοποιήσουμε τη βιβλιοθήκη fuzzywuzzy για να το πετύχουμε αυτό.

search_string = "Tee shirt"
threshold = 70

def filter_rows(df, column, search_string, threshold):
    return df[df[column].apply(lambda x: fuzz.token_sort_ratio(x, search_string)) >= threshold]

filtered_df = filter_rows(df, 'Garment', search_string, threshold)

Στον παραπάνω κώδικα ορίζουμε μια συνάρτηση σειρές_φίλτρου που παίρνει τέσσερις παραμέτρους: το DataFrame, το όνομα της στήλης, τη συμβολοσειρά αναζήτησης και το όριο ομοιότητας. Επιστρέφει ένα φιλτραρισμένο DataFrame με βάση το καθορισμένο όριο, το οποίο υπολογίζεται χρησιμοποιώντας το fuzz.token_sort_ratio λειτουργία από τη βιβλιοθήκη fuzzywuzzy.

Κατανόηση του κώδικα βήμα προς βήμα

  • Αρχικά, δημιουργούμε ένα DataFrame που ονομάζεται df που περιέχει το σύνολο δεδομένων μας.
  • Στη συνέχεια, ορίζουμε τη συμβολοσειρά αναζήτησής μας ως "Μαπούνι" και ορίζουμε ένα όριο ομοιότητας 70. Μπορείτε να προσαρμόσετε την τιμή κατωφλίου σύμφωνα με το επιθυμητό επίπεδο ομοιότητας.
  • Στη συνέχεια δημιουργούμε μια συνάρτηση που ονομάζεται σειρές_φίλτρου, το οποίο φιλτράρει το DataFrame με βάση την απόσταση Levenshtein μεταξύ της συμβολοσειράς αναζήτησης και της τιμής κάθε σειράς στην καθορισμένη στήλη.
  • Τέλος, ονομάζουμε το σειρές_φίλτρου λειτουργία για να αποκτήσουμε το φιλτραρισμένο DataFrame μας, filtered_df.

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

Σχετικές αναρτήσεις:

Αφήστε ένα σχόλιο