[PYTHON] Eine Methode zum Überprüfen der maximalen Anzahl von Stellen nach dem Dezimalpunkt bei der Eingabe von pd.Series mit einem numerischen Wert

Hintergrund

Bei der Interpolation mit der Interpolationsmethode von pandas.Series kann sich die Anzahl der Nachkommastellen erhöhen.

Beispiel:

python


import pandas as pd

#Einstellige Daten nach dem Dezimalpunkt
series = pd.Series([0.2, np.nan, 0.5])

#Die Interpolation ergibt 2 Ziffern
series.interpolate() # => [0.20, 0.35, 0.50]

Daher habe ich beschlossen, die Anzahl der Stellen nach dem Dezimalpunkt vor der Interpolation aufzuzeichnen und nach der Interpolation auf diese Anzahl von Stellen zu runden.

Dabei habe ich "eine Methode erstellt, um die maximale Anzahl von Stellen nach dem Dezimalpunkt zu überprüfen, wenn Sie pd.Series mit einem numerischen Wert eingeben", und ich möchte sie in diesem Artikel teilen.

Methode erstellt

python


#Finden Sie heraus, wie viele Stellen unter dem Dezimalpunkt liegen
def calc_n_digit_after_the_decimal_point(series):
    
    #In String konvertieren
    str_series = series.map(lambda x: str(x))
    
    #Extrahieren Sie diejenigen mit weniger als ein paar
    # 「 x[-2:] != '.0'In 1.Es wird beurteilt, ob der Wert eine Ganzzahl ist, obwohl es sich um einen Float-Typ wie "0" handelt.
    mask = str_series.map(lambda x: ('.' in x) & (x[-2:] != '.0'))
    only_decimal_str_series = str_series[mask]

    #Wenn es ein paar gibt
    if only_decimal_str_series.size > 0:
        
        #Holen Sie sich die maximale Anzahl von Ziffern weniger als ein paar
        #Runden Sie auf diese Ziffer
        n_digit = only_decimal_str_series.map(lambda x: len(x.split('.')[1])).value_counts().sort_index().index.max()

    #Wenn es nicht wenige gibt
    else:
        n_digit = 0

    return n_digit

Anwendungsbeispiel

python


#Einstellige Daten nach dem Dezimalpunkt
series = pd.Series([0.2, np.nan, 0.5])

#Notieren Sie die Anzahl der Ziffern
n_digit = calc_n_digit_after_the_decimal_point(series)

#Interpolation
series = series.interpolate()

#Runden Sie auf die Anzahl der aufgezeichneten Ziffern
series.round(n_digit) # => [0.2, 0.4, 0.5]

Recommended Posts

Eine Methode zum Überprüfen der maximalen Anzahl von Stellen nach dem Dezimalpunkt bei der Eingabe von pd.Series mit einem numerischen Wert
Überprüfen Sie die speicherinterne Byte-Zeichenfolge der Gleitkommazahl in Python
Ändern Sie den Dezimalpunkt der Protokollierung von, nach.
Zeigen Sie in Python n Nachkommastellen an
So ermitteln Sie die Anzahl der Stellen in Python
Wenn sich eine Zeichenfolge einer bestimmten Reihe im Schlüssel des Wörterbuchs befindet, wird die Zeichenfolge in den Wert des Wörterbuchs konvertiert.
Suchen Sie den Index des Maximalwerts (Minimalwerts) eines mehrdimensionalen Arrays
Ich habe eine Funktion erstellt, um das Modell von DCGAN zu überprüfen
Numerische Approximationsmethode, wenn die Berechnung der Ableitung schwierig ist
Holen Sie sich die Anzahl der Ziffern
Beim Inkrementieren des Werts eines Schlüssels, der nicht vorhanden ist
So überprüfen Sie die Speichergröße einer Variablen in Python
So ermitteln Sie die Speicheradresse des Pandas-Datenrahmenwerts
Ein Befehl zum einfachen Überprüfen der Netzwerkgeschwindigkeit auf der Konsole
4 Methoden zum Zählen der Anzahl von Ganzzahlen in einem bestimmten Intervall (einschließlich der imos-Methode) [Python-Implementierung]
Ich möchte das Problem des Speicherverlusts bei der Ausgabe einer großen Anzahl von Bildern mit Matplotlib lösen