Echanges autour d'EduPython.
Vous n'êtes pas identifié(e).
Bonjour,
Je débute en python et je souhaite exécuter le programme présent sur une activité de tracé d'évolution d'énergie (2p240) du livre Hachette terminale spé, avec edupython 2.7, avec importation d'un fichier csv.
Cependant, alors que je n'ai modifié qu'une ligne (pour un calcul d'énergie cinétique), j'ai le message d'erreur suivant :
ValueError: x et y must have same first dimension, but have shapes(40,) and (80,)
Pouvez vous m'aider ?
merci d'avance !
Hors ligne
Bonjour,
Je ne connais pas cette activité, pouvez-vous poster le code ici ? Sinon l'erreur dit que X contient 40 valeurs et y 80 ce qui lui pose problème pour faire le graphe je pense.
Merci.
VM
Hors ligne
Bonjour, Merci pour votre réponse.
j'ai voulu faire un copier coller du programme mais j'ai ce message d'erreur qui s'affiche : "la balise i (entre crochets) a été ouverte dans cette même balise, ceci n'est pas autorisé. Du coup, le message ne veut pas pas être envoyé...
Comment faire ?
Hors ligne
il faut mettre le programme entre les balises : [ c o d e] et [ / c o d e] (sans espace !)
Hors ligne
# CHAPITRE 12: Activité 2 ################################################################################ import matplotlib.pyplot as plt import pandas as pd ################################################################################ # Lecture du fichier et création des variables ################################################################################ #nom du fichier à traiter fichier=input("Quel est le nom du fichier de pointage (sans l'extension .csv)?")+".csv" Data = pd.read_csv(fichier, sep=',', header=0) t=Data['Temps'] x=Data['X'] y=Data['Y'] ################################################################################ #Calcul des coordonnées Vx et Vy des vecteurs vitesse ################################################################################ Vx=[] for i in range(len(x)-1) : Vx=Vx+[(x[i+1]-x[i])/(t[i+1]-t[i])] Vy=[] for i in range(len(y)-1) : Vy=Vy+[(y[i+1]-y[i])/(t[i+1]-t[i])] V=[] for i in range(len(Vx)) : V=V+[(Vx[i]**2+Vy[i]**2)**0.5] #masse du système en kg m=0.60 #intensité de la pesanteur g=9.81 #Calcul des énergies Ep=[] for i in range(len(Vx)) : Ep=Ep+[m*g*y[i]] Ec=[] for i in range(len(Vx)) : Ec=Ec+[0.5*m*V[i]**2] Em=[] for i in range(len(Vx)) : Em=Em+[Ep[i]+Ec[i]] ################################################################################ # Taille du graphique ################################################################################ plt.figure(figsize=(15,12)) ################################################################################ # Sous figure inférieure ################################################################################ plt.subplot(212) X_max=max(x) plt.ylim([0,1.1*X_max]) plt.xlim([0,t.max()]) #tracé de la position plt.plot(t,x,'bo') #Légendes plt.title("Évolution de la position X du système", fontsize =16) plt.ylabel('X (m)', fontsize =16) plt.xlabel('$t$ (s)', fontsize =16) plt.tick_params(labelsize=16) #Parametres de la grille ax = plt.gca() ax.minorticks_on() ax.grid(which='major', linestyle='-', linewidth='0.7', color='black') ax.grid(which='minor', linestyle=':', linewidth='0.5', color='black') ################################################################################ # Sous figure supérieure ################################################################################ plt.subplot(211) Em_max=max(Em) plt.ylim([0,1.5*Em_max]) plt.xlim([0,t.max()]) #tracé des énergies plt.plot(t[0:-1],Ep,'ro',label='Énergie potentielle de pesanteur') plt.plot(t[0:-1],Ec,'go',label='Énergie cinétique') plt.plot(t[0:-1],Em,'ko',label='Énergie mécanique') #Légendes plt.title("Évolution des énergies au cours du temps", fontsize =16) plt.ylabel(r'$\mathcal{E}$ (J)', fontsize =16) plt.xlabel('$t$ (s)', fontsize =16) plt.tick_params(labelsize=16) #Parametres de la grille ax = plt.gca() ax.minorticks_on() ax.grid(which='major', linestyle='-', linewidth='0.7', color='black') ax.grid(which='minor', linestyle=':', linewidth='0.5', color='black') #Pour faire apparaitre les légendes retirer le # devant la ligne suivante. plt.legend(loc=2, fontsize=16) # Ajustement du plot plt.subplots_adjust(hspace=0.5) #Sauvegarde des courbes plt.savefig("Energies.png") plt.show()
Hors ligne
Bonsoir, chez moi ça fonctionne. Du coup ça doit venir du fichier csv. Pouvez-vous me l'envoyer par mail ? vincent.maille{@@}ac-amiens.fr
Hors ligne
Bonjour,
Je viens de vous envoyer un mail,
Cordialement,
Hors ligne
Bonjour,
Il y avait plusieurs soucis dans votre fichier CSV :
Les séparateurs de colonnes sont des ; et non des ,
Les séparateurs en écriture décimale sont des , et non des .
Il faut donc l'indiquer au moment de la lecture :
Data = pd.read_csv(fichier, sep=';', decimal =",", header=0)
Vos colonnes ne s’appellent pas Temps, X et Y, mais t(s), x et y
Il faut donc adapter le programme :
t=Data['t(s)'] x=Data['x'] y=Data['y']
Bon dimanche, je regarde pour l'autre question
VM
Hors ligne
Merci beaucoup pour votre aide ! Bonne soirée
Dernière modification par Cori (2020-10-11 14:18:13)
Hors ligne
Bonjour,
J'ai un problème sur ce meme programme mais l'erreur annoncé est no module named pandas
L.
Hors ligne
Bonjour,
Je viens de résoudre mon problème, mais maintenant le message d'erreur est "KeyError: 'temps'. Pourtant, c'est bien le nom de ma première colonne dans la feuille Excel
Hors ligne
Attention aux majuscules/minuscules
Hors ligne
Oui j'y est fait attention : c'est bien écrit en minuscule
Hors ligne
Ah bizarre, essayez de nous joindre les fichiers via un lien dropbox ou free ou autre
Hors ligne
Un lien avec google drive :
Programme : https://drive.google.com/drive/folders/ … 7XRwIbKlnh
Excel : https://drive.google.com/drive/folders/ … 7XRwIbKlnh
Ca marche ?
Hors ligne
Bonsoir,
Vous avez mis
Data = pd.read_csv(fichier, sep=';', header=0)
Or dans votre fichier csv, le séparateur est une virgule, il faut donc mettre
Data = pd.read_csv(fichier, sep=',', header=0)
Après il y a quelques coquilles, n'hésitez pas si vous êtes bloquée à nouveau
Hors ligne
Merci beaucoup, cela fonctionne maintenant !
Hors ligne
J'ai un autre problème avec un autre programme, toujours en physique chimie.
Programme élèves :13_deuxiemeLK_initial:
Programme prof : 13_deuxiemeLK_prof:
Que j'ai complété grâce aux relevées que j'ai fait sur le site : ACT_2_application satellite_PROF.docx
Quand j'applique le programme, il me trouve une vitesse et une vitesse aréolaire nulle (je pense que c'est un problème dans l'écriture de mon calcul).
Tout ceci est dans le dossier drive : https://drive.google.com/drive/folders/ … UuHafDVpn6-
Hors ligne
Bonjour, le lien ne fonctionne pas
Hors ligne
Je tente un autre chemin ...
https://drive.google.com/drive/folders/ … aqYfjsh33b
Hors ligne
Après vérification, je crois que le lien fonctionne ...
Hors ligne
Bonjour, c'est votre fonction aire qui est mal placée, il faut la définir en dehors de la boucle :
def aire(a,b,c): p=(a+b+c)/2 S=(p*(p-a)*(p-b)*(p-c))**0.5 return S for i in range(n-1): ## Temps sans derniere mesure tt[i]=t[i] #################### #### A COMPLETER ### #################### ## Distance parcourue entre i et i+1, en km d[i]=((x[i+1]-x[i])**2+(y[i+1]-y[i])**2+(z[i+1]-z[i])**2)**0.5 ## vitesse en km/min v[i]=d[i]/(t[i+1]-t[i]) ## aire balayee en km2 S[i]=aire(r[i],r[i+1],d[i]) ## vitesse areolaire en km2/min s[i]=S[i]/(t[i+1]-t[i])
Bonne journée,
VM
Hors ligne
Bonjour,
C'est parfait, ca marche !!!!
Merci beaucoup pour votre aide.
LM
Hors ligne
Bonjour,
j'ai un nouveau soucis avec un programme : https://drive.google.com/drive/folders/ … 7o1LLR72rL
Le message que je reçois est : ValueError : x and y must have same first dimension, but have shapes (33,) and (31,)
Merci pour votre aide,
LM
Hors ligne
Bonjour, c'est à cause des problème "aux bords". Comme vous avez 33 valeurs pour le temps, quand vous calculez les Vd, à cause des formules, vous n'en avez que 31, d'où le problème pour tracer Vd en fonction de t. Il faut donc :
* soit retirer 2 valeurs du temps
* soit ajouter des valeurs fictives aux bords de Vd
Bonne journée,
VM
Hors ligne