Suite à NumPy appris de la chimioinfomatique, "Pandas" est l'une des bibliothèques représentatives de Python avec le thème de la lipidomique (analyse complète des lipides). Je vais vous expliquer. Nous expliquerons principalement des exemples pratiques de chimioinfomatique, donc si vous souhaitez vérifier les bases, veuillez lire l'article suivant avant de lire cet article.
Un chercheur de la société pharmaceutique a résumé Pandas
Pandas facilite les calculs de table.
Pour utiliser la bibliothèque, chargez-la d'abord avec ʻimport`. Par convention, il est souvent abrégé en «pd».
Pandas gère deux types de structures de données, «Series» et «DataFrame».
Les séries sont des données unidimensionnelles et ont une structure de données similaire à une liste ou un dictionnaire.
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)
Dans l'exemple ci-dessus, vous pouvez considérer ʻindex_fatty_acids comme quelque chose comme le nom des données. Vous pouvez également créer une série basée sur le dictionnaire comme indiqué ci-dessous. ʻIndex_fatty_acids
est la clé du dictionnaire.
Cependant, ce sera un code long, il est donc préférable de spécifier la liste avec ʻindex = `.
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)
D'autre part, DataFrame est une donnée bidimensionnelle créée en combinant Series.
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)
Dans l'exemple ci-dessus, la clé du dictionnaire dans pd.DataFrame
est le nom de colonne de la table.
D'un autre côté, «index» spécifié lors de la création de la série devient le nom de la ligne.
A propos, «df» dans «df_fatty_acids» est une abréviation pour «data frame».
Pour faire référence aux noms de ligne et de colonne du DataFrame, utilisez respectivement «index» et «colonnes».
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) #Nom de la ligne
print(df_fatty_acids.columns) #Nom de colonne
Pour accéder à un élément spécifique d'un DataFrame, écrivez:
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']) #Spécifiez le nom de la colonne
print(df_fatty_acids.Cn) #Spécifiez le nom de la colonne
print(df_fatty_acids['Cn'][0]) #Spécifiez le nom de la colonne et spécifiez le numéro de ligne
print(df_fatty_acids[2:5]) #Spécifiez le numéro de ligne (numéro d'index) avec une tranche
print(df_fatty_acids[5:]) #Extraire les données après le numéro de ligne spécifié
print(df_fatty_acids[:5]) #Extraire les données jusqu'au numéro de ligne spécifié
print(df_fatty_acids[-5:]) #Numéro de ligne compté à l'arrière
print(df_fatty_acids[2:5]['Cn']) #Spécifiez le numéro de ligne et le nom de la colonne
print(df_fatty_acids.loc['FA 16:0', 'Cn']) #Spécifiez le nom de la ligne et le nom de la colonne
print(df_fatty_acids.loc['FA 16:0']) #Spécifiez le nom de la ligne
print(df_fatty_acids.loc[:, 'Cn']) #Spécifiez le nom de la colonne
print(df_fatty_acids.iloc[0, 0]) #Spécifiez le numéro de ligne et le numéro de colonne
print(df_fatty_acids.iloc[0]) #Spécifiez le numéro de ligne
print(df_fatty_acids.iloc[:, 0]) #Spécifiez le numéro de colonne
print(df_fatty_acids.iloc[-1, -1]) #Élément dans la dernière colonne de la dernière ligne
S'il est préférable de spécifier le nom de ligne ou de colonne ou le numéro de ligne ou le numéro de colonne est au cas par cas, il est donc préférable de choisir celui qui est facile à faire à chaque fois.
Vous pouvez également extraire des données qui remplissent les conditions spécifiées.
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 a extrait les lignes qui remplissent les conditions
print(df_fatty_acids[df_fatty_acids['Cn'] >= 18]['Cn']) #Extraire les lignes qui remplissent les conditions en spécifiant les noms de colonne dans DataFrame
print(df_fatty_acids[df_fatty_acids['Cn'] >= 18].iloc[:, 0]) #Extraire les lignes qui remplissent les conditions en spécifiant le numéro de colonne dans le DataFrame
print(df_fatty_acids[(df_fatty_acids['Cn'] >= 18) & (df_fatty_acids['Un'] >= 2)]) #Spécifiez plusieurs conditions (et)
print(df_fatty_acids[(df_fatty_acids['Cn'] >= 18) | (df_fatty_acids['Un'] >= 1)]) #Spécifiez plusieurs conditions (ou)
Lorsque vous spécifiez plusieurs conditions, les parenthèses ()
sont obligatoires pour chaque condition. N'oublie pas.
Vous pouvez spécifier une colonne spécifique avec DataFrame name ['column name']
, mais si vous spécifiez un nom de colonne qui n'est pas dans le DataFrame, une nouvelle colonne sera créée.
Vous pouvez également calculer facilement en fonction des données d'une autre colonne.
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)
Dans l'exemple ci-dessus, le nombre d'atomes de carbone «C» et le nombre d'atomes d'hydrogène «H» de chaque espèce moléculaire d'acide gras sont calculés sur la base des valeurs des colonnes «Cn» et «Un».
Si vous sortez df_fatty_acids
, vous pouvez voir que de nouvelles colonnes C
, H
et ʻO` ont été ajoutées.
Ensuite, envisagez de trouver la masse exacte de chaque espèce moléculaire d'acide gras.
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) #Mettez 0 dans toutes les lignes pour le moment
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] #Calculer la masse de précision
print(df_fatty_acids)
Dans l'exemple ci-dessus, la masse précise de la molécule d'acide gras est calculée en ajoutant la masse de précision de chaque atome multipliée par le nombre d'atomes.
Ensuite, trouvons la formule de composition.
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) #Pour le moment, mettez des caractères vides sur toutes les lignes
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) #Ecrire la formule de composition
print(df_fatty_acids)
Vous pouvez combiner le symbole de l'élément et le nombre d'atomes sous forme de chaîne de caractères, mais comme les données contenues dans «C», «H», «O» sont une valeur numérique, il est nécessaire de les convertir en chaîne de caractères avant de les combiner. Il y a. Par conséquent, dans l'exemple ci-dessus, en tant que ʻas type (str) `, les valeurs numériques sont converties en chaînes de caractères puis combinées.
Ensuite, envisagez de sortir les données complètes sous forme de fichier externe.
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 #Masse de précision
for atom in exact_masses.index:
df_fatty_acids['Molecular formula'] += atom + df_fatty_acids[atom].astype(str) #Formule de composition
df_fatty_acids.to_csv('fatty_acids.csv') #Sortie sous forme de fichier CSV
df_fatty_acids.to_csv('fatty_acids.txt', sep='\t') #Sortie sous forme de fichier texte délimité par des tabulations
df_fatty_acids.to_excel('fatty_acids.xlsx', sheet_name='fatty_acids') #Sortie sous forme de fichier Excel
Inversement, pour lire un fichier externe, procédez comme suit:
import pandas as pd
df_csv = pd.read_csv('fatty_acids.csv', index_col=0) #Lire le fichier CSV
df_text = pd.read_csv('fatty_acids.txt', sep='\t', index_col=0) #Lire le fichier texte délimité par des tabulations
df_excel = pd.read_excel('fatty_acids.xlsx', index_col=0) #Lire le fichier Excel
print(df_csv)
print(df_text)
print(df_excel)
Pour lire uniquement les premières ou dernières lignes d'un DataFrame:
import pandas as pd
df_csv = pd.read_csv('fatty_acids.csv', index_col=0) #Lire le fichier CSV
df_text = pd.read_csv('fatty_acids.txt', sep='\t', index_col=0) #Lire le fichier texte délimité par des tabulations
df_excel = pd.read_excel('fatty_acids.xlsx', index_col=0) #Lire le fichier Excel
print(df_csv.head()) #Afficher les 5 premières lignes
print(df_csv.head(3)) #Afficher les 3 premières lignes
print(df_csv.tail()) #Afficher les 5 dernières lignes
«head» extrait les données du premier nombre de lignes spécifié et «tail» extrait les données du dernier nombre de lignes spécifié. Si vous ne spécifiez pas le nombre de lignes, 5 lignes sont affichées par défaut. La même chose est vraie pour «df_text» et «df_excel».
Comme mentionné ci-dessus, si vous lisez le fichier externe en tant que DataFrame et savez comment les données sont stockées, vous pouvez extraire des lignes et des colonnes spécifiques, ajouter de nouvelles colonnes et calculer, et vous avez terminé. Le flux de base de l'analyse des données consiste à produire un tableau.
Ici, j'ai expliqué les pandas, en me concentrant sur les connaissances pratiques pouvant être utilisées en chimioinfomatique. Revoyons à nouveau les principaux points.
--Pandas peut gérer deux types de structures de données, Series et DataFrame.
Ensuite, Matplotlib est expliqué dans l'article suivant.
Apprendre Matplotlib avec Chemo Informatics
Recommended Posts