CSV-bestanden combineren in Python

Csv Bestanden Combineren In Python



Soms staat de gegeven dataset niet in een enkel CSV-bestand. Ze staan ​​allemaal op verschillende Excel-sheets. U weet al dat het beter is om alle reken- of voorbewerkingsactiviteiten op één dataset uit te voeren in plaats van op meerdere datasets. Het vermindert of bespaart de tijd die we nodig hebben om te besteden aan voorverwerkingstaken. Ook wordt u als data-analist of datawetenschapper regelmatig overladen door talloze CSV-bestanden die moeten worden samengevoegd voordat u zelfs maar begint met uw analyse of onderzoek van de beschikbare gegevens. Aan de andere kant is het niet altijd mogelijk dat alle bestanden afkomstig zijn van één of dezelfde gegevensbron en dezelfde kolom-/variabelennamen en gegevensstructuur hebben. Dit bericht leert je om twee of meer CSV-bestanden met een vergelijkbare of verschillende kolomstructuur te combineren.

Waarom CSV-bestanden combineren?

Een dataset kan een verzameling of een groep waarden of getallen zijn die betrekking hebben op een specifiek onderwerp. Zo zijn de toetsresultaten van elke leerling in een bepaalde klas een voorbeeld van een dataset. Vanwege de grootte van grote datasets worden deze vaak opgeslagen in aparte CSV-bestanden voor verschillende categorieën. Als we bijvoorbeeld een patiënt moeten onderzoeken op een specifieke ziekte, moeten we elk onderdeel in overweging nemen, inclusief geslacht, medisch dossier, leeftijd, ernst van de ziekte, enz. Bijgevolg is het combineren van CSV-gegevens vereist om verschillende voorspellende factoren te onderzoeken. aspecten. Het is ook beter om een ​​enkele dataset te bewerken en te beheren in plaats van meerdere datasets tijdens het uitvoeren van de berekenings- of voorverwerkingstaken. Het bespaart geheugen en andere rekenbronnen







Hoe CSV-bestanden in Python te combineren?

Er zijn meerdere manieren en methoden om twee of meer CSV-bestanden in Python te combineren. In het onderstaande gedeelte zullen we de functies append(), concat() en merge() enz. We leren hoe u meerdere CSV-bestanden kunt combineren met een vergelijkbare of variabele kolomstructuur.



Methode # 1: CSV's combineren met vergelijkbare structuren of kolommen

Onze huidige werkdirectory heeft twee CSV-bestanden, 'test1' en 'test2'.



Voorbeeld # 1: de append()-functie gebruiken

Beide CSV-bestanden hebben dezelfde structuur. De functie glob() wordt in deze methode gebruikt om alleen de CSV-bestanden in de werkmap weer te geven. Vervolgens gebruiken we 'pandas.DataFrame.append()' om onze CSV-bestanden te lezen (met een gemeenschappelijke tabelstructuur).





Uitgang:



Met behulp van de append-functie hebben we elke gegevensrij van test2.csv toegevoegd of toegevoegd onder de gegevensrijen van test1.csv, aangezien te zien is dat alle gegevensrijen van het bestand zijn gecombineerd. Om dit dataframe naar CSV te converteren, kunnen we de functie to_csv() gebruiken.

Hiermee wordt een gecombineerd CSV-bestand gemaakt van CSV-bestanden van 'test1' en 'test2' in onze werkdirectory met de opgegeven naam, d.w.z. merged.csv.

Voorbeeld # 2: de functie concat() gebruiken

We importeren eerst de panda's-module. De kaartmethode leest elk CSV-bestand dat we hebben doorgegeven met behulp van pd.read_csv(). Deze toegewezen bestanden (CSV-bestanden) worden vervolgens standaard langs de rijas gecombineerd met de functie pd.concat(). Als we CSV-bestanden horizontaal willen combineren, kunnen we as=1 doorgeven. Als u de negeerindex = True opgeeft, worden er ook doorlopende indexwaarden gemaakt voor het gecombineerde dataframe.

De pd.read_csv() wordt binnen de functie concat() doorgegeven om de CSV-bestanden na aaneenschakeling in het pandas-dataframe te lezen.

We hebben een dataframe verkregen met gecombineerde gegevens van alle CSV-bestanden in de werkmap. Laten we het nu converteren naar een CSV-bestand.

Onze gecombineerde CSV wordt aangemaakt in de huidige directory.

Methode # 2: CSV's combineren met verschillende structuren of kolommen

We bespraken het combineren van CSV-bestanden met dezelfde kolommen en structuur in de eerste methode. Bij deze methode combineren we CSV-bestanden met verschillende kolommen en structuren.

Voorbeeld # 1: functie merge() gebruiken

De functie 'pandas.merge()' in de pandas-module kan twee CSV-bestanden combineren. Samenvoegen verwijst simpelweg naar het combineren van twee datasets tot één dataset op basis van gedeelde kolommen of kenmerken.

We kunnen dataframes op vier verschillende manieren samenvoegen:

  • Binnen
  • Rechts
  • Links
  • Buitenste

Om dit soort samenvoegingen uit te voeren, gebruiken we twee CSV-bestanden.

Houd er rekening mee dat ten minste één kenmerk of kolom door beide CSV-bestanden moet worden gedeeld. Zoals opgemerkt, worden de kolom 'Naam' en enkele van zijn attributen gedeeld door beide CSV-bestanden.

Samenvoegen met behulp van Inner Join

Als u de parameter how='inner' in de functie merge() opgeeft, worden de twee dataframes gecombineerd volgens de opgegeven kolom en wordt vervolgens een nieuw dataframe geleverd dat alleen de rijen bevat met identieke/dezelfde waarden in beide originele dataframes.

Zoals te zien is, heeft de functie beide CSV-bestanden samengevoegd en de rijen geretourneerd op basis van gemeenschappelijke kenmerken van de kolom 'Naam'.

Samenvoegen met Right Outer Join

Wanneer parameter how='right' is opgegeven, worden beide dataframes gecombineerd op basis van de kolom die we hebben opgegeven voor parameter 'on'. En een nieuw dataframe dat alle rijen van het rechter dataframe bevat, inclusief alle rijen waarvoor het linker dataframe geen waarden bevat, wordt geretourneerd, waarbij de kolomwaarde van het linker dataframe is ingesteld op NAN.

Samenvoegen met behulp van Left Outer Join

Als de parameter is opgegeven als 'left', worden de twee dataframes gecombineerd op basis van de opgegeven kolom met behulp van de parameter 'on', waardoor een nieuw dataframe wordt geretourneerd met alle rijen van het linker dataframe en alle rijen met NAN of null-waarden in het juiste dataframe en stelt de rechter dataframe-kolomwaarde in op NAN.

Samenvoegen met volledige outer join

Als how='outer' is opgegeven, worden de twee dataframes gecombineerd, afhankelijk van de kolom die is opgegeven voor de parameter 'on', waarbij een nieuw dataframe wordt geretourneerd dat de rijen van zowel df1- als df2-dataframes bevat en NAN wordt ingesteld als de waarde voor alle rijen waarvoor gegevens ontbreken in een van de dataframes.

Voorbeeld # 2: alle CSV-bestanden in de werkmap combineren

Bij deze methode gebruiken we de glob-module om alle .csv-bestanden te combineren in een Panda DataFrame. Alle bibliotheken moesten eerst geïmporteerd worden. Vervolgens stellen we een pad in voor elk CSV-bestand dat we willen combineren. Het bestandspad is het eerste argument voor de functie os.path.join() in het onderstaande voorbeeld en het tweede argument zijn de padcomponenten of .csv-bestanden die moeten worden samengevoegd. Hier zoekt de uitdrukking '*.csv' elk bestand in de werkmap dat eindigt op de .csv-bestandsextensie en retourneert dit. De functie glob.glob(files join) accepteert een lijst met de namen van de samengevoegde bestanden als invoer en voert een lijst met alle samengevoegde/gecombineerde bestanden uit.

Dit script retourneert een dataframe met gecombineerde gegevens van alle CSV-bestanden in onze werkmap.

Dit dataframe wordt omgezet in een CSV-bestand en de functie to_csv() wordt gebruikt voor deze conversie. Dit nieuwe CSV-bestand zijn de gecombineerde CSV-bestanden die zijn gemaakt op basis van alle CSV-bestanden die zijn opgeslagen in de huidige werkmap.

Conclusie

In dit bericht hebben we besproken waarom we CSV-bestanden moeten combineren. We hebben besproken hoe twee of meer CSV-bestanden kunnen worden gecombineerd in Python. We hebben deze zelfstudie in twee delen verdeeld. In het eerste gedeelte hebben we uitgelegd hoe u de functies append() en concat() kunt gebruiken om CSV-bestanden met dezelfde structuur of kolomnamen te combineren. In het tweede gedeelte hebben we de methode merge(), os.path.join() en de glob-methode gebruikt om CSV-bestanden met verschillende kolommen en structuren te combineren.