[Algorithmus x Python] Berechnung der Basisstatistik Teil2 (Mittelwert, Median, am häufigsten)

Ich werde über Algorithmen und Python schreiben. Dieses Mal werde ich nicht nur schreiben, wie man eine einfache Berechnung mit einer Funktion findet, sondern auch, wie man sie findet, wenn die Funktion nicht verwendet wird.

Inhaltsverzeichnis

  1. Bestätigung von Arithmetik- und Vergleichsoperatoren
  2. Informationen zur Listeneinschlussnotation
  3. Finden Sie den Durchschnittswert 2-0. Arithmetischer Durchschnitt 2-1 Geometrischer Durchschnitt 2-2. Quadratischer Durchschnitt 2-3 Harmonischer Durchschnitt
  4. Finden Sie den Median
  5. Finden Sie den häufigsten Wert Schließlich

0. Bestätigung von Arithmetik- und Vergleichsoperatoren

Arithmetischer Operator

◯ Informationen zu Symbolen für die Durchführung von Berechnungen.

Operator Bedeutung Beispiel Ergebnis
+ Zusatz 3 + 4 7
- Subtraktion 10 - 2 8
* Multiplizieren 5 * -6 -30
/ Gleitkommazahlenteilung 5 / 2 2.5
// Ganzzahlige Division 5 // 2 2
% Zu viel Spaltung 7 % 2 1
** ~Reiten(Index) 2 ** 4 16

Vergleichsoperator

◯ Über Symbole zum Vergleich. Gibt einen booleschen Wert von True oder False zurück.

Bedeutung Operator
gleich ==
Nicht gleich !=
Kleiner <
Weniger als <=
Größer >
Nicht gleich >=
Ist ein Element in ~

Informationen zur Listeneinschlussnotation

◯ Die Listeneinschlussnotation wird verwendet, um verschiedene Arten von Listen effizient zu erstellen. Ich möchte auch in diesem Artikel verschiedene Listen verwenden, daher werde ich sie im Voraus schreiben.

Was ist Listeneinschlussnotation?

Dies ist eine Möglichkeit, eine Liste zu erstellen. Es ist in Form von ** [Element für Element, das in der Liste gespeichert werden soll] ** definiert. Das in der Liste gespeicherte ** Element ** ist ein ** Ausdruck **, der das Element verwendet. ** Iterierbare Objekte ** sind Objekte, die einzeln abgerufen werden können.

Beispiel für die Verwendung der Listeneinschlussnotation

◯ Die Funktion range () gibt ein iterierbares Objekt zurück.

ex0.py


#Rufen Sie nacheinander Ganzzahlen von 1 bis weniger als 10 ab und speichern Sie die Werte in der Zahlenliste
numbers = [number for number in range(1,10)]
print(numbers)
[1, 2, 3, 4, 5, 6, 7, 8, 9]

ex1.py


#Nimmt nacheinander ganze Zahlen von 1 bis weniger als 10 und speichert den mit 2 multiplizierten Wert in der Zahlenliste.
numbers = [number * 2 for number in range(1,10)]
print(numbers)
[2, 4, 6, 8, 10, 12, 14, 16, 18]

ex2.py


#Extrahieren Sie nacheinander ganze Zahlen von 1 bis weniger als 10 und speichern Sie nur gerade Werte in der Zahlenliste.
numbers = [number for number in range(1,10) if number % 2 == 0]
print(numbers)
[2, 4, 6, 8]

ex3.py


#Liste der Zeichenfolgen
list_1 = ['1','2','3']
#Liste der Zeichenfolgen Liste_Extrahieren Sie Elemente einzeln aus 1, konvertieren Sie sie in Ganzzahlen und speichern Sie sie in den Listennummern
numbers = [int(i) for i in list_1]
print(numbers)
[1, 2, 3]

ex4.py


#Wenn das extrahierte Element ungerade ist, speichern Sie es so wie es ist, und wenn es gerade ist, speichern Sie es nach dem Quadrat.
numbers = [i if i % 2 == 1 else i**2 for i in range(10)]
print(numbers)
[0, 1, 4, 3, 16, 5, 36, 7, 64, 9]

2. Finden Sie den Durchschnittswert

2-0. So finden Sie den arithmetischen Durchschnitt

◯ Es ist ein allgemein bekannter Durchschnittswert. Sie kann anhand des Gesamtwerts der Elemente / der Anzahl der Elemente berechnet werden.


So ermitteln Sie den Durchschnittswert mit der Funktion mean ()

◯ Importieren Sie die Standardbibliothek statistics, damit Sie die Funktion mean () verwenden können.

#Modul importieren
import statistics

numbers = [1,2,3,4,5,6]
#Mittelwert im Statistikmodul()Funktion
mean_of_numbers = statistics.mean(numbers)
print('mean =',mean_of_numbers)
mean = 3.5

◯ ** Punkt **: Modul Eine Datei, die den zugehörigen Python-Code zusammenfasst. Es wird in Form eines Importmoduls verwendet.

◯ ** Punkt **: Punkt (.) Der Punkt bedeutet ** hineingehen **. Um die Funktionen und Variablen innerhalb eines Moduls zu verwenden, verwenden Sie module.function oder module.variable, wie statistics.mean ().

Point: Offizielle Dokumentation: Statistik


So ermitteln Sie den Durchschnittswert anhand des Gesamtwerts

◯ ** Berechnen Sie mit dem Gesamtwert der Elemente / Anzahl der Elemente **.


#Versuchen Sie, die Elemente der Liste in der Listeneinschlussnotation zu definieren
#Die zu definierende Liste ist[1,2,3,4,5,6]
numbers = [number for number in range(1,7)]

#Durchschnitt = Gesamtwert/Elementanzahl
average = sum(numbers)/len(numbers)

print('numbers = ',numbers)
print('average of numbers = ', average)
numbers =  [1, 2, 3, 4, 5, 6]
average of numbers =  3.5

2-1. So ermitteln Sie den geometrischen Durchschnitt

◯ Der geometrische Durchschnitt wird verwendet, wenn ** Daten verarbeitet werden, die durch die Änderungsrate ** dargestellt werden. (Beispiel) Wenn sich Ihre Ersparnisse jährlich um 5% erhöhen, wird dies mit 1,05 multipliziert. Wenn der Wert im folgenden Jahr mit einer jährlichen Rate von 7% steigt, ergibt sich der Betrag, der durch Multiplizieren des anfänglichen Sparbetrags mit 1,05 und anschließendes Multiplizieren mit 1,07 erhalten wird. Der geometrische Durchschnitt wird verwendet, um ** den Jahresdurchschnitt der Änderungsrate ** zu diesem Zeitpunkt zu erhalten.

◯ Die Formel zur Berechnung des geometrischen Durchschnitts (geometric_mean) lautet ** xG = n√ x1 * x2 * x3 *… * xn **. Mit anderen Worten, es kann erhalten werden, indem alle Daten multipliziert werden (Änderungsrate) und die Wurzel der Anzahl von Daten gezogen wird.

◯ [Bedeutung und Berechnungsmethode des geometrischen Durchschnitts (synergistischer Durchschnitt) - Berechnung der durchschnittlichen Wachstumsrate -](https://toukeigaku-jouhou.info/2015/08/23/geometric-mean/#:~:text=% E5% B9% BE% E4% BD% 95% E5% B9% B3% E5% 9D% 87% EF% BC% 88geometrisch% 20mean% EF% BC% 89% E3% 81% AF,% E3% 81% A7 % E5% BE% 97% E3% 82% 89% E3% 82% 8C% E3% 82% 8B% E5% 80% A4% E3% 81% A7% E3% 81% 99% E3% 80% 82 & text =% EF% BD% 81% E3% 81% A8% EF% BD% 82% E3% 81% A8% EF% BD% 83,% E3% 82% 92% E3% 81% 97% E3% 81% A6% E3 % 81% 84% E3% 81% 8D% E3% 81% BE% E3% 81% 99% E3% 80% 82)


So finden Sie den geometrischen Durchschnitt mit der Funktion gmean ()

◯ Berechnen Sie ein Beispiel für Unternehmensverkäufe.

  1. Jahr: 10 Millionen Yen Zweites Jahr: 25 Millionen Yen (2,5-faches des Vorjahres) Drittes Jahr: 40 Millionen Yen (1,6-faches des Vorjahres)

Angenommen, der jährliche Durchschnitt der Änderungsrate des Umsatzes ist "geometric_mean"

#gmean()Importfunktion
from scipy.stats import gmean

# 2√ 2.5*1.6 berechnen
#Geometrisch der Jahresdurchschnitt der Änderungsrate des Umsatzes_Lass meinen
geometric_mean = gmean([2.5,1.6])
print(geometric_mean)
2.0

Point:Scipy Eine Bibliothek zur Durchführung fortgeschrittener wissenschaftlicher Berechnungen. Referenzartikel Grundlegende Verwendung von Library Scipy, die Sie unbedingt kennen sollten

◯ ** Punkt **: Funktion gmean () Referenzartikel Offizielles Dokument


So ermitteln Sie den geometrischen Durchschnitt mit der Funktion geometric_mean ()

◯ Es scheint, dass die Funktion ### geometric_mean () im Statistikmodul von Python 3.8 eingeführt wurde. Python 3.8 und höher kann es also verwenden.

from statistics import geometric_mean
print(geometric_mean([2.5,1.6]))
2.0

Offizielle Dokumentation: Statistik


So finden Sie den geometrischen Durchschnitt mit der Funktion root ()

import sympy

#Der Umsatz(sales)Liste von
sales = [1000,2500,4000] 

#Änderungsrate(rate_of_change)Liste von
#Diese Liste ist[2.5, 1.6]werden
rate_of_changes = [sales[i+1]/sales[i] if i < len(sales)-1 for i in range(len(sales))]

#Ersetzen Sie das Produkt aller Elemente durch die Variable mul
#Ordnen Sie zunächst der Variablen mul das erste Element der Änderungsratenliste zu
#An diesem Punkt mul= 2.Werden Sie 5
mul = rate_of_changes[0]

#Multiplizieren Sie die Elemente
for i in range(len(rate_of_changes)):
    #Wie lange zu wiederholen
    if i < len(rate_of_changes)-1:
       #In der Variablen mul, d.h.+Ersetzen Sie durch Multiplizieren mit 1 Element
       mul *= rate_of_changes[i+1]
    else:
        break
#root(Der Inhalt der Route,~Wurzel)
#Der Inhalt dieser Route ist das Produkt aller Elemente
geometric_mean = sympy.root(mul,len(rate_of_changes))
print('geometric_mean = ',geometric_mean)
geometric_mean = 2.00000000000000

Verwendung von Python, SymPy (Faktorzerlegung, Gleichungen, Differentialintegration usw.)

2-2. So finden Sie den quadratischen Durchschnitt

◯ Der quadratische Durchschnitt wird berechnet, indem die Werte, die Sie im Quadrat mitteln möchten, multipliziert, summiert und durch die Anzahl der Elemente n durch die Quadratwurzel ** dividiert werden. Es wird verwendet, wenn Sie die Differenz von der Ankunftszeit in Bezug auf den Zeitplan des Transports berechnen möchten.

◯ Es gibt keinen Unterschied in der Zeitverzögerung zwischen einer verspäteten Ankunft von 2 Minuten und einer verspäteten Ankunft von 2 Minuten. Es gleicht jedoch den ** Fehler ** mit der ** mathematischen Mittelung ** mit Plus oder Minus aus. Also ** Quadrat, um das Minus zu eliminieren und ** zu berechnen.


So ermitteln Sie den quadratischen Durchschnitt mit der Funktion root ()

#root()Importieren Sie Sympy, um die Funktion zu verwenden
import sympy
#Runden Sie den Endwert mit dem Dezimalmodul der Standardbibliothek
from decimal import Decimal, ROUND_HALF_UP

#Liste der Fehler
data_list = [-2,3,4,-5]
#Quadratische neue Liste quadrierte jedes Element der Fehlerliste_Erstelle eine Liste
squared_list = [i**2 for i in data_list]
#squared_Finden Sie zuerst den Durchschnitt der Liste(Gesamtwert/Elementanzahl)
mean_square = sum(squared_list)/len(squared_list)
#mean_Nimm die Quadratwurzel des Quadrats
root_mean_square = sympy.root(mean_square,2)

print('RMS = ',root_mean_square)
#Str, um genau als Dezimaltyp dieses Werts zu behandeln()Typ konvertieren mit
#Decimal('Anzahl der Stellen, die Sie suchen möchten')Angabe der Ziffer
#ROUND_HALF_Führen Sie eine allgemeine Rundung mit UP durch
print('Rounded RMS = ',Decimal(str(root_mean_square)).quantize(Decimal('0.1'), rounding=ROUND_HALF_UP))
RMS = 3.67423461417477
Rounded RMS =  3.7

Point:Decimal.quantize Referenzartikel Round round und Decimal.quantize with Python

2-3. So finden Sie den Harmonie-Durchschnitt

◯ Der harmonisierte Durchschnitt wird verwendet, um den Durchschnittswert der Geschwindigkeit pro Stunde zu ermitteln.

◯ Ermitteln Sie beispielsweise die Durchschnittsgeschwindigkeit, wenn ein Auto 200 km auf der Hinfahrt mit 80 km / h und 200 km auf der Rückfahrt mit 30 km / h fährt. Die Geschwindigkeit ist Entfernung / Stunde und die Durchschnittsgeschwindigkeit wird berechnet durch ** Gesamtentfernung / Gesamtzeit **. ** Die Gesamtentfernung ** beträgt 200 + 200 = 400 (km) ** Gesamtzeit ** (Entfernung / Geschwindigkeit) beträgt 200/80 + 200/30 = 2,5 (Stunden) + 6,666 (Stunden) = 9,166 (Stunden) ** Durchschnittsgeschwindigkeit ** = Gesamtentfernung / Gesamtzeit = 400 / 9.166 = 43.636 (km / Stunde)


So ermitteln Sie den harmonischen Durchschnitt mit der Funktion harmonic_mean ()

import statistics

#harmonic_mean([x1,x2,...xn])
print(statistics.harmonic_mean([80,30]))
43.63636363636363

So ermitteln Sie den Harmonie-Durchschnitt anhand der Entfernung

distance = 200
#Finden Sie die Gesamtentfernung anhand der Entfernung
total_distance = distance* 2

#Bereiten Sie eine Liste mit Geschwindigkeitswerten vor
speed_list = [80,30]
#Zeit, die für jeden von der Geschwindigkeit der Liste benötigt wird(Entfernung/Geschwindigkeit)Zu bekommen und aufzulisten
time_list = [distance/speed for speed in speed_list]
#Gesamtwert jeder benötigten Zeit(Gesamtzeit)Ich suche
total_time = sum(time_list)

#Harmonie-Durchschnitt=Gesamtentfernung/Gesamtzeit
harmonic_mean = total_distance/total_time
print('harmonic_mean = ',harmonic_mean)
harmonic_mean =  43.63636363636363

◯ ** Punkt **: Referenzartikel Bedeutung und Berechnungsmethode des harmonischen Durchschnitts

3. Finden Sie den Median

◯ Der Mittelwert, wenn die Daten in aufsteigender oder absteigender Reihenfolge angeordnet sind, wird als Medianwert bezeichnet. Wenn die Anzahl der Daten gerade ist, beträgt die Anzahl in der Mitte zwei. Das Addieren und Teilen durch zwei ist der Medianwert. Der Vorteil des Medianwerts besteht darin, dass er weniger empfindlich gegenüber Ausreißern ist (extrem entfernte Werte).


So finden Sie den Medianwert mit der Funktion median ()

◯ Es ist nicht erforderlich, zwischen einer ungeraden und einer geraden Anzahl von Elementen zu unterscheiden.

#median()Importieren Sie ein Modul, um eine Funktion zu verwenden
import statistics

#Die Anzahl der Elemente in der Liste ist ungerade
numbers = [1,100,4,7,3]
#Variabler Median_of_Ersetzen Sie die Zahl durch den Medianwert
#Zugriff mit Punkten, um die Funktionen im Modul zu verwenden
median_of_numbers = statistics.median(numbers)
print('median of numbers = ',median_of_numbers)
median of numbers = 4

Teilen Sie die Anzahl der Elemente in zwei, um den Medianwert zu ermitteln

◯ Wir betrachten Fälle danach, ob die Anzahl der Elemente ungerade oder gerade ist. Wenn es ungerade ist, finden Sie den Index der Zahl in der Mitte der Elemente durch ** Anzahl der Elemente // 2 ** (Division von ganzen Zahlen). Wenn es gerade ist, wird die Anzahl in der Mitte der Elemente. Zwei Indizes werden aus ** Anzahl der Elemente / 2 ** und ** Anzahl der Elemente / 2-1 ** berechnet.

#Die Anzahl der Elemente in der Liste ist gerade
numbers = [1,100,4,7,3,8]
#Sortieren Sie zuerst die Liste in aufsteigender Reihenfolge
numbers.sort()
#Variable Länge_of_Ersetzen Sie die Anzahl der Elemente in der Zahlenliste durch Zahlen
length_of_numbers = len(numbers)

#Wenn die Anzahl der Elemente ungerade ist
if(length_of_numbers % 2 == 1):
    #Variabler Median_Weisen Sie dem Index des Mittelwerts des Listenelements einen Index zu
    #Beispielsweise ist der Index des Mittelwerts in einer Liste von 5 Elementen 5//2 = 2
    median_index = length_of_numbers//2
    print('median of numbers = ',numbers[median_index])
#Wenn die Anzahl der Elemente gerade ist
else:
    #Variabler Median mit einem Wert, der der Hälfte der Anzahl der Elemente in der Liste entspricht_Dem Index zuweisen
    median_index = length_of_numbers//2
    #Der Medianwert bei gerader Anzahl von Elementen ist die Summe der beiden Mittelwerte und geteilt durch zwei.
    #Wenn beispielsweise die Anzahl der Elemente 6 beträgt, beträgt der Index mit dem Mittelwert 6/2-1 =2 und 6/2 = 3
    print('median of numbers = ',(numbers[median_index-1] + numbers[median_index])/2)
 
#(4 + 7)/2 = 5.5
median of numbers = 5.5

4. Finden Sie den häufigsten Wert

◯ Suchen Sie das am häufigsten vorkommende Element in der Liste.


So finden Sie den häufigsten Wert mithilfe der Counter-Klasse

#Importieren Sie die Counter-Klasse aus dem Sammlungsmodul
from collections import Counter
medals = ['gold','silver','gold','silver','silver','bronze']
#Instanzgenerierung
medal_counter = Counter(medals)

print(medal_counter)
Counter({'silver': 3, 'gold': 2, 'bronze': 1})

◯ ** Punkt **: Verwendung der Klasse Eine Klasse ist eine Sammlung verwandter Felder und Methoden. Die Klasse selbst ist jedoch abstrakt und kann nicht direkt in Ihrem Programm verwendet werden. Machen Sie also zuerst die Klasse konkret und erstellen Sie das Objekt. Diesmal ist "Counter (Medaillen)" das. Dies wird als Instanz bezeichnet. Wenn Sie dies im Programm behandeln, behandeln Sie es als Variable. Weisen Sie dazu der Variablen "Medal_Counter" eine Instanz zu, wie "Medal_Counter = Counter (Medaillen)".

Point:most_common() Eine Methode der Counter-Klasse. Gibt alle Elemente in absteigender Reihenfolge zurück. Wenn eine Ganzzahl als Argument angegeben wird, wird nur diese Zahl angezeigt, die von oben gezählt wird. (Beispiel)

print(medal_counter.most_common(1))
[('silver', 3)]

So finden Sie den häufigsten Wert, wenn mehrere häufigste Werte vorhanden sind

◯ Erstellen Sie ein Programm, falls mehrere häufigste Werte vorhanden sind. Sie definieren Ihre eigene ** Funktion, die eine Liste der häufigsten Werte ** zurückgibt.

#Importieren Sie die Counter-Klasse
from collections import Counter

#Eine selbst erstellte Funktion, die eine Liste der häufigsten Werte zurückgibt(mode_func)Definieren
def mode_func(letters):
    #Erster Brief(Brief)Und das Aussehen zählt
    #letter_counter = Counter({'t': 2, 'o': 2, 'e': 1, 'x': 1, '_': 1, 'b': 1, 'k': 1})
    letter_counter = Counter(letters)
    #Als nächstes erhalten Sie eine Liste der Zeichen und ihrer Vorkommen in absteigender Reihenfolge sowie den variablen Buchstaben_and_Zuweisen, um zu zählen
    #[('t', 2), ('o', 2), ('e', 1), ('x', 1), ('_', 1), ('b', 1), ('k', 1)]
    letter_and_count = letter_counter.most_common()
    #Ich habe sie also in absteigender Reihenfolge angeordnet"Anzahl der Auftritte des Elements ganz links"(Hier 2)Wird als einer der häufigsten Werte bestätigt
    #Machen Sie es zu einer Variablen max_Zuweisen, um zu zählen
    max_count = letter_and_count[0][1]
    #Erstellen Sie eine Liste, um die häufigsten Werte zu speichern, und fügen Sie nach Bedarf weitere Elemente mit der gleichen Anzahl von Vorkommen hinzu.
    mode_list = []
    for letter in letter_and_count:
        #Wenn das Element(Brief)Wenn die Anzahl der Vorkommen von der des häufigsten Wertes entspricht
        if letter[1] == max_count:
            #Fügen Sie dieses Zeichen zur Liste der häufigsten Werte hinzu
            mode_list.append(letter[0])
    #Gibt schließlich eine Liste der häufigsten Werte zurück
    return(mode_list)

#Schreiben Sie es, um die Wiederverwendung der Funktion zu vereinfachen
if __name__ == '__main__':
    #Weisen Sie den variablen Buchstaben eine Liste von Zeichenfolgen zu
    letters = list('text_book')
    #mode_func()Die vom Variablenmodus zurückgegebene Liste_Zu Liste zuweisen
    mode_list = mode_func(letters)
    #mode_Die Liste enthält möglicherweise mehrere häufigste Werte. Extrahieren Sie alle Werte und schreiben Sie sie aus.
    for mode in mode_list:
        print('Mode = ',mode)

Mode = t
Mode = o

Point:if __name__ == '__main__': Referenzartikel Antwort auf Pythons if __name__ == '__ main __'

Schließlich

Danke fürs Lesen. Das nächste Mal werde ich über die Berechnung der Basisstatistik Teil 3 (Variation, Standardmittelwert ...) schreiben. Ich wäre Ihnen dankbar, wenn Sie auf Fehler oder Verbesserungen hinweisen könnten.

Recommended Posts

[Algorithmus x Python] Berechnung der Basisstatistik Teil2 (Mittelwert, Median, am häufigsten)
[Algorithmus x Python] Berechnung der Basisstatistik Teil 3 (Bereich, Varianz, Standardabweichung, Fluktuationskoeffizient)
[Algorithmus x Python] Berechnung der Basisstatistik (Gesamtwert, Maximalwert, Minimalwert)
Python x GIS-Grundlagen (3)
[Statistiken für Programmierer] Durchschnitt, Median und am häufigsten
Grundlagen von Python x GIS (Teil 2)
1. Mit Python 1-3 gelernte Statistiken. Berechnung verschiedener Statistiken (Statistiken)
1. Mit Python 1-2 gelernte Statistiken. Berechnung verschiedener Statistiken (Numpy)
Sequentielle Berechnung des Durchschnittswertes mit Online-Algorithmus
Python Basic Memorandum Teil 2
Python-Grundnotiz - Teil 2
Berechnen Sie den Mittelwert, den Median, die häufigste Varianz und die Standardabweichung in Python
Grundkenntnisse in Python
Python-Grundnotiz - Teil 1
[Wissenschaftlich-technische Berechnung von Python] Grundlegende Operation des Arrays, numpy
Python-Grammatik-Grundnotiz (1)
2.x, 3.x Serienzeichencode von Python
Grundlegende Verwendung von Python-F-String
Python x GIS-Grundlagen (1)
Zusammenfassung der Grundkenntnisse von PyPy Teil 1
1. Mit Python 1-1 gelernte Statistiken. Grundlegende Statistiken (Pandas)
Grundlegende Grammatik des Python3-Systems (Wörterbuch)
Implementierung der Dyxtra-Methode durch Python
[Python] Berechnung des Kappa (k) -Koeffizienten
Python-Anwendung: Datenvisualisierung Teil 1: Grundlegend
Grundlegendes Studium von OpenCV mit Python