Vlookup με Python χωρίς τη χρήση Microsoft Excel functions

Vlookup με Python χωρίς τη χρήση Microsoft Excel functions
Vlookup με Python χωρίς τη χρήση Microsoft Excel functions

Το Microsoft Excel είναι πολύ αποδοτικό όταν διαχειρίζεται μικρό όγκο δεδομένων. Απαιτεί όμως τη χρήση functions οι οποίες είναι πολύ εύκολο να τροποποιηθούν κατά λάθος ή να ξεχάσουμε να τις αφαιρέσουμε πριν αποθηκεύσουμε το αποτέλεσμα.

Κάπου εκεί έρχεται η Python που με μερικές γραμμές κώδικα γίνεται να πραγματοποιήσει τις εργασίες που θέλουμε και να εξάγει τα δεδομένα σε αρχείο Excel.

Μια από τις ποιο χρήσιμες και χρησιμοποιούμενες functions είναι η function vlookup (vertical lookup). Η vlookup παρέχει διασύνδεση των σχέσεων μεταξύ διαφορετικών αρχείων Excel ή διαφορετικών φίλων στο Excel. Αυτή την ενέργεια μπορούμε να την κάνουμε εύκολα με την χρήση Python.

Πάμε να δούμε το πρόβλημα που θέλουμε να λύσουμε.

Έχουμε ένα αρχείο Excel με το σύνολο πωλήσεων με όνομα sales.xlsx.

Vlookup με Python χωρίς τη χρήση Microsoft Excel functions

Υπάρχει ένα δεύτερο αρχείο Excel με τα ονόματα των πελατών που ονομάζεται pelates.xlsx.

Vlookup με Python χωρίς τη χρήση Microsoft Excel functions

Θα θέλαμε στο αρχείο sales.xlsx να έχουμε και τα ονόματα των πελάτων, ας δούμε πως γίνεται αυτό.

Πέρα από το να έχουμε εγκαταστήσει την Python, θα χρειαστούμε τις κάτωθι βιβλιοθήκες που γίνονται εύκολα εγκατάσταση με μια εκτέλεση των κάτωθι εντολών στο command prompt.

pip install xlrd
pip install pandas
pip install numpy
pip install openpyxl

Κάνουμε import τις βιβλιοθήκες

import pandas as pd
import numpy as np

Γεμίζουμε 2 μεταβλητές dataframe με τις εγγραφές του κάθε Excel. Με την παράμετρο sheet_name μπορούμε να διαλέξουμε και το φύλο που βρίσκονται τα δεδομένα.

df_pelates = pd.read_excel(‘pelates.xlsx’,sheet_name=’Sheet1′)

df_sales = pd.read_excel(‘sales.xlsx’,sheet_name=’Sheet1′)

Θα πρέπει να κάνουμε μετονομασία  το πεδίο id σε customer_id, ώστε να έχει το ίδιο όνομα που έχει και στο dataframe των sales.

df_pelates.rename(columns={'id':'customer_id'}, inplace=True)

Σε αυτό το βήμα γίνεται ουσιαστικά το vlookup, ενώνουμε και τα 2 dataframes σε ένα καινούργιο (df_final) στο πεδίο customer_id. Στη παράμετρο how δηλώνουμε τον τρόπο που θα γίνει join όπως ισχύει και στην SQL έχουμε επιλογές left,right,outer,inner.

Με την επιλογή right δηλώνουμε ότι θέλουμε όλες τις εγγραφές από το δεύτερο dataframe, συνδέοντας με όσα συνδέονται με το πρώτο.

Αν δεν υπάρχει κοινό customer_id θα έχει την τιμή NaN/Null ή αλλιώς το κενό.

df_final = pd.merge(df_pelates, df_sales, on='customer_id', how='right')

Για να δούμε τα πεδία που έχει τώρα το ενωμένο dataframe.

print(df_final.columns)
Vlookup με Python χωρίς τη χρήση Microsoft Excel functions

Το αποτέλεσμα μέχρι στιγμής είναι αυτό.

print(df_final)
Vlookup με Python χωρίς τη χρήση Microsoft Excel functions

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

df_final = df_final.replace(np.nan, '', regex=True)

Μπορούμε επίσης να διαλέξουμε ποια πεδία από αυτά θα κρατήσουμε.

df_final = df_final[['onoma','epitheto','eidos','posotita','kostos']]

Το τελικό αποτέλεσμα

Και τέλος να εξάγουμε τα αποτελέσματα σε ένα καινούργιο excel.

df_final.to_excel('vlookuped.xlsx', index=False)
Vlookup με Python χωρίς τη χρήση Microsoft Excel functions
Μοιράσου το

Το 1 σκέφτηκε το "Vlookup με Python χωρίς τη χρήση Microsoft Excel functions"

Αφήστε μία απάντηση