IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

python (depuis kaggle) - multiplication de n colonnes d'un tableau par une constante


Sujet :

Python

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 11
    Points : 4
    Points
    4
    Par défaut python (depuis kaggle) - multiplication de n colonnes d'un tableau par une constante
    Bonjour à tous !

    Je cherche à manipuler les données d'un fichier csv depuis kaggle pour tracer différentes courbes.
    J'ai réussi à l'importer et voici l'apparence du tableau :

    Nom : python1.JPG
Affichages : 181
Taille : 84,1 Ko

    J'ai ensuite essayé d'écrire un code pour multiplier toutes les valeurs des colonnes 1 à 12 par 230.9 (courant * tension = puissance) comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for i in range [1,13] :
        datagood[:,i] = (data[:,i])*(230.9);
     
    print (datagood)
    mais le logiciel me renvoie un :
    TypeError: 'type' object is not subscriptable
    sur la ligne for (ligne 1)
    J'ai réessayé en changeant le 'i' en v, valeur, current par ex, mais rien à faire !

    Voici ci-joint le code et la réponse :

    Nom : python2.JPG
Affichages : 174
Taille : 44,0 Ko

    Avez-vous des idées pour me débloquer ?

    Merci d'avance
    Jules

  2. #2
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Citation Envoyé par manachscopa Voir le message
    Avez-vous des idées pour me débloquer ?
    L'erreur "TypeError: 'type' object is not subscriptable" se rapporte à datagood[:,i] ou a data[:,i].
    Ca dit juste que les objets associés est un type (au lieu d'une instance) et qu'un type n'est pas indexable.

    Et comme il ne vous paraît pas pertinent de montrer à quoi sont associées ces variables...

    Normalement, si on utilise un bibliothèque capable de gérer des tableaux multiplier un sous-tableau se fait simplement:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> import numpy as np
    >>> ar = np.ones((3,3))
    >>> ar
    array([[1., 1., 1.],
           [1., 1., 1.],
           [1., 1., 1.]])
    >>> ar[1:,1:] *= 3
    >>> ar
    array([[1., 1., 1.],
           [1., 3., 3.],
           [1., 3., 3.]])
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Merci et désolé pour l'oubli !

    La variable data représente l'ensemble des données issues du fichier csv:
    Nom : python3.JPG
Affichages : 168
Taille : 73,0 Ko

    Voilà ce que ça donne :
    Nom : python4.JPG
Affichages : 145
Taille : 82,8 Ko

    La variable datagood est créée for stocker les nouvelles "data" après multiplication par 230.9.

    Je vais essayer avec array oui !

  4. #4
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    C'est un peu la même chose:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> import pandas as pd
    >>> dt = pd.DataFrame(data=ar)
    >>> dt
         0    1    2
    0  1.0  1.0  1.0
    1  1.0  1.0  1.0
    2  1.0  1.0  1.0
    sauf qu'il faut utiliser .loc pour accéder au sous-tableau:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> dt.loc[1:, 1:]*=3
    >>> dt
         0    1    2
    0  1.0  1.0  1.0
    1  1.0  3.0  3.0
    2  1.0  3.0  3.0
    >>>
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Voilà ce que j'obtiens en adaptant ce code...

    Dans un premier temps je retrouve dt correctement après avoir utilisé dataframe :
    Nom : python5.JPG
Affichages : 144
Taille : 89,1 Ko

    Mais ensuite j'utilise mal .loc (en tout cas ça ne compile pas) :

    Nom : python6.JPG
Affichages : 144
Taille : 109,6 Ko

    le programme me renvoie "TypeError: cannot do slice indexing on Index with these indexers [1] of type int"

  6. #6
    Expert éminent sénior
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 287
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 287
    Points : 36 776
    Points
    36 776
    Par défaut
    Salut,

    Remplacez .loc par .iloc (et le reste tout pareil) pour voir (car je n'ai pas votre DataFrame).

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  7. #7
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2021
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2021
    Messages : 11
    Points : 4
    Points
    4
    Par défaut
    Super ça fonctionne !

    Nom : python7.JPG
Affichages : 142
Taille : 100,5 Ko

    Merci beaucoup à vous

Discussions similaires

  1. Réponses: 5
    Dernier message: 18/06/2010, 13h17
  2. Extraction colonnes d'un tableau vers une autre feuille
    Par argaz01 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/06/2010, 15h16
  3. Réponses: 4
    Dernier message: 13/01/2010, 09h37
  4. Réponses: 1
    Dernier message: 30/06/2009, 12h03
  5. Réponses: 1
    Dernier message: 07/02/2008, 00h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo