Changements dans la dataset non pris en compte sur python ?

Fermé
lesxya - Modifié le 29 nov. 2022 à 11:24
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 - 29 nov. 2022 à 11:34

Bonjour ! 

Pour un projet de cours je dois étudier une base de donnée que j'ai préalablement faite. Mais avant ça, je dois afficher les valeurs anormales pour qu'elles ne faussent pas mon interprétation. Malheureusement, quand je demande à afficher celles qui sont aux extrémités avec cette ligne de code :

df[(df.stock_index_renault<lower_bound)|(df.stock_index_renault>upper_bound)]

... ça m'affiche tous le dataset et pas juste les valeurs anormales. Est-ce que vous sauriez comment voir que les changements que je fais sont bien effectifs s'il vous plaît ? 

C'est la même chose qui m'arrive quand je tente de remplacer les valeurs manquantes par la moyenne. J'ai beau mettre : 

df['stock_index_renault'].fillna(value=df['stock_index_renault'].mean())

... rien ne se passe...
Macintosh / Chrome 107.0.0.0

A voir également:

2 réponses

yg_be Messages postés 23359 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 29 novembre 2024 Ambassadeur 1 556
29 nov. 2022 à 09:33

bonjour,

peux-tu partager du code testable?

0
mamiemando Messages postés 33401 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 28 novembre 2024 7 804
Modifié le 29 nov. 2022 à 11:34

Bonjour,

Concernant la première commande, elle semble syntaxiquement et sémantiquement correcte, donc il faudrait voir ton jeu de données et comment tu l'as chargé.

Concernant la seconde commande, vu ce que tu veux faire, je pense que tu as oublié inplace=True (voir ce lien).

Exemple :

import pandas as pd
from io import StringIO

s_csv = """stock_index_renault
1
2
10
Nan
3
4
Nan
-2
5"""

df = pd.read_csv(StringIO(s_csv), na_values=["Nan"])
lower_bound = 0
upper_bound = 5
print(df)
print(df[(df.stock_index_renault < lower_bound)|(df.stock_index_renault > upper_bound)])
mean = df["stock_index_renault"].mean()
print(mean)
df["stock_index_renault"].fillna(value=mean, inplace=True)
print(df)

Résultat :

   stock_index_renault
0                  1.0
1                  2.0
2                 10.0
3                  NaN
4                  3.0
5                  4.0
6                  NaN
7                 -2.0
8                  5.0
   stock_index_renault
2                 10.0
7                 -2.0
3.2857142857142856
   stock_index_renault
0             1.000000
1             2.000000
2            10.000000
3             3.285714
4             3.000000
5             4.000000
6             3.285714
7            -2.000000
8             5.000000

Bonne chance

0