Python Statistical Techniques-Statistische Analyse gegen Python-

Dies ist der Artikel zum 13. Tag des Open and Reproducible Science Advent Calendar 2019.

Zweck des Artikels

Apropos statistische Analyse, es ist R. Aber manche Leute wie ich wollen alles nur mit Python machen. Für diese Personen werden nützliche Bibliotheken und Techniken zur Durchführung statistischer Analysen mit Python vorgestellt. Es gibt viele Artikel und Bücher zum gleichen Thema, aber ich werde mich auf diejenigen konzentrieren, die an anderer Stelle nicht oft vorgestellt werden. Die Richtlinie besteht darin, so viel wie möglich einen separaten Artikel für die Details jeder Bibliothekstechnik einzuführen.

Ziel: Personen, die Python verwendet haben, aber nicht geeignet sind

Jupyter Notebook / Lab Es ist ein Klassiker, der in verschiedenen Artikeln vorgestellt wurde, aber ich werde ihn vorerst vorstellen.

Warum verwenden wir programmbasierte Statistiksoftware wie Python oder R anstelle von GUI-basierten wie SPSS? Das liegt daran, dass es ~~ teuer ~~ ** ist, die Reproduzierbarkeit der Ergebnisse zu gewährleisten **. Mit anderen Worten, dies ist so, dass Sie später überprüfen können, aus welcher Art von Operation / Analyse ein bestimmtes Ergebnis erhalten wurde.

Jupyter Notebook ist ein Tool zum Schreiben von Programmen, bei dem die Ausführungsergebnisse einzeln überprüft werden. R Markdown in R, Live-Skript in MATLAB. Es ist leicht zurückzublicken, aus welcher Art von Programm jedes Analyseergebnis abgeleitet wurde. Es ist ein Muss für die Datenanalyse in Python. Für Details denke ich, dass es leicht zu verstehen ist Artikel hier.

Jupyter Lab ist eine Weiterentwicklung des Jupyter Notebook. Im Juni 2019 wurde Version 1.0 endlich veröffentlicht. Ich glaube nicht, dass es einen entscheidenden Unterschied zu Notebook gibt, aber es ist in vielerlei Hinsicht einfacher zu bedienen. Für weitere Informationen empfehle ich Artikel hier.

Persönlich mag ich die Linealfunktion. In Python gibt es eine Konvention (PEP8), dass "es gut ist, wenn die Länge einer Zeile 79 Zeichen oder weniger beträgt". Sie müssen diese Konvention nicht befolgen, aber es ist einfach, sie später zu lesen, wenn Sie die Zeilenlänge richtig befolgen. Mit der Linealfunktion können Sie leicht sehen, wie weit 79 Zeichen entfernt sind.

Es kann in Notebook durch Hinzufügen der Erweiterung (Referenz angezeigt werden. In Lab kann es jedoch durch einfaches Ändern der Einstellungen ([Referenz]) implementiert werden. https://stackoverflow.com/questions/49322559/how-can-i-add-a-ruler-vertical-line-to-codemirror-editors-in-jupyterlab))

In Funktionen teilen

Wie oben erwähnt, wird empfohlen, den Hauptanalysecode mit Jupyter Notebook / Lab in die .ipynb-Datei zu schreiben. Isolieren wir jedoch den komplizierten Code als Funktion und schreiben ihn in eine andere .py-Datei. Ab .ipynb wird die Lesbarkeit erheblich verbessert, wenn Sie es nur durch Import verwenden.

In diesem Artikel erfahren Sie, wie Sie Ihre eigenen Funktionen erstellen und sie "importieren" lassen.

Um jedoch die Aktualisierung der .py-Datei in .ipynb widerzuspiegeln, muss der Kernel einmal neu gestartet werden. Es ist ziemlich ärgerlich, weil alle Variablen einmal zurückgesetzt werden. Um dies zu verhindern, setzen Sie den folgenden Code am Anfang von ".ipynb".

%reload_ext autoreload
%autoreload 2

Damit werden die Änderungen in der .py-Datei sofort übernommen, ohne den Kernel neu zu starten.

Docstring verlassen

Ein Docstring ist ein Memo über die Verwendung einer Funktion, die in einem bestimmten Format geschrieben wurde.

Wenn ich das Analyseskript lese, das ich ungefähr ein Jahr später geschrieben habe, scheint der Inhalt schlampig zu sein. Sie können es entziffern, wenn Sie sich die Zeit nehmen, aber wenn Sie den Docstring behalten, können Sie leicht zurückblicken. Informationen zum Schreiben [dieses Artikels](https://qiita.com/simonritchie/items/49e0813508cad4876b5a#%E3%81%9D%E3%82%82%E3%81%9D%E3%82%82docstring%E3%81 Wenn Sie% A3% E3% 81% A6) lesen, ist es perfekt.

Hinterlasse einen Kommentar ...?

Hinterlassen Sie zusätzlich zu Docstring die entsprechenden Kommentare, damit Sie den Inhalt der Analyse sofort verstehen können. Es wird oft gesagt, dass es eine Debatte gibt (Referenz ))。 Schließlich scheint es am besten zu sein, wenn der Inhalt aus dem Variablennamen und dem Funktionsnamen leicht zu verstehen ist, ohne einen Kommentar zu hinterlassen.

Persönliche Meinung: Zumindest ".ipynb" sollte in der Lage sein, den Code reibungslos zu lesen, ohne Kommentare zu hinterlassen (Überschrift hinzufügen). Wenn Sie der Meinung sind, dass Sie es nicht leicht lesen können, wenn Sie später darauf zurückblicken, trennen Sie es als Funktion und hinterlassen Sie einen Kommentar oder eine Dokumentzeichenfolge.

Verwenden Sie Git (zumindest mäßig)

Es ist nicht auf Python beschränkt, aber ...

Git ist ein System zur Verwaltung von Quellcodeversionen. Apropos Git, die Seite GitHub ist berühmt. Es ist wie (grob gesagt) Cloud-Speicher zum Speichern von Git-verwalteten Daten. Bei ordnungsgemäßer Verwendung von Git können Sie den Quellcode zu einem früheren Zeitpunkt anzeigen.

Die Verwendung von Git und GitHub war in Artikel hier leicht zu verstehen.

Das häufige Aufzeichnen des Änderungsverlaufs mit Git scheint eine wesentliche Technik für Programmierer zu sein. … Aber für eine Monogusa-Person wie mich ist es schwierig, Aufzeichnungen nacheinander zu führen. Lassen Sie uns zumindest die Historie nur aufzeichnen **, wenn die Analyseergebnisse in Labors, Studiensitzungen, Konferenzen, Vorträgen usw. bekannt gegeben werden **. Sie können zurückblicken, welche Art von Code die in diesen Präsentationen verwendeten Analyseergebnisse erhalten haben.

Debuggen mit Haltepunkt ()

Das Ermitteln der Fehlerursache ist der erste Schritt zur Behebung eines Programmfehlers. In einem solchen Fall können Sie mit der Debug-Funktion den Inhalt der Variablen um den Fehler herum überprüfen und den Code-Fluss Schritt für Schritt überprüfen. Informationen zur Verwendung der Debug-Funktion von Python finden Sie in diesem Artikel. Die in diesem Artikel usw. vorgestellten Methoden können jedoch nicht von Jupyter Notebook verwendet werden. Schreiben Sie wie folgt um (Referenz).

# import pdb; pdb.set_trace() <-An Stelle von
from IPython.core.debugger import Pdb; Pdb().set_trace()    # <-Dies

Wenn Sie Python 3.7 oder höher verwenden, ist ↓ in Ordnung. (Referenz)

# import pdb; pdb.set_trace() <-An Stelle von
# from IPython.core.debugger import Pdb; Pdb().set_trace() <-Nicht das
breakpoint()    # <-Nur das

breakpoint (), super praktisch.

Lesen Sie Variablen aus einer anderen Datei

Ich wusste, dass ich eine Funktion, die ich definiert hatte, aus einer anderen .py-Datei importieren konnte. Bis vor kurzem wusste ich nicht, dass auch Variablen (Konstanten) definiert werden können. Informationen hierzu finden Sie in diesem Artikel. Wenn Sie eine große Anzahl von Parametern hintereinander schreiben möchten, erleichtert diese Methode das spätere Anzeigen.

Laden Sie die Google-Tabelle

Viele Menschen verwenden Google Forms, um Umfragen durchzuführen. Wenn Sie die in einer Google-Tabelle gespeicherten Daten analysieren, sollten Sie sie normalerweise als CSV-Datei herunterladen und dann laden. Sie können jedoch eine Bibliothek namens "oauth2client" verwenden, um Tabellenkalkulationen direkt in Python zu laden. Es wird Personen empfohlen, die den Fortschritt einzeln analysieren möchten, aber Probleme beim Herunterladen von Dateien nacheinander haben.

Die Methode wird unter [hier] vorgestellt (https://qiita.com/AAkira/items/22719cbbd41b26dbd0d1).

Es ist praktisch, eine Funktion wie ↓ zu erstellen.

import pandas as pd
from oauth2client.service_account import ServiceAccountCredentials
import gspread


def fetch_spread_sheet(spreadsheet_name, worksheet_num, json_path):
    """
Laden Sie die angegebene Google-Tabelle als DataFrame-Typ

    Parameters
    ----------
    worksheet_name: str
Der Name der zu ladenden Tabelle
    worksheet_num: int
Von den Tabellenkalkulationen die zu ladende Arbeitsblattnummer
    json_path: str
Pfad der vom GoogleDrive-API-Manager heruntergeladenen JSON-Datei
    """
    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())

Statistische Bibliothek Pingouin

Pingouin (Pingouin, französisch für Pinguin) ist ein Statistikpaket, das in Python verwendet werden kann (Offizielle Website). Es ist ein neues Paket, das erstmals im April 2018 veröffentlicht wurde.

Apropos Python-Statistikpakete: Es gibt "StatsModels" und "scipy.stats". Auf der anderen Seite ist Pinguins Uri "einfach und gründlich". Wenn Sie beispielsweise "ttest_ind" von "scipy.stats" verwenden, wird t test ausgeführt und t value und p value zurückgegeben. Andererseits gibt pingouin.ttest t-Wert, p-Wert, ** Freiheit, Effektgröße, 95% -Konfidenzintervall, Testleistung, Bayse-Faktor ** auf einmal zurück.

Auf der offiziellen Website finden Sie eine Liste der Pingouin-Funktionen. Es gibt Funktionen, die in anderen Bibliotheken nicht ausgeführt werden können oder kompliziert sind.

Recommended Posts

Python Statistical Techniques-Statistische Analyse gegen Python-
Datenanalyse Python
Datenanalyse mit Python 2
Python: Zeitreihenanalyse
Datenanalyse Übersicht Python
Sprachanalyse mit Python
Python-Datenanalysevorlage
Assoziationsanalyse in Python
Sprachanalyse mit Python
Datenanalyse mit Python
Regressionsanalyse mit Python
Mein Python-Datenanalyse-Container
[Python] Morphologische Analyse mit MeCab
[Analyse des gemeinsamen Auftretens] Einfache Analyse des gemeinsamen Auftretens mit Python! [Python]
Python für die Datenanalyse Kapitel 4
Python: Japanischer Text: Morphologische Analyse
Emotionsanalyse von Python (word2vec)
Statische Analyse von Python-Programmen
[Python] Hinweise zur Datenanalyse
Axialsymmetrische Spannungsanalyse mit Python
Lernnotizen zur Python-Datenanalyse
Planare Skelettanalyse mit Python
Japanische morphologische Analyse mit Python
Python für die Datenanalyse Kapitel 2
Einfache Regressionsanalyse mit Python
Datenanalyse mit Python-Pandas
Muskel-Ruck-Analyse mit Python
Python für die Datenanalyse Kapitel 3
[Statistischer Test 2. Klasse / quasi 1. Klasse] Regressives Analysetraining mit Python (2)
[Statistischer Test 2. Klasse / quasi 1. Klasse] Regressives Analysetraining mit Python (1)
Gehirnwellenanalyse mit Python: Python MNE-Tutorial
Erste einfache Regressionsanalyse in Python
Dreidimensionale Skelettstrukturanalyse mit Python
Python: Zeitreihenanalyse: Vorverarbeitung von Zeitreihendaten
Impedanzanalyse (EIS) mit Python [impedance.py]
Text Mining mit Python ① Morphologische Analyse
Python: Negative / Positive Analyse: Textanalyse-Anwendung
Vorverarbeitungsvorlage für die Datenanalyse (Python)
Statistischer Test (Mehrfachtest) in Python: scikit_posthocs
Planare Skelettanalyse in Python (2) Hotfix
Datenanalyse beginnend mit Python (Datenvisualisierung 1)
Einführung in die Bildanalyse opencv python
Logistische Regressionsanalyse Selbst erstellt mit Python
Datenanalyse beginnend mit Python (Datenvisualisierung 2)