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
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