panda's

Hoe deel te nemen aan dataframes in Pandas Python?

Hoe deel te nemen aan dataframes in Pandas Python?
Pandas DataFrame is een tweedimensionale (2D) gegevensstructuur die is uitgelijnd in tabelvorm. Deze DataFrames kunnen worden gecombineerd met verschillende methoden, zoals concat (), merge () en joins. Panda's hebben hoge prestaties en complete join-bewerkingen die lijken op relationele SQL-databases. Met behulp van de samenvoegfunctie kunnen samenvoegbewerkingen worden geïmplementeerd tussen DataFrames-objecten.

We zullen in dit artikel het gebruik van de samenvoegfunctie, de concat-functie en verschillende soorten join-bewerkingen in Pandas python onderzoeken. Alle voorbeelden worden uitgevoerd via de pycharm-editor. Laten we beginnen met de details!

Gebruik van de samenvoegfunctie

De basissyntaxis van de samenvoegfunctie () wordt hieronder gegeven:

pd.merge(df_obj1, df_obj2, how='inner', on=Geen, left_on=Geen, right_on=Geen)

Laten we de details van de parameters uitleggen:

De eerste twee df_obj1 en df_obj2 argumenten zijn de namen van de DataFrame-objecten of tabellen.

De "hoe" parameter wordt gebruikt voor verschillende soorten samenvoegbewerkingen zoals "links, rechts, buiten en binnen". De samenvoegfunctie gebruikt standaard de "innerlijke" join-bewerking.

het argument "Aan" bevat de kolomnaam waarop de samenvoegbewerking wordt uitgevoerd. Deze kolom moet aanwezig zijn in beide DataFrame-objecten.

In de argumenten "left_on" en "right_on" is "left_on" de naam van de kolomnaam als de sleutel in het linker DataFrame. De "right_on" is de naam van de kolom die wordt gebruikt als een sleutel van het rechter DataFrame.

Om het concept van toetreding tot DataFrames nader uit te werken, hebben we twee DataFrame-objecten genomen: product en klant. De volgende details zijn aanwezig in het product DataFrame:

product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['headphones','Tas','Shoes','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)

Het klant DataFrame bevat de volgende details:

klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)

Word lid van DataFrames op een sleutel

We kunnen gemakkelijk producten vinden die online zijn verkocht en de klanten die ze hebben gekocht. Dus, op basis van een sleutel "Product_ID", hebben we de interne join-bewerking op beide DataFrames als volgt uitgevoerd:

# import Panda's-bibliotheek
panda's importeren als pd
product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['koptelefoon','Tas','Schoenen','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Stad':['Lahore','Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
afdrukken (pd.merge(product,customer,on='Product_ID'))

De volgende uitvoer wordt weergegeven in het venster na het uitvoeren van de bovenstaande code:

Als de kolommen in beide DataFrames verschillend zijn, schrijf dan expliciet de naam van elke kolom door de left_on en right_on argumenten als volgt:

panda's importeren als pd
product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['headphones','Tas','Shoes','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Stad':['Lahore','Islamabad', 'Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
afdrukken (pd.merge(product,customer,left_on='Product_Name',right_on='Product_Purchased'))

De volgende uitvoer wordt op het scherm weergegeven:

Word lid van DataFrames met behulp van How Argument

In de volgende voorbeelden zullen we vier soorten Joins-bewerkingen op Pandas DataFrames uitleggen:

Innerlijke Doe mee met Panda's

We kunnen een inner join op meerdere toetsen uitvoeren. Om meer details over de productverkoop weer te geven, neemt u Product_ID, Seller_City van het product DataFrame en Product_ID, en "Customer_City" van het klant DataFrame om te zien dat verkoper of klant tot dezelfde stad behoort. Implementeer de volgende regels code:

# import Panda's-bibliotheek
panda's importeren als pd
product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['koptelefoon','Tas','Schoenen','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
afdrukken (pd.merge(product,customer,how='inner',left_on=['Product_ID','Seller_City'],right_on=['Product_ID','Customer_City']))

Het volgende resultaat wordt in het venster weergegeven na het uitvoeren van de bovenstaande code:

Volledige/buitenste deelname aan Panda's

Outer joins retourneren zowel rechts als links DataFrames-waarden, die ofwel overeenkomsten hebben. Dus, om de outer join te implementeren, stelt u het "hoe" -argument in als outer. Laten we het bovenstaande voorbeeld aanpassen door het outer join-concept te gebruiken. In de onderstaande code retourneert het alle waarden van zowel de linker als de rechter DataFrames.

# import Panda's-bibliotheek
panda's importeren als pd
product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['koptelefoon','Tas','Schoenen','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
afdrukken (pd.merge(product,customer,on='Product_ID',how='outer'))

Stel het indicatorargument in als "True"s. U zult merken dat de nieuwe kolom "_merge" aan het einde is toegevoegd.

# import Panda's-bibliotheek
panda's importeren als pd
product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['koptelefoon','Tas','Schoenen','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
afdrukken (pd.merge(product,customer,on='Product_ID',how='outer',indicator=True))

Zoals u kunt zien in de onderstaande schermafbeelding, leggen de waarden van de samenvoegkolommen uit welke rij bij welk DataFrame hoort.

Links Doe mee met Panda's

Linker join geeft alleen rijen van het linker DataFrame weer.  Het is vergelijkbaar met de buitenste join. Verander dus de 'hoe'-argumentwaarde met "links". Probeer de volgende code om het idee van Left join te implementeren:

# import Panda's-bibliotheek
panda's importeren als pd
product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['koptelefoon','Tas','Schoenen','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
afdrukken (pd.merge(product,customer,on='Product_ID',how='left'))

Rechts Doe mee met Panda's

De rechter join houdt alle juiste DataFrame-rijen aan de rechterkant, samen met de rijen die ook gebruikelijk zijn in het linker DataFrame. In dit geval wordt het "hoe"-argument ingesteld als de "juiste" waarde. Voer de volgende code uit om het juiste join-concept te implementeren:

# import Panda's-bibliotheek
panda's importeren als pd
product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['koptelefoon','Tas','Schoenen','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
afdrukken (pd.merge(product,customer,on='Product_ID',how='right'))

In de volgende schermafbeelding ziet u het resultaat na het uitvoeren van de bovenstaande code:

Samenvoegen van DataFrames met behulp van de functie Concat ()

Twee DataFrames kunnen worden samengevoegd met behulp van de concat-functie. De basissyntaxis van de aaneenschakelingsfunctie wordt hieronder gegeven:

pd.concat([df_obj1, df_obj_2]))

Twee DataFrames-objecten worden als argumenten doorgegeven.

Laten we lid worden van zowel het DataFrames-product als de klant via de concat-functie. Voer de volgende coderegels uit om twee DataFrames samen te voegen:

# import Panda's-bibliotheek
panda's importeren als pd
product=pd.DataFrame(
'Product_ID':[101,102,103,104,105,106,107],
'Product_Name':['headphones','Tas','Shoes','Smartphone','Tandenborstel','polshorloge','Laptop'],
'Categorie':['Elektronica','Mode','Mode','Elektronica','Kruidenierswinkel','Mode','Elektronica'],
'Prijs':[300.0,1000.50,2000.0,21999.0,145.0,1500.0,90999.0],
'Seller_City':['Islamabad','Lahore','Karachi', 'Rawalpindi', 'Islamabad', 'Karachi', 'Faisalabad']
)
klant=pd.DataFrame(
'ID':[1,2,3,4,5,6,7,8,9],
'Customer_Name':['Sara', 'Sana', 'Ali', 'Raees', 'Mahwish', 'Umar', 'Mirha', 'Asif', 'Maria'],
'Leeftijd':[20,21,15,10,31,52,15,18,16],
'Product_ID':[101,0,106,0,103,104,0,0,107],
'Product_Purchased':['headphones','NA','polswatch','NA','Shoes','Smartphone','NA','NA','Laptop'],
'Customer_City':['Lahore','Islamabad','Faisalabad', 'Karachi', 'Karachi', 'Islamabad', 'Rawalpindi', 'Islamabad',
'Lahore']
)
afdrukken (pd.concat([product,klant]))

Conclusie:

In dit artikel hebben we de implementatie van de merge ()-functie, concat ()-functies en de join-bewerking in Pandas python besproken. Met behulp van de bovenstaande methoden kunt u eenvoudig twee DataFrames samenvoegen en leren. hoe de Join-bewerkingen "inner, outer, left, and right" in Panda's te implementeren. Hopelijk helpt deze tutorial je bij het implementeren van de join-bewerkingen op verschillende soorten DataFrames. Laat het ons weten over uw problemen in geval van een fout.

Hoe Xdotool te gebruiken om muisklikken en toetsaanslagen in Linux te stimuleren
Xdotool is een gratis en open source opdrachtregelprogramma voor het simuleren van muisklikken en toetsaanslagen. Dit artikel behandelt een korte hand...
Top 5 ergonomische computermuisproducten voor Linux
Veroorzaakt langdurig computergebruik pijn in uw pols of vingers?? Heb je last van stijve gewrichten en moet je constant de hand schudden?? Voelt u ee...
Hoe de muis- en touchpad-instellingen te wijzigen met Xinput in Linux
De meeste Linux-distributies worden standaard geleverd met de bibliotheek "libinput" om invoergebeurtenissen op een systeem af te handelen. Het kan in...