[PYTHON] Pandas lernen mit Chemoinfomatik

Einführung

Nach NumPy aus Chemoinfomatik gelernt ist "Pandas" eine der repräsentativen Bibliotheken von Python mit dem Thema Lipidomik (umfassende Analyse von Lipiden). Ich werde darüber erklären. Wir werden hauptsächlich praktische Beispiele für Chemoinfomatik erläutern. Wenn Sie also die Grundlagen überprüfen möchten, lesen Sie bitte den folgenden Artikel, bevor Sie diesen Artikel lesen.

Forscher eines Pharmaunternehmens fasste Pandas zusammen

Serien und DataFrame erstellen

Pandas macht es einfach, Tabellenberechnungen durchzuführen.

Um die Bibliothek zu verwenden, laden Sie zuerst die Bibliothek mit "import". Konventionell wird es oft als "pd" abgekürzt.

Pandas verarbeitet zwei Arten von Datenstrukturen, "Series" und "DataFrame".

Serien sind eindimensionale Daten und haben eine Datenstruktur ähnlich einer Liste oder einem Wörterbuch.

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

print(numbers_carbon)
print(numbers_unsaturation)

Im obigen Beispiel können Sie sich "index_fatty_acids" als so etwas wie den Namen der Daten vorstellen. Sie können auch eine Serie basierend auf dem Wörterbuch erstellen, wie unten gezeigt. Verwenden Sie "index_fatty_acids" als Wörterbuchschlüssel. Es ist jedoch besser, die Liste mit "index =" anzugeben, da der Code lang sein wird.

import pandas as pd


numbers_carbon = pd.Series({
    'FA 16:0': 16,
    'FA 16:1': 16,
    'FA 18:0': 18,
    'FA 18:1': 18,
    'FA 18:2': 18,
    'FA 18:3': 18,
    'FA 18:4': 18,
    'FA 20:0': 20,
    'FA 20:3': 20,
    'FA 20:4': 20,
    'FA 20:5': 20
})

print(numbers_carbon)

Andererseits sind DataFrame zweidimensionale Daten, die durch Kombinieren von Serien erstellt werden.

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

df_fatty_acids = pd.DataFrame({'Cn': numbers_carbon, 'Un': numbers_unsaturation})

print(df_fatty_acids)

Im obigen Beispiel ist der Schlüssel des Wörterbuchs in "pd.DataFrame" der Spaltenname der Tabelle. Andererseits ist der Index, der bei der früheren Erstellung der Serie angegeben wurde, der Zeilenname. Übrigens ist "df" in "df_fatty_acids" eine Abkürzung für "data frame".

Datenreferenz

Verwenden Sie "Index" und "Spalten", um auf die Zeilen- und Spaltennamen des DataFrame zu verweisen.

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

df_fatty_acids = pd.DataFrame({'Cn': numbers_carbon, 'Un': numbers_unsaturation})

print(df_fatty_acids.index) #Zeilenname
print(df_fatty_acids.columns) #Spaltenname

Um auf ein bestimmtes Element eines DataFrame zuzugreifen, schreiben Sie:

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

df_fatty_acids = pd.DataFrame({'Cn': numbers_carbon, 'Un': numbers_unsaturation})

print(df_fatty_acids['Cn']) #Geben Sie den Spaltennamen an
print(df_fatty_acids.Cn) #Geben Sie den Spaltennamen an

print(df_fatty_acids['Cn'][0]) #Geben Sie den Spaltennamen und die Zeilennummer an

print(df_fatty_acids[2:5]) #Geben Sie die Zeilennummer (Indexnummer) mit einem Slice an
print(df_fatty_acids[5:]) #Extrahieren Sie Daten nach der angegebenen Zeilennummer
print(df_fatty_acids[:5]) #Extrahieren Sie Daten bis zur angegebenen Zeilennummer
print(df_fatty_acids[-5:]) #Zeilennummer von hinten gezählt
print(df_fatty_acids[2:5]['Cn']) #Geben Sie die Zeilennummer und den Spaltennamen an

print(df_fatty_acids.loc['FA 16:0', 'Cn']) #Geben Sie den Zeilennamen und den Spaltennamen an
print(df_fatty_acids.loc['FA 16:0']) #Geben Sie den Zeilennamen an
print(df_fatty_acids.loc[:, 'Cn']) #Geben Sie den Spaltennamen an

print(df_fatty_acids.iloc[0, 0]) #Geben Sie die Zeilennummer und die Spaltennummer an
print(df_fatty_acids.iloc[0]) #Geben Sie die Zeilennummer an
print(df_fatty_acids.iloc[:, 0]) #Geben Sie die Spaltennummer an
print(df_fatty_acids.iloc[-1, -1]) #Element in der letzten Spalte der letzten Zeile

Ob es besser ist, den Zeilennamen oder Spaltennamen oder die Zeilennummer oder Spaltennummer anzugeben, ist von Fall zu Fall. Daher ist es besser, diejenige auszuwählen, die jedes Mal einfach durchzuführen ist.

Sie können auch Daten extrahieren, die die angegebenen Bedingungen erfüllen.

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

df_fatty_acids = pd.DataFrame({'Cn': numbers_carbon, 'Un': numbers_unsaturation})

print(df_fatty_acids[df_fatty_acids['Cn'] >= 18]) #DataFrame extrahierte Zeilen, die die Bedingungen erfüllen
print(df_fatty_acids[df_fatty_acids['Cn'] >= 18]['Cn']) #Extrahieren Sie Zeilen, die die Bedingungen erfüllen, indem Sie Spaltennamen in DataFrame angeben
print(df_fatty_acids[df_fatty_acids['Cn'] >= 18].iloc[:, 0]) #Extrahieren Sie Zeilen, die die Bedingungen erfüllen, indem Sie die Spaltennummer im DataFrame angeben

print(df_fatty_acids[(df_fatty_acids['Cn'] >= 18) & (df_fatty_acids['Un'] >= 2)]) #Geben Sie mehrere Bedingungen an (und)
print(df_fatty_acids[(df_fatty_acids['Cn'] >= 18) | (df_fatty_acids['Un'] >= 1)]) #Geben Sie mehrere Bedingungen an (oder)

Wenn Sie mehrere Bedingungen angeben, sind für jede Bedingung Klammern "()" erforderlich. Vergiss nicht.

Daten hinzufügen

Sie können eine bestimmte Spalte mit dem Namen "DataFrame" ["Spaltenname"] angeben. Wenn Sie jedoch einen Spaltennamen angeben, der nicht im DataFrame enthalten ist, wird eine neue Spalte erstellt. Sie können auch einfach anhand der Daten in einer anderen Spalte berechnen.

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

df_fatty_acids = pd.DataFrame({'Cn': numbers_carbon, 'Un': numbers_unsaturation})

df_fatty_acids['C'] = df_fatty_acids['Cn']
df_fatty_acids['H'] = df_fatty_acids['Cn'] * 2 - df_fatty_acids['Un'] * 2
df_fatty_acids['O'] = 2

print(df_fatty_acids)

In dem obigen Beispiel werden die Anzahl der Kohlenstoffatome "C" und die Anzahl der Wasserstoffatome "H" jeder Fettsäuremolekülspezies basierend auf den Werten in den Spalten "Cn" und "Un" berechnet. Wenn Sie "df_fatty_acids" ausgeben, können Sie sehen, dass neue Spalten für "C", "H" und "O" hinzugefügt wurden.

Arithmetische Berechnung

Als nächstes sollten Sie die genaue Masse jeder Fettsäuremolekülspezies ermitteln.

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

df_fatty_acids = pd.DataFrame({'Cn': numbers_carbon, 'Un': numbers_unsaturation})

df_fatty_acids['C'] = df_fatty_acids['Cn']
df_fatty_acids['H'] = df_fatty_acids['Cn'] * 2 - df_fatty_acids['Un'] * 2
df_fatty_acids['O'] = 2

df_fatty_acids['Exact mass'] = pd.Series([0] * len(index_fatty_acids), index=index_fatty_acids) #Setzen Sie vorerst 0 in alle Zeilen

exact_masses = pd.Series({'C': 12, 'H': 1.00783, 'O': 15.99491})

for atom in exact_masses.index:
    df_fatty_acids['Exact mass'] += exact_masses[atom] * df_fatty_acids[atom] #Präzisionsmasse berechnen

print(df_fatty_acids)

Im obigen Beispiel wird die genaue Masse des Fettsäuremoleküls berechnet, indem die Präzisionsmasse jedes Atoms multipliziert mit der Anzahl der Atome addiert wird.

String-Verkettung

Als nächstes finden wir die Kompositionsformel.

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

df_fatty_acids = pd.DataFrame({'Cn': numbers_carbon, 'Un': numbers_unsaturation})

df_fatty_acids['C'] = df_fatty_acids['Cn']
df_fatty_acids['H'] = df_fatty_acids['Cn'] * 2 - df_fatty_acids['Un'] * 2
df_fatty_acids['O'] = 2

df_fatty_acids['Molecular formula'] = pd.Series([''] * len(index_fatty_acids), index=index_fatty_acids) #Setzen Sie vorerst Leerzeichen in alle Zeilen

exact_masses = pd.Series({'C': 12, 'H': 1.00783, 'O': 15.99491})

for atom in exact_masses.index:
    df_fatty_acids['Molecular formula'] += atom + df_fatty_acids[atom].astype(str) #Schreiben Sie die Kompositionsformel
    
print(df_fatty_acids)

Sie können das Elementsymbol und die Anzahl der Atome als Zeichenfolge kombinieren. Da die in "C", "H" und "O" enthaltenen Daten jedoch numerische Werte sind, müssen Sie sie vor dem Kombinieren in eine Zeichenfolge konvertieren. Es gibt. Daher werden im obigen Beispiel als "Astyp (str)" die numerischen Werte in Zeichenfolgen umgewandelt und dann kombiniert.

Ausgabe in externe Datei

Als nächstes sollten Sie die fertigen Daten als externe Datei ausgeben.

import pandas as pd


index_fatty_acids = ['FA 16:0', 'FA 16:1', 'FA 18:0', 'FA 18:1', 'FA 18:2', 'FA 18:3', 'FA 18:4', 'FA 20:0', 'FA 20:3', 'FA 20:4', 'FA 20:5']

numbers_carbon = pd.Series([16, 16, 18, 18, 18, 18, 18, 20, 20, 20, 20], index=index_fatty_acids)
numbers_unsaturation = pd.Series([0, 1, 0, 1, 2, 3, 4, 0, 3, 4, 5], index=index_fatty_acids)

df_fatty_acids = pd.DataFrame({'Cn': numbers_carbon, 'Un': numbers_unsaturation})

df_fatty_acids['C'] = df_fatty_acids['Cn']
df_fatty_acids['H'] = df_fatty_acids['Cn'] * 2 - df_fatty_acids['Un'] * 2
df_fatty_acids['O'] = 2

df_fatty_acids['Exact mass'] = 0

exact_masses = pd.Series({'C': 12, 'H': 1.00783, 'O': 15.99491})

df_fatty_acids['Exact mass'] = exact_masses * df_fatty_acids #Präzisionsmasse

for atom in exact_masses.index:
    df_fatty_acids['Molecular formula'] += atom + df_fatty_acids[atom].astype(str) #Zusammensetzungsformel

df_fatty_acids.to_csv('fatty_acids.csv') #Ausgabe als CSV-Datei
df_fatty_acids.to_csv('fatty_acids.txt', sep='\t') #Ausgabe als tabulatorgetrennte Textdatei
df_fatty_acids.to_excel('fatty_acids.xlsx', sheet_name='fatty_acids') #Ausgabe als Excel-Datei

Externe Dateien lesen

Um eine externe Datei zu lesen, gehen Sie umgekehrt wie folgt vor:

import pandas as pd


df_csv = pd.read_csv('fatty_acids.csv', index_col=0) #CSV-Datei lesen
df_text = pd.read_csv('fatty_acids.txt', sep='\t', index_col=0) #Tabulatorgetrennte Textdatei lesen
df_excel = pd.read_excel('fatty_acids.xlsx', index_col=0) #Excel-Datei lesen

print(df_csv)
print(df_text)
print(df_excel)

So lesen Sie nur die ersten oder letzten Zeilen eines DataFrame:

import pandas as pd


df_csv = pd.read_csv('fatty_acids.csv', index_col=0) #CSV-Datei lesen
df_text = pd.read_csv('fatty_acids.txt', sep='\t', index_col=0) #Tabulatorgetrennte Textdatei lesen
df_excel = pd.read_excel('fatty_acids.xlsx', index_col=0) #Excel-Datei lesen

print(df_csv.head()) #Zeige die ersten 5 Zeilen
print(df_csv.head(3)) #Zeige die ersten 3 Zeilen
print(df_csv.tail()) #Letzte 5 Zeilen anzeigen

head extrahiert die Daten der ersten angegebenen Anzahl von Zeilen und tail extrahiert die Daten der zuletzt angegebenen Anzahl von Zeilen. Wenn Sie die Anzahl der Zeilen nicht angeben, werden standardmäßig 5 Zeilen angezeigt. Gleiches gilt für df_text und df_excel.

Wie oben erwähnt, können Sie, wenn Sie die externe Datei als DataFrame lesen und wissen, wie die Daten gespeichert werden, bestimmte Zeilen und Spalten extrahieren, neue Spalten hinzufügen und berechnen, und fertig. Der grundlegende Ablauf der Datenanalyse besteht in der Ausgabe einer Tabelle.

Zusammenfassung

Hier erklärte ich über Pandas und konzentrierte mich auf praktisches Wissen, das in der Chemoinfomatik verwendet werden kann. Lassen Sie uns die wichtigsten Punkte noch einmal überprüfen.

--Pandas können zwei Arten von Datenstrukturen verarbeiten, Series und DataFrame.

Als nächstes wird Matplotlib im folgenden Artikel erklärt.

Matplotlib mit Chemoinformatik lernen

Referenzmaterialien / Links

Was ist die Programmiersprache Python? Kann es für KI und maschinelles Lernen verwendet werden?

Recommended Posts

Pandas lernen mit Chemoinfomatik
Lernen Sie mit Chemo Informatics Matplotlib
Lernen Sie mit Chemo Informatics NumPy
Mit Pandas schnell visualisieren
Lerne Python mit ChemTHEATER
Datensätze mit Pandas verarbeiten (1)
Bootstrap-Sampling mit Pandas
Konvertieren Sie 202003 bis 2020-03 mit Pandas
Datensätze mit Pandas verarbeiten (2)
Zusammenführen von Datensätzen mit Pandas
Lerne Zundokokiyoshi mit LSTM
Scikit-Lernen mit Chemoinfomatik
Datenvisualisierung mit Pandas
Datenmanipulation mit Pandas!
Daten mit Pandas mischen
DCGAN mit TF Learn
Lernen Sie Pendulum-v0 mit DDPG
Laden Sie verschachtelten Json mit Pandas
Lernen Sie Librosa mit einem Tutorial 1
Lernen Sie mit Chainer elliptische Bahnen
Lernen Sie neue Daten mit PaintsChainer
[Python] Ändere den Typ mit Pandas
Standardisieren Sie nach Gruppen mit Pandas
Iterative Verarbeitung von Python durch Chemoinfomatik gelernt
Verhindern Sie Auslassungen mit Pandas Print
Datenverarbeitungstipps mit Pandas
Extrahieren Sie den Maximalwert mit Pandas.
Lernen Sie mit Causal ML Package Meta-Learner
[Aktienkursanalyse] Lernen Sie Pandas mit Nikkei-Durchschnitt (004: Ändern Sie die gelesenen Daten in Nikkei-Durchschnitt)
[TensorFlow 2] Lernen Sie RNN mit CTC-Verlust
Lass uns mit Selene Deep SEA lernen
Pandas
Vielseitige Datenerfassung mit Pandas + Matplotlib
[Python] Verbinde zwei Tabellen mit Pandas
Lernen Sie die Kategorisierung von Dokumenten mit spaCy CLI
Extrahieren Sie bestimmte mehrere Spalten mit Pandas
1. Mit Python 1-1 gelernte Statistiken. Grundlegende Statistiken (Pandas)
Bequeme Analyse mit Pandas + Jupyter Notebook
Zeichnen Sie ein Diagramm mit Pandas + XlsxWriter
Bearbeiten von Strings mit Pandas gruppieren nach
Bulk Insert Pandas DataFrame mit psycopg2
Ich möchte ○○ mit Pandas machen
Erstellen Sie eine Altersgruppe mit Pandas
Große Pandas Lass uns viel lernen
[Python] Format, wenn to_csv mit Pandas
Feature-Generierung mit Pandas gruppieren nach
Behandelt verschiedene Datumsformate mit Pandas
Ich erhalte eine Fehlermeldung beim Import von Pandas.
Erste Schritte mit Python3 # 1 Grundkenntnisse erlernen
Zeichnen Sie den Nikkei Average Stock Index mit Pandas
Lernen Sie mit Chainer, monochrome Bilder einzufärben
Tipps zum Zeichnen mehrerer Linien mit Pandas
Python lernen! Vergleich mit Java (Grundfunktion)
Versuchen Sie, mit Pandas in ordentliche Daten umzuwandeln
Zeichnen Sie eine hierarchische Achsenbeschriftung mit matplotlib + pandas