[PYTHON] Je souhaite convertir des données détenues verticalement (type long) en données détenues horizontalement (type large)

Un de mes amis qui travaille pour une société médicale m'a demandé de convertir une grande quantité de données longues en données larges. Dans ce secteur, les données telles que les patients sont souvent représentées dans un format large. J'ai donc créé un outil de conversion pour python, donc je l'ai écrit sous forme d'article.


Ci-dessous, l'image de conversion

Avant la conversion

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

Après la conversion

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

J'ai donc créé un outil en utilisant des pandas. L'outil créé est le suivant.

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)

Lisez sample.csv, convertissez-le en données de type large et exportez-le vers Excel. En principe, il y a trois colonnes csv. Créez une ligne pour chaque ID, et plus il y a d'éléments, plus de colonnes seront ajoutées. Ensuite, les données sont définies pour chaque valeur. S'il n'y a pas de données, N / A sera défini.

Résultat de sortie スクリーンショット 2020-07-05 13.26.34.png

Si vous souhaitez convertir CSV du type long au type large, veuillez vous référer à cette implémentation. La source est également publiée sur le Github suivant. https://github.com/kurihiro0119/transform_wide_long

Recommended Posts

Je souhaite convertir des données détenues verticalement (type long) en données détenues horizontalement (type large)
Comment convertir des données détenues horizontalement en données détenues verticalement avec des pandas
Quoi qu'il en soit, je veux vérifier facilement les données JSON
Je veux obtenir les données de League of Legends ③
Je souhaite créer un type d'implémentation pouvant être branché
Je veux obtenir les données de League of Legends ①
Je veux convertir une image en WebP avec sucette
Je convertis les données AWS JSON en CSV comme ceci
Je veux donner un group_id à une trame de données pandas
Je veux dire qu'il y a un prétraitement des données ~
Je veux pouvoir analyser des données avec Python (partie 3)
Je veux pouvoir analyser des données avec Python (partie 1)
Je veux pouvoir analyser des données avec Python (partie 2)
Je souhaite convertir une chaîne de caractères ISO-8601 en heure japonaise
Je veux rendre le type de dictionnaire dans la liste unique
Je veux résoudre SUDOKU
Je souhaite acquérir et répertorier les données boursières japonaises sans grattage
Pour le moment, je veux convertir n'importe quel fichier avec ffmpeg !!
Je veux gratter des images et les former
Je veux faire ○○ avec les Pandas
Je veux copier l'annotation de yolo
Je souhaite convertir une table convertie en PDF en Python en CSV
Je veux convertir par lots le résultat de "chaîne de caractères" .split () en Python
J'ai analysé les données Airbnb pour ceux qui veulent rester à Amsterdam