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
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".
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.
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.
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.
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.
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
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.
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
Was ist die Programmiersprache Python? Kann es für KI und maschinelles Lernen verwendet werden?
Recommended Posts