Eines Tages, Kyo "T-kun, ich sende Ihnen die Daten, die aus dem Messgerät stammen, also machen Sie Ihr eigenes Diagramm." T "OK!" Eintägiges Treffen ... T "Dies ist eine Grafik" Kyo "Was war der Wert hier? Hast du ihn berechnet?" (... ?!) Kyo "Es gibt noch 0 Daten im gleichen Format wie dieses. Bitte führen Sie die Berechnung durch." ((^ Ω ^) ... Owata)
Es gibt einen Hintergrund wie Ich fing an, Python zu lernen, um die Datenorganisation zu automatisieren und zu beschleunigen. Python war der erste, der mit der Programmierung begann. Nachdem ich nach und nach studiert und meine Masterarbeit geschrieben habe, möchte ich die Fortschritte in Bezug auf Python aufzeichnen. Ich schreibe zum ersten Mal einen Artikel und bin mir nicht sicher, ob ich ihn fertig schreiben werde (18.03.). GitHub hat auch Beispieldaten und Notizbücher. Von hier Bitte.
T "Ich schreibe ein Programm, während ich Python studiere. Kannst du also einen Moment warten?" Lehre "?? Fertig!" (Später schwillt "ein wenig" bis zu einigen Monaten an)
Öffnen wir nun die Daten. Die Daten, die ich erhalten habe, waren im TXT-Format, das auch in Excel geöffnet werden kann. Es ist ein bisschen ekelhaft, ein Semikolon-Trennzeichen zu haben. Unten finden Sie ein Beispiel für die Daten.
Das erste Lehrbuch, das ich berührt habe, war [Python-Einführungsnotiz](https://www.amazon.co.jp/%E8%A9%B3%E7%B4%B0-Python-%E5%85%A5%E9%96%80 % E3% 83% 8E% E3% 83% BC% E3% 83% 88-% E5% A4% A7% E9% 87% 8D-% E7% BE% 8E% E5% B9% B8 / dp / 4800711673) tat. Nachdem ich Anaconda gemäß diesem Lehrbuch installiert hatte, lernte ich, indem ich Code auf Spyder schrieb.
Das Lehrbuch enthielt das Lesen und Schreiben von Dateien mit numpy. Vorerst lese ich es je nach Thema. Ich habe versucht, den Dateipfad mit tkinter zu übergeben. Ich weiß es nicht, aber ich habe es wie einen Zauber benutzt.
.py
import tkinter as tk
import tkinter.filedialog as fd
import numpy as np
root=tk.Tk()
root.withdraw()
path = fd.askopenfilename(
title="file---",
filetypes=[("csv","csv"),("CSV","csv")])
if path :
fileobj=np.genfromtxt(path,delimiter=";",skip_header=3)#Lesen Sie die durch Semikolon getrennten Daten, indem Sie 3 Zeilen überspringen
f=fileobj[:,0]#Daten der ersten Spalte
Zu dieser Zeit wurde es gelesen. Später stieß ich auf ein praktisches Modul namens Pandas. [Einführung in Jupyter [Übung] für Python-Benutzer](https://www.amazon.co.jp/Python%E3%83%A6%E3%83%BC%E3%82%B6%E3%81%AE % E3% 81% 9F% E3% 82% 81% E3% 81% AEJupyter-% E5% AE% 9F% E8% B7% B5-% E5% 85% A5% E9% 96% 80-% E6% B1% A0% E5% 86% 85-% E5% AD% 9D% E5% 95% 93 / dp / 4774192236) wurde als Referenz zum Starten der Notebook-Umgebung verwendet. Beginnen Sie erneut mit Jupyter Notebook und Pandas.
.ipynb
import tkinter
from tkinter import filedialog
import pandas as pd
root = tkinter.Tk()
root.withdraw()
path = filedialog.askopenfilename(
title="file___",
filetypes=[("txt","txt"),("csv","csv")])
if path:
df = pd.read_csv(path,engine="python",header=None,sep=';',skiprows=3,index_col=0)
Wenn Sie es mit Pandas lesen, sehen die Tabellendaten so aus.
Lassen Sie es uns schnell mit der Grafikfunktion von Pandas grafisch darstellen. In diesem Experiment werden wir die Daten in der ersten und zweiten Spalte verwenden. In DataFrame werden Daten mithilfe von Indexern (loc, iloc) verarbeitet. Beachten Sie jedoch, dass das zurückgegebene Objekt in Series geändert wird, wenn 1 Zeile oder 1 Spalte mit Daten angegeben wird.
.ipnb
import matplotlib.pyplot as plt
df=df.iloc[:,[0,1]]
df.set_index(0,inplace=True)#Überschreiben Sie df durch Angabe des Index
df.plot()
plt.show()
Beim Plotten mit Pandas scheint die Indexspalte automatisch auf der horizontalen Achse aufgenommen zu werden, sodass der Index im Voraus mit .set_inedex (Spaltenname) angegeben wird. Eine Wellenform mit einer scharfen Spitze erschien um die Mitte, wie im Bild gezeigt. Es gab Lärm am Rand. Es hängt von der Anzahl der Datenpunkte ab, aber bis zu diesem Punkt habe ich es in Excel gemacht.
Der Prozess verlief reibungslos, bis das Diagramm erstellt wurde, aber die Berechnung war mühsam. Die Herausforderung bestand diesmal darin, die Schärfe des Peaks zu bewerten. Als Anpassungswerkzeug kam scipys curve_fit heraus, sobald ich es gegoogelt hatte, also versuchte ich es zu verwenden. Die vertikale Achse in der obigen Grafik ist die Eingangsleistung, und die Einheit wird in Dezibel (dBm) ausgedrückt. Wenn das Gerät auf mW geändert und mit dem Maximalwert standardisiert wird, entspricht dies der Abbildung unten.
df.index = df.index*pow(10,-9)
df.index.rename('freq[GHz]',inplace=True)
df['mag'] = pow(10,(df.iloc[:]-df.iloc[:].max())/10)
df['mag'].plot()
plt.show()
Die Funktion, die Sie anpassen möchten, ist: Es ist die Lorentz-Funktion mit einer hinzugefügten Grundlinie. Alle Variablen außer x. ..
init ist der Anfangswert des Parameters. Mit einem grob vorhergesagten Wert Ich habe eine Liste gemacht. Der optimale Parameter opt und die Kovarianz cov können durch kurven_fit (Funktionsname, x, y, Anfangswert des Parameters) erhalten werden.
import scipy.optimize
def lorentz(x,A,mu,gamma,B,C):#Definieren Sie eine passende Funktion
return A*x*gamma/((x-mu)**2+gamma**2)+B*x+C
A = -np.pi*(df.index.max()-df.index.min())/20
mu = df.index.values.mean()
gamma = (df.index.max()-df.index.min())/20
B = 10
C = 0
init = [A,mu,gamma,B,C]#Anfangswert des Parameters, den Sie anpassen möchten
opt, cov = scipy.optimize.curve_fit(lorentz,df.index,df['mag'],init)#passend zu
Zeichnen Sie die Ergebnisse. Es ist sehr praktisch, eine neue Spalte mit df [Spaltenname] = 〇〇 zu erstellen. Wenn Sie es einem Serienobjekt hinzufügen möchten, konvertieren Sie es über pd.DataFrame (Serienobjekt) oder .reset_index () in einen DataFrame-Typ. Es ist schön, die Spaltennamen so zu verwenden, wie sie in der Legende stehen. Die vertikale Achse ist ... ..
df['fit']=lorentz(df.index,opt[0],opt[1],opt[2],opt[3],opt[4])
df.loc[:,['mag','fit']].plot()
plt.show()
Es passt gut.
Die Schärfe des Peaks wurde unter Verwendung der erhaltenen $ \ mu $ und $ \ gamma $ bewertet.
・ $ \ Mu $: Mittelpunkt des Gipfels
・ $ \ Gamma
Analyse der Messdaten (2) -Hytriform und passend, lmfit Empfehlung-
Die Probendaten repräsentierten die Frequenzeigenschaften eines bestimmten Resonanzkreises. Ich fing an, es selbst zu berühren und schließlich war das Kossa-Analyseprogramm abgeschlossen. Als ich zum ersten Mal umzog, war ich beeindruckt. Zum Zeitpunkt meines Abschlusses verarbeitete ich Tausende von Daten. Das ist schrecklich. Machen Sie es und Yokatta ... Ich möchte immer mehr Pandas studieren, damit ich frei mit Daten umgehen kann.
Recommended Posts