[PYTHON] Ich möchte vertikal gehaltene Daten (langer Typ) in horizontal gehaltene Daten (breiter Typ) konvertieren.

Ein Freund von mir, der für ein medizinisches Unternehmen arbeitet, bat mich, eine große Menge langer Daten in breite Daten umzuwandeln. In dieser Branche werden Daten wie Patienten häufig in einem breiten Format dargestellt. Also habe ich ein Konvertierungswerkzeug für Python erstellt und es als Artikel geschrieben.


Unten das Conversion-Bild

Vor der Konvertierung

ID,data,item,
0,100,BPS,
0,200,LDL,
1,20,YBY,
2,XXX,YYY,
2,AAA,BBB,

Nach der Konvertierung

ID   YBY  BBB  BPS     LDL  YYY                              
0     N/A  N/A  100    200  N/A
1      20  N/A  N/A     N/A  N/A
2     N/A  AAA  N/A     N/A  XXX

Also habe ich ein Tool mit Pandas erstellt. Das erstellte Werkzeug lautet wie folgt.

import pandas as pd
import csv

csv_file = open("sample.csv", "r",
                encoding="ms932", errors="", newline="")
f = csv.reader(csv_file, delimiter=",", doublequote=True,
               lineterminator="\r\n", quotechar='"', skipinitialspace=True)
columns = next(f)
data = []

for row in f:
    data.append(row)

df = pd.DataFrame(data, columns=columns)
df_t = df.pivot_table(values=[columns[1]], index=[columns[0]], columns=[
                      columns[2]], aggfunc='sum', fill_value='N/A')
df_t.to_excel('out.xlsx', index=True)

Lesen Sie sample.csv, konvertieren Sie es in Wide Type-Daten und geben Sie es in Excel aus. Als Voraussetzung gibt es drei CSV-Spalten. Erstellen Sie für jede ID eine Zeile. Je mehr Elemente vorhanden sind, desto mehr Spalten werden hinzugefügt. Dann werden Daten für jeden Wert eingestellt. Wenn keine Daten vorhanden sind, wird N / A gesetzt.

Ausgabeergebnis スクリーンショット 2020-07-05 13.26.34.png

Wenn Sie CSV von Long Type in Wide Type konvertieren möchten, lesen Sie bitte diese Implementierung. Die Quelle ist auch auf dem folgenden Github veröffentlicht. https://github.com/kurihiro0119/transform_wide_long

Recommended Posts

Ich möchte vertikal gehaltene Daten (langer Typ) in horizontal gehaltene Daten (breiter Typ) konvertieren.
So konvertieren Sie horizontal gehaltene Daten mit Pandas in vertikal gehaltene Daten
Wie auch immer, ich möchte JSON-Daten einfach überprüfen
Ich möchte die Daten von League of Legends ③ erhalten
Ich möchte eine Art von Implementierung erstellen, die angeschlossen werden kann
Ich möchte League of Legends-Daten erhalten ①
Ich möchte ein Bild mit Lollipop in WebP konvertieren
Ich konvertiere AWS JSON-Daten wie folgt in CSV
Ich möchte einem Pandas-Datenrahmen eine group_id geben
Ich möchte sagen, dass es eine Datenvorverarbeitung gibt ~
Ich möchte Daten mit Python analysieren können (Teil 3)
Ich möchte Daten mit Python analysieren können (Teil 1)
Ich möchte Daten mit Python analysieren können (Teil 2)
Ich möchte eine ISO-8601-Zeichenfolge in japanische Zeit konvertieren
Ich möchte den Wörterbuchtyp in der Liste eindeutig machen
Ich möchte SUDOKU lösen
Ich möchte japanische Bestandsdaten erfassen und auflisten, ohne sie zu kratzen
Vorerst möchte ich jede Datei mit ffmpeg konvertieren !!
Ich möchte Bilder kratzen und trainieren
Ich möchte ○○ mit Pandas machen
Ich möchte Yolos Anmerkung kopieren
Ich möchte eine in Python in PDF konvertierte Tabelle wieder in CSV konvertieren
Ich möchte das Ergebnis von "Zeichenfolge" .split () in Python stapelweise konvertieren
Ich habe Airbnb-Daten für diejenigen analysiert, die in Amsterdam bleiben möchten