[python] Utilisez DataFrame pour étiqueter ensemble des variables et des tableaux arbitraires et les enregistrer dans csv [pandas] Re-UP

Je voulais enregistrer toutes les variables ensemble facilement, j'ai donc créé un tel programme. Il peut être enregistré en appliquant un tableau à deux dimensions.

J'ai utilisé [python] DataFrame pour étiqueter des variables et des tableaux arbitraires ensemble et les enregistrer dans csv [pandas]. Si vous l'incorporez dans le programme en production au lieu du programme de test Il y avait un bogue que tous les noms étaient enregistrés en tant que «données», donc j'écrirai une solution de contournement. La cause est inconnue, mais les symptômes détaillés sont résumés dans [ici](#Bug content analysis).

Au dessus de Parce que les données étaient définies sur pour les données dans les données: dans la partie pour Il semble que tous les noms ont été enregistrés en tant que «données». Vous pouvez donc le spécifier sous la forme de datas [i]. La raison pour laquelle cela peut être fait avec du code de test et non en production est un mystère. Parce que c'est dans une fonction? ??

Ce n'est pas une grosse réécriture, donc je vais juste laisser le code source


import pandas as pd

# ---Définir des variables pour les tests---
a ,b,c,d = 1,2,3,4
xx = [3,6,8]
yy = [5,8,2]
zz = [8,2,8]

# ---Collectez les variables dans le dataframe et enregistrez le CSV---
def getName(obj):
    return  [k for k, v in globals().items() if id(obj) == id(v)][0] #Renvoie le nom de la variable avec str

df = pd.DataFrame()

datas = [xx,yy,zz] #En utilisant le nom de la variable comme en-tête, assemblez un tableau unidimensionnel dans une trame de données
for i in range(len(datas)):
    df = pd.concat([df, pd.DataFrame({getName(datas[i]):datas[i]})],axis=1) # {}Ajouter un dataframe avec concat en utilisant set

datas = [a,b,c,d]#Tout en utilisant le nom de la variable comme en-tête, regroupez les variables dans un dataframe
for i in range(len(datas)):
    df =  pd.concat([df, pd.DataFrame({getName(datas[i]):[datas[i]]})],axis=1)# {}Ajouter un dataframe avec concat en utilisant set
df.to_csv('test.csv')
print(df)
del df

output

   xx  yy  zz    a    b    c    d
0   3   5   8  1.0  2.0  3.0  4.0
1   6   8   2  NaN  NaN  NaN  NaN
2   8   2   8  NaN  NaN  NaN  NaN

Analyse du contenu des bugs

Après avoir tourné le programme d'origine, changé le nom de la variable, puis le tourner à nouveau, l'erreur ci-dessus s'est produite pour une raison quelconque.

import pandas as pd

# ---Définir des variables pour les tests---
a ,b,c,d = 1,2,3,4
xx = [3,6,8]
yy = [5,8,2]
zz = [8,2,8]

# ---Collectez les variables dans le dataframe et enregistrez le CSV---
def getName(obj):
    return  [k for k, v in globals().items() if id(obj) == id(v)][0] #Renvoie le nom de la variable avec str

df = pd.DataFrame()

datas1 = [xx,yy,zz] #En utilisant le nom de la variable comme en-tête, assemblez un tableau unidimensionnel dans une trame de données
for data in datas1:
    df = pd.concat([df, pd.DataFrame({getName(data):data})],axis=1) # {}Ajouter un dataframe avec concat en utilisant set
    
datas2 = [a,b,c,d]#Tout en utilisant le nom de la variable comme en-tête, regroupez les variables dans un dataframe
for data in datas2:
    df =  pd.concat([df, pd.DataFrame({getName(data):[data]})],axis=1)# {}Ajouter un dataframe avec concat en utilisant set
df.to_csv('test.csv')
print(df)
del df

output

   xx  yy  zz    a    b    c    d
0   3   5   8  1.0  2.0  3.0  4.0
1   6   8   2  NaN  NaN  NaN  NaN
2   8   2   8  NaN  NaN  NaN  NaN

De cette façon, la première fois qu'il réussit Si vous modifiez à nouveau le nom de la variable et mettez-le dans cet état

import pandas as pd

# ---Définir des variables pour les tests---
a ,b,c,d = 1,2,3,4
xxx= [3,6,8] ###Change ça
yyy= [5,8,2] ###Change ça
zz= [8,2,8]

# ---Collectez les variables dans le dataframe et enregistrez le CSV---
def getName(obj):
    return  [k for k, v in globals().items() if id(obj) == id(v)][0] #Renvoie le nom de la variable avec str

df = pd.DataFrame()
###Changer ici
datas1 = [xxx,yyy,zz] #En utilisant le nom de la variable comme en-tête, assemblez un tableau unidimensionnel dans une trame de données
for data in datas1:
    df = pd.concat([df, pd.DataFrame({getName(data):data})],axis=1) # {}Ajouter un dataframe avec concat en utilisant set

datas2 = [a,b,c,d]#Tout en utilisant le nom de la variable comme en-tête, regroupez les variables dans un dataframe
for data in datas2:
    df =  pd.concat([df, pd.DataFrame({getName(data):[data]})],axis=1)# {}Ajouter un dataframe avec concat en utilisant set
df.to_csv('test.csv')
print(df)
del df

output

   data  data  zz    a    b    c    d
0     3     5   8  1.0  2.0  3.0  4.0
1     6     8   2  NaN  NaN  NaN  NaN
2     8     2   8  NaN  NaN  NaN  NaN

Le nom sera des données comme celle-ci

Recommended Posts

[python] Utilisez DataFrame pour étiqueter ensemble des variables et des tableaux arbitraires et les enregistrer dans csv [pandas] Re-UP
[python] Utilisez DataFrame pour étiqueter ensemble des variables et des tableaux arbitraires et les enregistrer dans csv [pandas]
Comment utiliser is et == en Python
Utilisez os.getenv pour obtenir des variables d'environnement en Python
J'ai essayé de résumer comment utiliser les pandas de python
[Introduction à l'application Udemy Python3 +] 36. Utilisation de In et Not
Combinez des listes dans un DataFrame avec des pandas
Afficher les nombres et les caractères affectés aux variables dans l'impression python
Collectez les tweets en utilisant tweepy en Python et enregistrez-les dans MongoDB
Comparaison de l'utilisation des fonctions d'ordre supérieur dans Python 2 et 3
traitement pour utiliser les données notMNIST en Python (et essayé de les classer)
[Python] Comment ajouter des lignes et des colonnes à une table (pandas DataFrame)
Comment utiliser les fonctions dans des fichiers séparés version Perl et version Python
Comment utiliser les variables d'environnement Serverless Framework et Python et gérer les étapes
[Python] Lorsque vous souhaitez utiliser toutes les variables dans un autre fichier
[Python3] Enregistrez la matrice de moyenne et de covariance dans json avec les pandas
J'étais accro aux variables de classe et aux variables d'instance erronées en Python
[Python] Comment utiliser la série Pandas
Comment utiliser SQLite en Python
[Introduction à Python] Utilisons les pandas
Comment utiliser Mysql avec python
Comment utiliser ChemSpider en Python
Comment utiliser PubChem avec Python
[Introduction à Python] Utilisons les pandas
[Introduction à Python] Utilisons les pandas
Comment obtenir un nom de colonne et un nom d'index spécifiques avec Pandas DataFrame
Analyse des données: application facile des statistiques descriptives et des statistiques d'estimation aux données CSV en Python
Connectez-vous à postgreSQL depuis Python et utilisez des procédures stockées dans une boucle.
Lisez le fichier CSV avec Python et convertissez-le en DataFrame tel quel
[Python] Qu'est-ce que la série pandas et DataFrame?
[Python] Résumé de l'utilisation des pandas
[Introduction à Python] Comment utiliser la classe en Python?
Comment diviser et enregistrer un DataFrame
[Python] Utilisez des pandas pour extraire △△ qui maximise ○○
[Python] Utiliser et et ou lors de la création de variables
Comment définir dynamiquement des variables en Python
Comment installer et utiliser pandas_datareader [Python]
Un moyen simple d'utiliser Wikipedia avec Python
Comment réattribuer un index dans pandas dataframe
[Python] pandas à bien comprendre en 10 minutes
Pour référencer des variables d'environnement en Python dans Blender
Lire Python csv et exporter vers txt
python: Comment utiliser les locals () et globals ()
Comment utiliser __slots__ dans la classe Python
[Python] Ajouter le nombre total de lignes à Pandas DataFrame
Comment utiliser le zip Python et énumérer
Comment utiliser les expressions régulières en Python
Comment lire des fichiers CSV avec Pandas
Ajouter une série à la colonne dans les pandas python
Comment utiliser les pandas Timestamp et date_range
Conseils pour ceux qui ne savent pas comment utiliser is et == en Python
[Python] Comment nommer les données de table et les sortir avec csv (méthode to_csv)
Utilisez libsixel pour générer Sixel en Python et générer le graphe Matplotlib vers le terminal.
[Formation Python partie 3] Convertissez les pandas DataFrame, Series et Standard List entre eux
Enregistrez le Tweet de Twitter avec Geo au format CSV et tracez-le sur Google Map.