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.
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
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