Techniques statistiques Python-Analyse statistique contre Python-

Ceci est l'article du 13ème jour du Calendrier de l'Avent scientifique ouvert et reproductible 2019.

Objet de l'article

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)

Diviser en fonctions

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.

Quitter Docstring

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.

Laissez un commentaire ...?

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.

Utilisez Git (au moins modérément)

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.

Débogage avec point d'arrêt ()

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.

Lire les variables d'un autre fichier

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.

Charger la feuille de calcul Google

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())

Bibliothèque de statistiques Pingouin

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

Techniques statistiques Python-Analyse statistique contre Python-
Analyse de données python
Analyse de données avec python 2
Python: analyse des séries chronologiques
Présentation de l'analyse de données python
Analyse vocale par python
Modèle d'analyse de données Python
Analyse d'association en Python
Analyse vocale par python
Analyse de données avec Python
Analyse de régression avec Python
Mon conteneur d'analyse de données python
[Python] Analyse morphologique avec MeCab
[Analyse de co-occurrence] Analyse de co-occurrence facile avec Python! [Python]
Python pour l'analyse des données Chapitre 4
Python: texte japonais: analyse morphologique
Analyse des émotions par Python (word2vec)
Analyse statique des programmes Python
[Python] Notes sur l'analyse des données
Analyse des contraintes symétriques axiales avec Python
Notes d'apprentissage sur l'analyse des données Python
Analyse de squelette planaire avec Python
Analyse morphologique japonaise avec Python
Python pour l'analyse des données Chapitre 2
Analyse de régression simple avec Python
Analyse de données à l'aide de pandas python
Analyse des secousses musculaires avec Python
Python pour l'analyse des données Chapitre 3
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (2)
[Test statistique 2e année / quasi 1e année] Formation à l'analyse régressive avec Python (1)
Analyse des ondes cérébrales avec Python: tutoriel Python MNE
Première analyse de régression simple en Python
Analyse de la structure du squelette en trois dimensions avec Python
Python: analyse des séries chronologiques: prétraitement des données des séries chronologiques
Analyse d'impédance (EIS) avec python [impedance.py]
Text mining avec Python ① Analyse morphologique
Python: analyse négative / positive: application d'analyse de texte
Modèle de prétraitement pour l'analyse des données (Python)
Test statistique (test multiple) en Python: scikit_posthocs
Analyse du squelette planaire dans Python (2) Hotfix
Analyse de données à partir de python (visualisation de données 1)
Introduction à l'analyse d'image opencv python
Python: apprentissage non supervisé: analyse principale
Analyse de régression logistique Self-made avec python
Analyse de données à partir de python (visualisation de données 2)