Importieren Sie mehrere CSV-Dateien in Pandas und verketten Sie sie zu einem DataFrame

Preet Sanghavi 10 Oktober 2023
  1. Was sind Pandas
  2. So lesen Sie einzelne .csv-Dateien mit Pandas
  3. Lesen Sie mehrere CSV-Dateien in Python
  4. Verketten Sie mehrere DataFrames in Python
Importieren Sie mehrere CSV-Dateien in Pandas und verketten Sie sie zu einem DataFrame

In diesem Tutorial erfahren Sie, wie Sie mehrere .csv-Dateien lesen und alle DataFrames zu einem verketten.

In diesem Tutorial werden Pandas verwendet, um die Datendateien zu lesen und die DataFrames zu erstellen und zu kombinieren.

Was sind Pandas

Dieses Paket enthält eine breite Palette von Funktionen zum Lesen einer Vielzahl von Datendateien sowie zum Durchführen von Datenmanipulationstechniken.

Um das Paket pandas auf Ihrem Computer zu installieren, müssen Sie die Eingabeaufforderung/das Terminal öffnen und pip install pandas ausführen.

So lesen Sie einzelne .csv-Dateien mit Pandas

Das Paket pandas bietet eine Funktion zum Lesen einer .csv-Datei.

>>> import pandas as pd
>>> df = pd.read_csv(filepath_or_buffer)

Anhand des Dateipfads liest die pandas-Funktion read_csv() die Datendatei und gibt das Objekt zurück.

>>> type(df)
<class 'pandas.core.frame.DataFrame'>

Lesen Sie mehrere CSV-Dateien in Python

Es gibt keine explizite Funktion, um diese Aufgabe nur mit dem pandas-Modul auszuführen. Wir können jedoch eine rationale Methode entwickeln, um das Folgende auszuführen.

Zunächst benötigen wir den Pfad aller Datendateien. Es ist einfach, wenn sich alle Dateien in einem bestimmten Ordner befinden.

Erstellen einer Liste, in der alle Pfade und Namen der Dateien gespeichert werden.

>>> import pandas as pd
>>> import glob
>>> import os
>>> # This is a raw string containing the path of files
>>> path = r'D:\csv files'
>>> all_files = glob.glob(os.path.join(path, '*.csv'))
>>> all_files
['D:\\csv files\\FILE_1.csv', 'D:\\csv files\\FILE_2.csv']

Im obigen Code wird eine Liste erstellt, die den Dateipfad enthält.

glob-Modul

Verwenden Sie das glob-Modul, um Dateien oder Pfadnamen zu finden, die einem Muster entsprechen. Der glob folgt den Standard-Unix-Pfaderweiterungsregeln, um Muster abzugleichen.

Dieses Modul muss nicht extern installiert werden, da es bereits in Python enthalten ist. Wenn Sie dieses Paket jedoch nicht haben, geben Sie pip install glob2 ein, und Sie sollten loslegen können.

Um Pfade rekursiv aus Verzeichnissen/Dateien und Unterverzeichnissen/Unterdateien abzurufen, können wir die Funktionen glob.glob() und glob.iglob() des glob-Moduls verwenden.

Syntax:

glob.glob(pathname, *, recursive=False)
glob.iglob(pathname, *, recursive=False)

Die Funktion gibt eine Liste mit den Pfaden aller Dateien zurück.

Um beispielsweise alle Dateinamen aus einem bestimmten Pfad abzurufen, verwenden Sie das Sternsymbol * am Ende des Pfads und übergeben es als Zeichenfolge an die Funktion glob.glob('').

>>> for files in glob.glob(r'D:\csv files\*'):
	    print(files)

D:\csv files\FILE_1.csv
D:\csv files\FILE_2.csv
D:\csv files\textFile1.txt
D:\csv files\textFile2.txt

Geben Sie außerdem die Dateierweiterung nach dem Sternchen-Symbol an, um eine gezieltere Suche durchzuführen.

>>> for files in glob.glob(r'D:\csv files\*.csv'):
	    print(files)

D:\csv files\FILE_1.csv
D:\csv files\FILE_2.csv

Was sind Raw-Strings

In Python wird ein Roh-String gebildet, indem einem Literal-String r oder R hinzugefügt wird. Der Backslash (\) ist ein Literalzeichen in Python-Rohzeichenfolgen.

Dies ist nützlich, wenn wir eine Zeichenfolge mit einem umgekehrten Schrägstrich wünschen, aber nicht möchten, dass sie als Escape-Zeichen betrachtet wird.

Zum Beispiel:

Um Sonderzeichen wie Tabulatoren und Zeilenumbrüche darzustellen, verwenden wir den Backslash (\), um den Beginn einer Escape-Sequenz anzuzeigen.

>>> print("This\tis\nnormal\tstring")
This	is
normal	string

Raw-Strings behandeln den Backslash (\) jedoch als Literalzeichen. Zum Beispiel:

>>> print(r"This\tis\nnormal\tstring")
This\tis\nnormal\tstring

os-Modul

Das os-Modul von Python enthält Methoden zum Umgang mit dem Betriebssystem. os ist in den grundlegenden Utility-Modulen für Python enthalten.

Dieses Modul bietet eine portable Methode zur Nutzung der vom Betriebssystem abhängigen Funktionalität. Das os.path-Modul von Python, ein Untermodul des os-Moduls, wird verwendet, um allgemeine Pfadnamen zu manipulieren.

Die Python-Funktion os.path.join() verbindet auf intelligente Weise eine oder mehrere Pfadkomponenten. Mit Ausnahme der letzten Pfadkomponente verkettet dieser Ansatz verschiedene Pfadkomponenten, indem nach jedem nicht leeren Teil genau ein Verzeichnistrennzeichen ("/") gesetzt wird.

Am Ende der letzten zu verknüpfenden Pfadkomponente wird ein Verzeichnistrennzeichen ("/") angefügt ist leer.

Alle zuvor verbundenen Komponenten werden gelöscht, wenn eine Pfadkomponente einen absoluten Pfad darstellt, und das Verbinden geht zu der Komponente über, die den absoluten Pfad darstellt.

Syntax:

os.path.join(path, *path)

Um verschiedene Pfadkomponenten zusammenzuführen, verwenden Sie die Funktion os.path.join().

import os

path = "Users"
os.path.join(path, "Desktop", "data.csv")

Ausgang:

'Users\\Desktop\\data.csv'

Verketten Sie mehrere DataFrames in Python

Verwenden Sie im weiteren Verlauf die von der Funktion glob.glob() zurückgegebenen Pfade, um Daten abzurufen und Datenrahmen zu erstellen. Anschließend werden wir auch die Pandas-Datenrahmenobjekte an die Liste anhängen.

Code:

dataframes = list()

for dfs in all_files:
    data = pd.read_csv(dfs)
    dataframes.append(data)

Eine Liste von Datenrahmen wird erstellt.

>>> dataframes
[dataframe1, dataframe2]

Verketten der Datenrahmen.

Hinweis: Vor dem Verketten der Datenrahmen müssen alle Datenrahmen ähnliche Spalten haben.

pd.concat(dataframes, ignore_index=True)

Die Methode pandas.concat() bewältigt alle intensiven Verkettungsoperationen zusammen mit einer Pandas-Objektachse, mit logischen Operationen (Vereinigung oder Schnittmenge) der Indizes auf der anderen Achse als optionales Extra.

Vollständiger Code:

# importing the required modules
import pandas as pd
import os
import glob

# Path of the files
path = r"D:\csv files"

# joining the path and creating list of paths
all_files = glob.glob(os.path.join(path, "*.csv"))

dataframes = list()

# reading the data and appending the dataframe
for dfs in all_files:
    data = pd.read_csv(dfs)
    dataframes.append(data)

# Concatenating the dataframes
df = pd.concat(dataframes, ignore_index=True)
Preet Sanghavi avatar Preet Sanghavi avatar

Preet writes his thoughts about programming in a simplified manner to help others learn better. With thorough research, his articles offer descriptive and easy to understand solutions.

LinkedIn GitHub

Verwandter Artikel - Python CSV