Lors de l'interpolation avec la méthode d'interpolation de pandas.Series, le nombre de chiffres après la virgule décimale peut augmenter.
Exemple:
python
import pandas as pd
#Données à un chiffre après la virgule décimale
series = pd.Series([0.2, np.nan, 0.5])
#L'interpolation donne 2 chiffres
series.interpolate() # => [0.20, 0.35, 0.50]
Par conséquent, j'ai décidé d'enregistrer le nombre de chiffres après la virgule décimale avant l'interpolation et de l'arrondir à ce nombre de chiffres après l'interpolation.
Dans le processus, j'ai créé "une méthode pour vérifier le nombre maximum de chiffres après la virgule décimale lorsque vous entrez pd.Series avec une valeur numérique", et je voudrais la partager dans cet article.
python
#Découvrez combien de chiffres sont sous la virgule décimale
def calc_n_digit_after_the_decimal_point(series):
#Convertir en chaîne
str_series = series.map(lambda x: str(x))
#Extrayez ceux avec moins de quelques
# 「 x[-2:] != '.0'En 1.Il est jugé si la valeur est un entier bien que ce soit un type flottant comme "0".
mask = str_series.map(lambda x: ('.' in x) & (x[-2:] != '.0'))
only_decimal_str_series = str_series[mask]
#S'il y en a quelques
if only_decimal_str_series.size > 0:
#Obtenez le nombre maximum de chiffres inférieur à quelques
#Arrondir à ce chiffre
n_digit = only_decimal_str_series.map(lambda x: len(x.split('.')[1])).value_counts().sort_index().index.max()
#S'il n'y en a pas peu
else:
n_digit = 0
return n_digit
python
#Données à un chiffre après la virgule décimale
series = pd.Series([0.2, np.nan, 0.5])
#Enregistrez le nombre de chiffres
n_digit = calc_n_digit_after_the_decimal_point(series)
#interpolation
series = series.interpolate()
#Arrondir au nombre de chiffres enregistrés
series.round(n_digit) # => [0.2, 0.4, 0.5]
Recommended Posts