Je veux améliorer l'efficacité avec Python même dans un système expérimental (3) Je veux faire quelque chose comme Excel avec Pandas

Motivation

-Voir (1)

environnement

Cible

――La méthode d'automatisation est illustrée en prenant comme exemple l'automatisation du fonctionnement manuel dans mon environnement.

Méthode

Il existe un package appelé pandas qui peut être utilisé en Python et convient aux opérations de table comme Excel. Je vais présenter un exemple de "Représentation graphique de la valeur de tension automatiquement acquise" en utilisant ceci et un package appelé matplotlib qui peut facilement dessiner un graphique proprement.

Exemple

Supposons que lorsqu'un courant circule dans une large plage dans l'espace dans une direction, le courant est mesuré à l'aide d'un tapis plus petit que l'espace. Lorsque le tapis est croisé peu à peu perpendiculairement au courant et que le courant est enregistré pas à pas, le «contrôle du mouvement» et la «mesure du courant» sont commandés depuis pyserial. Le mouvement est contrôlé par Sigma Kouki SHOT102, et le courant est mesuré à l'aide de la série R6441 d'ADVANTEST. Je vais. 2019-12-09_19.57.13.png

Cell1

import serial
import time
import pandas as pd
import matplotlib.pyplot as plt

serial utilise pyserial, time crée l'intervalle de temps pour la communication série, pandas utilise dataframe et matplotlib.pyplot est utilisé pour dessiner des graphiques.

Cell2

##Spécification constante
MAX = 42000
COMpulse = "COM9"
COMampere = "COM10"
bitRate = 9600

Spécifiez la constante utilisée dans pyserial. Cell3

##Initialisation variable
pulse = 0
ampere_list = []
pulse_list = []
ampere_average_list =[]

Initialisez les variables à utiliser.

Cell4 (facultatif)

##Mouvement d'origine du dos(Initialisation)
ser = serial.Serial(COMpulse, bitRate, timeout=0.1)
ser.write(b"H:2-\r\n")
time.sleep(0.1)
print(ser.read_all())
ser.close()

Passer au contrôle de fonctionnement et à l'origine de la mesure

Cell5 «pulse» prend une valeur de 0 à 42 000 et se déplace de 3 μm par impulsion. (En fait, il se déplace de 6 μm par 2 impulsions, mais la commande semble être écrite comme ça). La valeur actuelle à chaque position est échantillonnée 5 fois et moyennée à la valeur à ce point. Le nombre moyen de fois est arbitraire. Après avoir déplacé la table optique jusqu'à la fin, attachez la liste des valeurs actuelles et de position en tant que trame de données, convertissez la valeur d'impulsion en longueur réelle et dessinez avec matplotlib. C'est devenu un flux. (Au fait, j'ai mis le dataframe en csv.)

##Commencer la mesure
while 1:
    if pulse >= MAX:
        ##Termine l'instruction while lorsque la position atteint MAX
        break
    ##Enregistrer les informations de localisation actuelles
    pulse_list.append(pulse/2) #Pour une raison quelconque, l'impulsion est spécifiée par 2 et ordonnée, elle est donc divisée par 2.
    ##Mesurer le courant(La valeur à cette position est la moyenne de 5 fois.)
    for i in range(5):
        ser = serial.Serial(COMampere,bitRate,timeout=0.1)
        time.sleep(0.5)
        ser.write(b"MD?\r\n")
        time.sleep(0.5)
        tmp = ser.read_all()
        ampere = float(tmp.split()[1])
        ampere_average_list.append(ampere)
        ser.close()
    ##Courant et impulsion(position)Lister
    ampere_list.append(sum(ampere_average_list)/len(ampere_average_list))
    ampere_average_list = [] #Initialiser la liste
    
    ##Déplacer la table optique
    pulse += 1000
    position = "A:2+P"+str(pulse)+"\r\n" #Faire une commande en combinant des chaînes
    ser = serial.Serial(COMpulse,bitRate,timeout=0.1)
    ser.write(bytes(position, 'UTF-8'))
    time.sleep(0.5)
    ser.write(b"G:\r\n")
    ser.close()
    

##Transformez la liste en un dataframe
print(ampere_list)
print(pulse_list)
df = pd.DataFrame({'ampere(A)':ampere_list,'pulse':pulse_list})
##Changer la valeur d'impulsion en longueur
def pulseToMilliMeter(pulse):
    return pulse*0.006
df["position(mm)"] = df["pulse"].map(pulseToMilliMeter) #Vous pouvez faire des choses comme appliquer des fonctions par lots dans Excel
df.to_csv('./csv/hoge/result.csv',index=False)
##Dessinez un graphique en utilisant matplotlib
plt.figure()
df.plot(x='position(mm)',y='ampere(A)')
plt.savefig('./img/sample.png')
plt.close('all')

en conclusion

Supposons que l'efficacité a été améliorée. En fait, tout ce que vous avez à faire est d'appuyer sur Entrée, ce qui le rend beaucoup plus simple et plus reproductible. J'écrirai plus quand j'aurai d'autres matériaux qui peuvent être rendus plus efficaces.

Recommended Posts

Je veux améliorer l'efficacité avec Python même dans un système expérimental (3) Je veux faire quelque chose comme Excel avec Pandas
Je souhaite améliorer l'efficacité avec Python même dans les systèmes expérimentaux (2) RS232C et pySerial
Je souhaite améliorer l'efficacité avec Python même dans un système expérimental (1) Installer Anaconda avec Chocolatey
Je souhaite améliorer l'efficacité avec Python même dans le système expérimental (4) Utilisez ser.close () lorsqu'une erreur est générée en utilisant la syntaxe try.
Je veux faire quelque chose comme sort uniq en Python
Je souhaite améliorer l'efficacité avec Python même dans le système expérimental (5) Je souhaite envoyer une notification à la fin de l'expérience avec l'API slack
Je voulais faire quelque chose comme la pipe d'Elixir en Python
Je veux faire quelque chose avec Python à la fin
Je veux faire ○○ avec les Pandas
Je veux colorer une partie de la chaîne Excel avec Python
Je veux faire le test de Dunnett en Python
Je veux travailler avec un robot en python.
Je veux manipuler des chaînes dans Kotlin comme Python!
Comment lire un fichier Excel (.xlsx) avec Pandas [Python]
Je veux déboguer avec Python
Développez un dictionnaire imbriqué Python pour faire quelque chose comme MultiIndex de Pandas
Je veux résoudre APG4b avec Python (seulement 4.01 et 4.04 au chapitre 4)
Je veux utiliser des rails avec des rails même dans un environnement vagabond
Je souhaite rechercher le texte intégral avec elasticsearch + python
[Apprentissage automatique] J'ai essayé de faire quelque chose comme passer des images
J'ai essayé d'améliorer l'efficacité du travail quotidien avec Python
Je veux jouer avec aws avec python
Faites quelque chose comme les transactions Redis en Python
# J'ai essayé quelque chose comme Vlookup avec Python # 2
Je veux le faire avec Python lambda Django, mais je vais m'arrêter
Maintenance de l'environnement réalisée avec Docker (je souhaite post-traiter GrADS en Python
Je veux faire un patch monkey seulement en partie en toute sécurité avec Python
Je veux utiliser MATLAB feval avec python
[Améliorez l'efficacité du travail avec Python] Demande: créez tous les PDF Excel dans ce dossier.
Je veux créer une fenêtre avec Python
Je souhaite envoyer Gmail avec Python, mais je ne peux pas en raison d'une erreur
Je veux moquer datetime.datetime.now () même avec pytest!
Je veux faire un jeu avec Python
[Python] Comment lire des fichiers Excel avec des pandas
Je veux être OREMO avec setParam!
Je veux fusionner des dictionnaires imbriqués en Python
#Unresolved Je veux compiler gobject-introspection avec Python3
Je veux résoudre APG4b avec Python (chapitre 2)
Je veux réaliser quelque chose comme AutoHotkey avec AutoKey sur Ubuntu (Kali Linux)
Je veux écrire dans un fichier avec Python
Envoyer un e-mail avec Excel en pièce jointe en Python
Je veux afficher la progression en Python!
[Python] Je veux ajouter un répertoire statique avec Flask [Je veux utiliser autre chose que statique]
Je souhaite envoyer un message d'erreur en japonais avec le formulaire de changement de mot de passe django
Que faire si vous exécutez python sur IntelliJ et quittez avec une erreur
Je veux écrire en Python! (1) Vérification du format de code
Je veux convertir une image en WebP avec sucette
Je souhaite intégrer une variable dans une chaîne Python
Je veux facilement implémenter le délai d'expiration en python
Je veux faire la transition avec un bouton sur le ballon
Comment faire un calcul de hachage avec Salt en Python
Je veux gérer l'optimisation avec python et cplex
Je veux écrire en Python! (2) Écrivons un test
Je veux échantillonner au hasard un fichier avec Python
J'étais accro au grattage avec Selenium (+ Python) en 2020
J'ai essayé d'implémenter le perceptron artificiel avec python
Je veux écrire en Python! (3) Utiliser des simulacres