Ceci est l'article du 13ème jour du Calendrier de l'Avent scientifique ouvert et reproductible 2019.
En parlant d'analyse statistique, c'est R. Mais certaines personnes comme moi veulent faire n'importe quoi avec Python seul. Pour ces personnes, nous présenterons des bibliothèques et des techniques utiles pour effectuer des analyses statistiques avec Python. Il existe de nombreux articles et livres sur le même thème, mais je me concentrerai sur ceux qui ne sont pas souvent présentés ailleurs. La politique est d'introduire autant que possible un article distinct pour les détails de chaque technique de bibliothèque.
Cible: les personnes qui ont utilisé Python mais qui ne sont pas aptes
Jupyter Notebook / Lab C'est un classique qui a été introduit dans divers articles, mais je vais le présenter pour le moment.
Pourquoi utilisons-nous des logiciels statistiques basés sur des programmes comme Python et R au lieu de basés sur une interface graphique comme SPSS? C'est parce qu'il est ~~ cher ~~ ** d'assurer la reproductibilité des résultats **. En d'autres termes, cela vous permet de vérifier ultérieurement de quel type d'opération / analyse un certain résultat a été obtenu.
Jupyter Notebook est un outil pour écrire des programmes tout en vérifiant les résultats d'exécution un par un. R Markdown dans R, live script dans MATLAB. Il est facile de revenir sur le type de programme à partir duquel chaque résultat d'analyse a été dérivé. C'est un outil indispensable pour l'analyse de données en Python. Pour plus de détails, je pense qu'il est facile de comprendre Articles par ici.
Jupyter Lab est une évolution du Jupyter Notebook. En juin 2019, la version 1.0 a finalement été publiée. Je ne pense pas qu'il y ait une différence décisive par rapport à Notebook, mais il est plus facile à utiliser à bien des égards. Pour plus d'informations, je recommande Articles par ici.
Personnellement, j'aime la fonction de règle. En Python, il existe une convention (PEP8) selon laquelle "c'est bien si la longueur d'une ligne est de 79 caractères ou moins". Vous n'êtes pas obligé de suivre cette convention, mais il est facile de la lire plus tard si vous suivez correctement la longueur de la ligne. Avec la fonction règle, vous pouvez facilement voir jusqu'où 79 caractères sont.
Il peut être affiché dans Notebook en ajoutant l'extension (Reference), mais dans Lab, il peut être implémenté en modifiant simplement les paramètres (Reference)
Comme mentionné ci-dessus, il est recommandé d'écrire le code d'analyse principal sur le fichier .ipynb
avec Jupyter Notebook / Lab.
Cependant, isolons le code compliqué en tant que fonction et écrivons-le dans un autre fichier .py
.
Depuis .ipynb
, si vous l'utilisez simplement par ʻimport`, la lisibilité sera grandement améliorée.
Voir cet article pour savoir comment créer vos propres fonctions et leur permettre d'être ʻimport`.
Cependant, afin de refléter la mise à jour du fichier .py
dans .ipynb
, il est nécessaire de redémarrer le noyau une fois.
C'est assez ennuyeux car toutes les variables sont réinitialisées une fois.
Pour éviter cela, placez le code suivant au début de .ipynb
.
%reload_ext autoreload
%autoreload 2
Désormais, les modifications dans le fichier .py
seront immédiatement reflétées sans redémarrer le noyau.
Une Docstring est un mémo sur la façon d'utiliser une fonction, écrit selon un certain format.
Quand j'ai lu le script d'analyse que j'ai écrit environ un an plus tard, le contenu semble être bâclé. Vous pouvez le déchiffrer si vous prenez le temps, mais si vous conservez le Docstring, vous pouvez facilement regarder en arrière. Pour savoir comment écrire [cet article](https://qiita.com/simonritchie/items/49e0813508cad4876b5a#%E3%81%9D%E3%82%82%E3%81%9D%E3%82%82docstring%E3%81 Si vous lisez% A3% E3% 81% A6), c'est parfait.
En plus de Docstring, laissez les commentaires appropriés afin que vous puissiez comprendre immédiatement le contenu de l'analyse. On dit souvent qu'il y a un débat (référence ))。 Après tout, il semble qu'il soit préférable que le contenu puisse être facilement compris à partir du nom de la variable et du nom de la fonction sans laisser de commentaire.
Opinion personnelle:
Au moins .ipynb
devrait être capable de lire le code en douceur sans laisser de commentaires (ajouter un en-tête).
Si vous pensez que vous ne pouvez pas le lire facilement lorsque vous y reviendrez plus tard, séparez-le en fonction et laissez un commentaire ou une Docstring.
Ce n'est pas limité à Python, mais ...
Git est un système de gestion des versions de code source. En parlant de Git, le site appelé GitHub est célèbre. C'est comme (grosso modo) le stockage dans le cloud pour stocker des données gérées par Git. Avec une utilisation correcte de Git, vous pouvez voir le code source à un moment donné dans le passé.
Comment utiliser Git et GitHub était facile à comprendre dans Articles à proximité.
L'enregistrement fréquent de l'historique des modifications à l'aide de Git semble être une technique essentielle pour les programmeurs. … Mais pour une personne monogusa comme moi, il est difficile de conserver les enregistrements les uns après les autres. À tout le moins, n'enregistrons l'historique que ** lorsque les résultats d'analyse sont annoncés dans les laboratoires, les sessions d'étude, les conférences, les articles, etc. **. Vous pouvez revenir sur le type de code que les résultats d'analyse utilisés dans ces présentations ont été obtenus.
Trouver la cause d'une erreur est la première étape pour corriger une erreur de programme. Dans un tel cas, la fonction de débogage vous permet de vérifier le contenu des variables autour de l'erreur et de vérifier le flux de code étape par étape. Pour savoir comment utiliser la fonction de débogage de Python, veuillez consulter cet article. Cependant, les méthodes présentées dans cet article, etc. ne peuvent pas être utilisées à partir de Jupyter Notebook. Réécrivez comme suit (Référence).
# import pdb; pdb.set_trace() <-Au lieu de cela
from IPython.core.debugger import Pdb; Pdb().set_trace() # <-cette
Si vous utilisez Python 3.7 ou version ultérieure, ↓ est OK. (Référence)
# import pdb; pdb.set_trace() <-Au lieu de cela
# from IPython.core.debugger import Pdb; Pdb().set_trace() <-Pas ça
breakpoint() # <-Seulement ça
point d'arrêt ()
, super pratique.
Je savais que je pouvais «importer» une fonction que j'avais définie à partir d'un autre fichier .py Jusqu'à récemment, je ne savais pas que des variables (constantes) pouvaient également être définies. Veuillez consulter cet article pour savoir comment procéder. Si vous souhaitez écrire un grand nombre de paramètres dans une ligne, cette méthode facilitera la visualisation plus tard.
De nombreuses personnes utilisent Google Forms pour mener des enquêtes. Lorsque vous analysez les données stockées dans une feuille de calcul Google, vous pensez généralement que vous devez la télécharger au format .csv, puis la charger. Mais avec une bibliothèque appelée ʻoauth2client`, vous pouvez charger des feuilles de calcul directement dans Python. Il est recommandé aux personnes qui souhaitent analyser les progrès un par un mais qui ont des difficultés à télécharger les fichiers un par un.
La méthode est présentée à ici.
Il est pratique d'en faire une fonction comme ↓.
import pandas as pd
from oauth2client.service_account import ServiceAccountCredentials
import gspread
def fetch_spread_sheet(spreadsheet_name, worksheet_num, json_path):
"""
Charger la feuille de calcul Google spécifiée en tant que type DataFrame
Parameters
----------
worksheet_name: str
Le nom de la feuille de calcul à charger
worksheet_num: int
Parmi les feuilles de calcul, le numéro de la feuille de calcul à charger
json_path: str
Chemin du fichier json téléchargé à partir du gestionnaire d'API GoogleDrive
"""
scopes = ['https://www.googleapis.com/auth/drive']
credentials = ServiceAccountCredentials.from_json_keyfile_name(
json_path, scopes=scopes)
gc = gspread.authorize(credentials)
workbook = gc.open(spreadsheet_name)
sheet = workbook.get_worksheet(worksheet_num)
return pd.DataFrame(sheet.get_all_values())
Pingouin (Pangouin, Penguin en français) est un progiciel statistique utilisable en Python (Site officiel). C'est un nouveau package qui a été publié pour la première fois en avril 2018.
En parlant de packages de statistiques Python, il y a «StatsModels» et «scipy.stats».
D'autre part, Uri de Pinguin est "simple et complet".
Par exemple, si vous utilisez ttest_ind
de scipy.stats
, il effectuera un test t et retournera la valeur t et la valeur p.
D'autre part, pingouin.ttest
renvoie la valeur t, la valeur p, ** la liberté, la taille de l'effet, l'intervalle de confiance à 95%, la puissance de test, le facteur Bayse ** en même temps.
Consultez le Site officiel pour une liste des fonctions pingouin. Il existe des fonctions qui ne peuvent pas être exécutées par d'autres bibliothèques ou qui sont compliquées.
Recommended Posts