[PYTHON] [Empfehlung von Pandas] Ein Beispiel für das Teilen einer Excel-Tabelle mit Hunderttausenden von Zeilen in n CSVs und das Zuweisen von Seriennummern zu jeder Datei von 1.

Ja, lass uns Pandas (Python) verwenden.

Es ist 2020, also werde ich VBA stoppen und Pandas & Python verwenden, um das interne Excel zu verwalten. Das Folgende ist für diejenigen gedacht, die den Python-Einführungsartikel gelesen haben, sodass detaillierte Erklärungen weggelassen werden. Es gibt viele Informationen über Pandas und Python im Internet. Wenn Sie also ein guter Junge sind, der Pandas und Python ausprobieren möchte, sollten Sie es sich ansehen, wenn Sie ein Problem haben.

(Zusätzlicher Hinweis für Studenten?) Während die Stärkung der Compliance angestrebt wurde ...

In der sogenannten Benutzerfirma, in der viele Leute den Namen in TV CM usw. kennen, gibt die Abfrage in Heiseis alten Zugriffen eine Abfrage an eine Datenbank und dann an Dateien mit persönlichen Informationen aus Ausgabe nach Excel ... Danach gibt es Büroarbeiten wie das lokale Ausschneiden und Einfügen und die Verwendung für einen anderen Zweck. Bei börsennotierten Unternehmen wird häufig gesagt, dass solche Arbeiten in Bezug auf die Beschwerde subtil sind (ein Beispiel für eine Beschwerde ist die Klärung, wer persönliche Informationen gesehen hat). Wenn Sie sich in einem solchen Fall beeilen und Access unter Windows auf einem Server wie AWS ausführen und die Verarbeitung der CSV-Ausgabe auf der Serverseite durch geplante Ausführung abschließen, ist die Konformität vorerst in Ordnung. In AWS führe ich ein Skript in Systems Manager aus und füge eine Datei in S3 ... usw. ein. In einem Unternehmen mit altem Access ist jedoch ein VB-Skript angehängt, VBA, das schmerzhaft ist. Daher wird gesagt, dass es durch Pandas & Python ersetzt werden sollte.

[1] Vorarbeiten: Excel-spezifisches Blatt Manuelle Vorbereitung

1-1. Installieren Sie die Bibliothek, damit Sie Excel mit Pandas lesen können

$ pip install xlwt
$ pip install openpyxl

Wenn Sie sich fragen, was pnp ist, googeln Sie bitte verschiedene Dinge aus der Umgebung von nkmk, der Eisenplatte, die Sie im japanischen Kommentar von Pandas & Python nicht entfernen:

https://note.nkmk.me/python-pandas-to-excel/

1-2. Lesen Sie die n-te Excel-Tabelle mit Pandas.

Es wäre praktisch, wenn Sie eine der Excel-Tabellen schnell lesen könnten. Mit Pandas können Sie Excel-Tabellen schnell in einen so genannten DataFrame (df) konvertieren.

n=0 #Bei Pandas 0 von rechts in der Excel-Tabelle,1,2...Angeben.
#Beispiel für das Lesen des n-ten Blattes mit dem Dateinamenziel
df= pd.read_excel(target, sheet_name=n)

, Die Excel-Tabelle wird als DataFrame (df) gelesen, in dem Sie nur einen Teil davon extrahieren oder eine bestimmte Spalte löschen oder hinzufügen können.

[2] Schneiden Sie einen Teil des Datenrahmens aus und nummerieren Sie die Seriennummern von 1 neu.

2-1. Beispiel für die Funktion zur Zuweisung von Seriennummern

So was. Beachten Sie, dass Excel für Seriennummern eine Kultur ist, die bei 1 beginnt, und Pandas eine Kultur, die bei 0 beginnt. Bitte geben Sie den Spaltennamen an, dem Sie die entsprechenden Seriennummern zuweisen möchten.

# new_index_Spalte Spalte(Der Standardwert ist"Ordnungsnummer")に1からOrdnungsnummerを付与する関数 
def getPartDf(df,start, step=5, debug= True, new_index_col="Ordnungsnummer"):
    dfx = df[start:start+step].reset_index()
    dfx[new_index_col] = dfx.index +1 #Die Seriennummer wird erneut angegeben. Wenn Sie dies auf etwas anderes als 1 setzen,
    dfy = dfx.set_index(new_index_col)
    return dfy if debug else dfy.drop("index", axis=1)

Wenn Sie einen DataFrame verwenden, der aus einer lächerlichen Excel-Datei gelesen wurde (wie ich), sollten Sie sicherstellen, dass Sie ihn gelesen haben. Daher haben wir auch einen Debug-Modus, der den ursprünglichen Index beibehält (Hinweis).

2-2. Beispiel für den Aufruf einer Seriennummerierungsfunktion in einer for-Schleife

Verwenden Sie die Bereichsfunktion, um die Schleife in regelmäßigen Schritten zu drehen (step_num).

core_name = """Feile nach dem Ausschneiden"""
step_num= 10000
debug = False

# step_Das Ausschneiden von Excel-Zeilen in separate Dateien nach num.
for i in range(0, len(df), step_num):
    print(f"{i}das ist alles{i+step_num}Weniger als")
    savedDf = getPartDf(df,i, step_num, debug)
    if (debug):
        print(savedDf.head())
    fn = f"{out}/{core_name}{i}_{i+step_num -1}.csv"
    savedDf.to_csv(fn, encoding="cp932")

Brüche werden von Pandas gut behandelt.

Ausführungsbeispiel: Bei der Verarbeitung einer Excel-Tabelle mit Hunderttausenden von Zeilen

If debug = False

Bildschirmausgabe:

0 oder mehr und weniger als 10000
10000 oder mehr und weniger als 20000
20000 oder mehr und weniger als 30000
30.000 oder mehr und weniger als 40.000
40.000 oder mehr und weniger als 50.000
50.000 oder mehr und weniger als 60.000
60.000 oder mehr und weniger als 70.000
(Abkürzung)
len 836543

Teil der Excel-Ausgabedatei (was ist falsch daran, die Erweiterung nicht anzuzeigen ...): 切り出し後.PNG

Die Bearbeitung mit einem großen Excel-Partner nimmt übrigens viel Zeit in Anspruch. Dieser Artikel soll auch während dieser Wartezeit geschrieben worden sein. ..

Recommended Posts

[Empfehlung von Pandas] Ein Beispiel für das Teilen einer Excel-Tabelle mit Hunderttausenden von Zeilen in n CSVs und das Zuweisen von Seriennummern zu jeder Datei von 1.
Verwenden Sie Pandas, um nur die angegebenen Zeilen des Datenrahmens in die Excel-Datei zu schreiben
So fügen Sie eine CSV-Datei mit Pandas in eine Excel-Datei ein