Une méthode pour vérifier le nombre maximum de chiffres après la virgule décimale lors de la saisie de pd.Série contenant une valeur numérique

Contexte

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.

Méthode créée

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

Exemple d'utilisation

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

Une méthode pour vérifier le nombre maximum de chiffres après la virgule décimale lors de la saisie de pd.Série contenant une valeur numérique
Vérifions la chaîne d'octets en mémoire du nombre flottant flottant en Python
Modifiez le point décimal de la journalisation de, à.
Afficher n chiffres après la virgule décimale en python
Comment obtenir le nombre de chiffres en Python
Lorsqu'une chaîne de caractères d'une certaine série se trouve dans la clé du dictionnaire, la chaîne de caractères est convertie en valeur du dictionnaire.
Trouver l'index de la valeur maximale (valeur minimale) d'un tableau multidimensionnel
J'ai fait une fonction pour vérifier le modèle de DCGAN
Méthode d'approximation numérique lorsque le calcul de la dérivée est gênant
Obtenez le nombre de chiffres
Lors de l'incrémentation de la valeur d'une clé qui n'existe pas
Comment vérifier la taille de la mémoire d'une variable en Python
Comment trouver l'adresse mémoire de la valeur de la trame de données Pandas
Une commande pour vérifier facilement la vitesse du réseau sur la console
4 méthodes pour compter le nombre d'occurrences d'entiers dans un certain intervalle (y compris la méthode imos) [implémentation Python]
Je souhaite résoudre le problème de fuite de mémoire lors de la sortie d'un grand nombre d'images avec Matplotlib