Panda dataframe, difficultés à trouver le max d'une colonne
Fermé
antoninfoure
-
Modifié le 15 déc. 2021 à 14:19
mamiemando Messages postés 33540 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 février 2025 - 20 déc. 2021 à 12:36
mamiemando Messages postés 33540 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 21 février 2025 - 20 déc. 2021 à 12:36
A voir également:
- Panda dataframe, difficultés à trouver le max d'une colonne
- Déplacer une colonne excel - Guide
- Trouver adresse mac - Guide
- Formule somme excel colonne - Guide
- Trier colonne excel - Guide
- Panda antivirus - Télécharger - Antivirus & Antimalwares
9 réponses
_Ritchi_
Messages postés
21311
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
25 janvier 2025
6 089
Modifié le 15 déc. 2021 à 13:39
Modifié le 15 déc. 2021 à 13:39
Cela ressemble plus à un classement alphabétique qu'un classement alphanumérique...
Essaie en remplaçant la virgule par un point et dis nous si cela va mieux
Essaie en remplaçant la virgule par un point et dis nous si cela va mieux
Bonjour à toutes et tous, merci pour votre aide,
Voici mon code puis un exemple de fichier
Données du fichier texte : (à enregistrer dans un fichier texte nommé par exemple
Voici mon code puis un exemple de fichier
#IMPORT DES BIBLIOTHEQUES import numpy as np import sys import os import numpy as np import matplotlib.pyplot as plt import pandas as pd # Demander le nb de fichiers à traiter N=int(input("rentrez le nombre de fichiers à traiter:")) # Demander le nom du premier fichier à traiter (les fichiers doivent tous avoir le meme format, ici 000Cheylas.txt) f1=input("rentrez le nom du premier fichier à traiter (sans le .txt):") A= (f1.split('C')) ##separer le numero enregistrement et Cheylas print(A) print(A[0]) ##afficher ce numero Numero = int(A[0]) ##transformer ce numero en entier # On crée une boucle de taille N (nb de fichiers pour tous les traiter) for i in range (N): Numerost = str(Numero) # On retransforme le numero en string print(Numero) fichier = Numerost + 'Cheylas' + '.txt' # On concatene numero, cheylas et txt print(fichier) #visualiser le nom du fichier #LECTURE DU FICHIER df = pd.read_csv(fichier,sep=" ") #RETIRER LIGNE DES UNITES df.drop(0,0,inplace=True) del(df["C01"]) #test de changer format en numérique #for i in range(10000): #pd.to_numeric(df["Iph0"][i], downcast='float') #float(df["Iph0"][i]) # FICHIER DATAFRAME SANS LA LIGNE DES UNITES print('df sans ligne', df) #CALCUL DES MAX DE COURANTS print ("max pour fichier", Numero) maxI0 = df["Iph0"].max() # On recupere le max de I0 #minI0 = min(df['Iph0']) # On recupere min de I0 #maxI4 = df["HTB"].max() #maxI8 = df["G1"].max() #minI0 = df["Iph0"].min() print ("max I0=",maxI0) # print ("min I0=", minI0) # print ("max I4=",maxI4) # print ("max I8=",maxI8) # print ("testmax",df["Iph0"][1]) Numero = Numero + 1 i = i + 1 print(i)
Données du fichier texte : (à enregistrer dans un fichier texte nommé par exemple
130CHEYLAS.txtenregistré dans le répertoire du programme)
Time Iph0 HTB G1 Iph4 HTB G1 Iph8 HTB G1 Uph0 HTA G1 Uph4 HTA G1 Uph8 HTA G1 CalcCh A01 Uph0 HTB G1 Emission ordre ferm pole A G1 Emission ordre ferm pole B G1 Iph0 HTB G2 Iph4 HTB G2 Iph8 HTB G2 Uph0 HTA G2 Uph4 HTA G2 Ordre marche RPH3 G2 Ordre marche RPH3 G1 Emission ordre ferm pole A G2 Emission ordre ferm pole B G2 CalcCh C01 s A A A V V V V V V V A A A V V V V V V V -2,5 -0,113344 -0,00722122 -0,250831 -3,08963 -0,0551887 -1,05871 1,59654 -317957 0,1256 0,122649 -187,235 466,544 -287,363 9929,3 -11735,3 -0,332809 -0,0355001 116,692 116,701 8911,45 -2,4995 -0,113344 -0,00722122 -0,250831 -2,04077 -0,0551887 -1,05871 1,59654 -299694 0,1256 0,122649 -115,935 448,833 -343,232 8324,73 -12621,3 -0,2719 0,113376 116,699 116,721 8911,45 -2,499 -0,113344 -0,141455 -0,250831 -0,991916 -0,0551887 -2,10969 1,59654 -274737 0,132382 0,122649 -41,9551 421,194 -391,177 6600,44 -13131,9 -0,12978 0,248718 116,922 116,952 8911,45 -2,4985 -0,113344 -0,141455 -0,250831 -0,991916 -0,0551887 -2,10969 1,59654 -243791 0,132382 0,129421 32,1591 384,566 -429,99 4837,31 -13218,9 0,0597143 0,350224 117,28 117,317 8911,45 -2,498 -0,247603 -0,141455 -0,250831 -0,991916 -0,0551887 -2,10969 1,59654 -207047 0,132382 0,129421 104,397 339,351 -457,925 3089,92 -12855,1 0,242441 0,390827 117,713 117,751 8911,45 -2,4975 -0,247603 -0,141455 -0,250831 -0,991916 -0,0551887 -2,10969 1,59654 -164802 0,132382 0,129421 173,686 285,549 -473,772 1390,84 -12052 0,398096 0,377292 118,132 118,171 8911,45 -2,497 -0,247603 -0,141455 -0,250831 -0,991916 0,993373 -2,10969 1,59654 -118004 0,132382 0,129421 238,553 223,294 -476,995 -255,73 -10864 0,479308 0,316389 118,477 118,503 8911,45 -2,4965 -0,247603 -0,141455 -0,250831 -0,991916 0,993373 -2,10969 1,59654 -68253,3 0,132382 0,122649 298,059 154,599 -468,266 -1881,3 -9383,61 0,465773 0,208115 118,667 118,686 8911,45 -2,496 -0,113344 -0,141455 -0,250831 -0,991916 -0,0551887 -2,10969 1,59654 -17309,9 0,1256 0,122649 351,132 81,6105 -448,658 -3529,98 -7719,69 0,343955 0,0727733 118,673 118,679 8911,45 2,4725 34,7941 12,3423 -32,3353 76,6235 9779,88 -11883,4 0 156656 118,807 118,707 -190,452 -275,684 475,329 -1114,72 11853,1 -0,522303 -0,150541 116,989 116,972 0 2,473 47,2802 -12,6252 -19,582 2578,15 8803,67 -12286 0 108748 118,448 118,355 -254,782 -210,88 475,463 531,853 10606,5 -0,583211 -0,0761027 116,665 116,66 0 2,4735 59,9006 -37,9953 -6,69456 4841,58 7946,99 -12315,4 0 58346,5 118,319 118,233 -313,886 -139,501 463,242 2157,43 9096,7 -0,508767 0,0321708 116,557 116,559 0 2,474 65,271 -51,5529 1,22586 6728,47 7101,85 -12030,6 0 7511,49 118,427 118,362 -365,887 -64,7688 440,276 3798,75 7434,88 -0,326041 0,140444 116,658 116,681 0 2,4745 56,2756 -49,0025 6,32715 8313,3 5866,65 -11375,8 0 -42456,4 118,746 118,693 -409,042 10,6347 407,776 5471,58 5701,76 -0,0688708 0,241951 116,949 116,972 0 2,475 29,1552 -40,5458 21,631 9738,69 3889,06 -10379,5 0 -91286,2 119,194 119,147 -441,475 84,5622 366,143 7157 3941,38 0,208602 0,309622 117,341 117,378 0 2,4755 -12,1967 -41,8881 58,5482 10985,8 1300,16 -9303,27 0 -138815 119,682 119,642 -461,98 156,075 314,706 8789,93 2195,68 0,465773 0,343457 117,774 117,819 0 2,476 -57,3078 -58,8016 113,723 11886,8 -1383,11 -8444,62 0 -184041 120,123 120,075 -470,022 224,501 253,599 10281,1 504,501 0,655266 0,329923 118,166 118,212 0 2,4765 -95,0347 -83,6348 169,837 12324,1 -3731,89 -7866,58 0 -225067 120,435 120,38 -466,269 288,232 184,434 11537 -1123,77 0,763549 0,262252 118,45 118,489 0 2,477 -117,859 -103,367 207,694 12340,9 -5636,07 -7393,64 0 -260240 120,557 120,495 -451,661 345,791 110,032 12483,2 -2724,78 0,763549 0,153978 118,565 118,598 0 2,4775 -123,229 -108,736 215,748 12068,2 -7177,46 -6804,04 0 -288611 120,448 120,373 -427,269 395,299 33,7491 13064,9 -4350,96 0,641731 0,0254037 118,477 118,496 0 2,478 -111,414 -97,0582 191,45 11598,3 -8439,93 -5948,55 0 -309774 120,096 120,007 -393,897 435,148 -41,862 13235 -6015,92 0,411631 -0,0896369 118,166 118,178 0 2,4785 -84,9653 -70,2114 139,632 10956,4 -9498,97 -4687,37 0 -323241 119,573 119,479 -351,546 463,458 -114,787 12958,9 -7677,75 0,134158 -0,164075 117,706 117,71 0 2,479 -51,1319 -35,3107 73,8521 10153 -10480,4 -2827,14 0 -328309 119,017 118,924 -300,082 479,021 -183,817 12234,3 -9261,98 -0,116244 -0,177609 117,199 117,202 0 2,4795 -20,655 -2,42343 13,5763 9233,14 -11406,3 -336,321 0 -324813 118,57 118,484 -239,772 481,302 -248,819 11110,7 -10688,9 -0,292203 -0,150541 116,78 116,782 0 2,48 -1,32168 20,3963 -26,697 8258,76 -12099,4 2491,86 0 -313269 118,339 118,26 -171,957 471,105 -308,985 9682,52 -11874,8 -0,346344 -0,0761027 116,543 116,552 0 2,4805 7,0024 31,5377 -45,7597 7218,29 -12361,5 5228,61 0 -294599 118,353 118,287 -98,9145 450,041 -363,243 8058 -12736,6 -0,292203 0,0321708 116,53 116,552 0 2,481 10,0904 34,0881 -51,6664 6004,76 -12173,9 7593,31 0 -269426 118,597 118,545 -23,4601 419,584 -409,576 6333,72 -13197,9 -0,150082 0,147211 116,739 116,769 0 2,4815 12,1043 32,88 -53,1431 4487,07 -11670,5 9499,79 0 -238020 119,011 118,964 51,4583 380,407 -446,375 4577,93 -13214,7 0,0461791 0,241951 117,104 117,141 0 2,482 14,2524 31,2692 -54,2171 2618 -10992,1 10933,3 0 -200489 119,506 119,465 123,964 332,508 -471,758 2838,95 -12772,3 0,255976 0,28932 117,564 117,602 0 2,4825 15,7293 30,0611 -54,8883 461,554 -10205,7 11884,5 0 -157377 119,987 119,946 192,852 275,754 -484,65 1147,22 -11898,9 0,438702 0,282553 118,038 118,069 0 2,483 16,4006 29,6584 -55,291 -1856,42 -9312,33 12374,2 0 -109875 120,36 120,312 257,182 210,95 -484,785 -499,356 -10655,4 0,546984 0,221649 118,437 118,462 0 2,4835 16,5348 29,39 -55,0226 -4197,47 -8277,4 12482,5 0 -59771,8 120,55 120,488 315,75 139,974 -472,832 -2135,43 -9138,26 0,533449 0,120143 118,673 118,693 0 2,484 16,5348 29,39 -54,7541 -6438,88 -7056,87 12314,3 0 -8692,86 120,503 120,427 367,08 65,5101 -450,269 -3803 -7455,47 0,398096 -0,00166468 118,673 118,679 0 2,4845 16,6691 29,5242 -54,2171 -8454,78 -5600,42 11954,9 0 42060,9 120,204 120,122 410,235 -9,89332 -417,903 -5512,59 -5701,38 0,147694 -0,123472 118,423 118,408 0 2,485 16,9376 29,7927 -53,6801 -10122,5 -3870,3 11442 0 91649,4 119,716 119,614 443,339 -83,9551 -376,404 -7222,17 -3942,05 -0,177153 -0,211445 117,963 117,941 0 2,4855 17,3404 30,1954 -53,1431 -11343,3 -1865,45 10785,1 0 139233 119,139 119,039 464,916 -154,931 -325,639 -8857,19 -2219,42 -0,488464 -0,24528 117,416 117,385 0 2,486 17,7432 30,7323 -52,3377 -12085,9 359,601 9989,55 0 183754 118,644 118,545 473,762 -221,747 -266,009 -10333,6 -548,162 -0,718564 -0,204677 116,915 116,884 0 2,4865 18,2802 31,2692 -51,5322 -12395,3 2699,99 9059,43 0 223967 118,346 118,253 470,009 -283,6 -198,591 -11575,9 1085,35 -0,820079 -0,109938 116,584 116,565 0 2,487 18,9515 31,8062 -50,7267 -12368,1 5031,99 7975,87 0 258814 118,319 118,24 454,463 -339,146 -125,397 -12515,8 2722,01 -0,78624 0,0186366 116,496 116,484 0 2,4875 19,4885 32,4773 -49,787 -12101,7 7223,48 6694,73 0 287619 118,543 118,477 428,462 -387,179 -49,5171 -13091,2 4393,27 -0,64412 0,140444 116,638 116,633 0 2,488 20,1598 33,0143 -48,9816 -11666,4 9144,45 5163,45 0 309704 118,943 118,89 393,349 -425,954 26,6312 -13250,9 6095,98 -0,427556 0,228416 116,962 116,965 0 2,4885 20,6969 33,417 -48,3103 -11089,5 10672,2 3349,46 0 324255 119,431 119,384 349,657 -453,995 100,765 -12964,2 7777,73 -0,190688 0,262252 117,389 117,399 0 2,489 21,0996 33,9539 -47,6391 -10379,4 11730,2 1270,63 0 330189 119,913 119,865 297,523 -470,23 171,407 -12232,2 9359,87 0,0326438 0,248718 117,835 117,853 0 2,4895 21,6367 34,3566 -46,8336 -9539,3 12317,4 -1003,69 0 326965 120,299 120,244 237,213 -473,853 237,617 -11102,3 10753,3 0,201835 0,201348 118,22 118,232 0 2,49 22,0395 34,6251 -46,2967 -8565,96 12505,1 -3363,14 0 315042 120,523 120,461 169,8 -465,534 298,455 -9660,52 11886,7 0,269511 0,12691 118,457 118,462 0 2,4905 22,308 35,0278 -45,6255 -7431,09 12392,9 -5679,5 0 295559 120,537 120,461 97,8299 -446,214 352,578 -8022,35 12699,2 0,235673 0,0321708 118,498 118,496 0 2,491 22,5765 35,0278 -44,9542 -6080,17 12060,5 -7817,19 0 269599 120,313 120,224 23,7157 -417,233 398,912 -6290,72 13140,6 0,0935525 -0,0558014 118,322 118,306 0 2,4915 23,382 33,9539 -43,8803 -4417,73 11524,7 -9636,43 0 237705 119,879 119,777 -50,1305 -378,994 435,844 -4537,03 13160,6 -0,123012 -0,130239 117,936 117,92 0 2,492 26,6043 28,0476 -40,3899 -2346,24 10748,7 -11013,2 0 199985 119,336 119,228 -121,966 -331,633 461,63 -2803,3 12726,5 -0,346344 -0,150541 117,449 117,426 0 2,4925 34,5256 12,4765 -32,3353 77,6723 9784,07 -11886,6 0 156602 118,821 118,721 -190,452 -275,147 474,792 -1112,62 11851 -0,508767 -0,116705 116,983 116,965 0 2,493 47,0117 -12,2225 -19,7163 2577,1 8805,76 -12287 0 108694 118,461 118,368 -254,782 -210,343 474,926 533,954 10603,3 -0,562908 -0,0287331 116,665 116,66 0 2,4935 59,4978 -37,4584 -6,82881 4841,58 7946,99 -12315,4 0 58265,2 118,326 118,247 -313,752 -139,099 462,704 2160,58 9092,51 -0,488464 0,0795404 116,55 116,559 0 2,494 64,8682 -50,8818 0,957369 6728,47 7101,85 -12030,6 0 7457,29 118,441 118,368 -365,752 -64,3663 439,739 3800,85 7431,73 -0,305738 0,187814 116,658 116,681 0 2,4945 55,8728 -48,3313 6,05866 8314,35 5867,69 -11379 0 -42510,6 118,753 118,7 -408,774 10,903 407,238 5473,68 5698,61 -0,0485679 0,269019 116,942 116,972 0 2,495 29,0209 -39,8746 21,094 9740,79 3892,21 -10384,7 0 -91286,2 119,2 119,154 -441,073 84,6964 365,605 7158,05 3940,33 0,228905 0,309622 117,334 117,372 0 2,4955 -12,0624 -41,217 57,7428 10988,9 1303,31 -9308,53 0 -138788 119,689 119,648 -461,578 156,075 314,303 8792,03 2195,68 0,479308 0,302854 117,767 117,812 0 2,496 -57,0393 -58,2646 112,783 11888,8 -1381,01 -8449,88 0 -183987 120,13 120,082 -469,62 224,367 253,33 10283,2 504,501 0,675569 0,255485 118,159 118,205 0 2,4965 -94,4977 -83,0979 168,897 12325,2 -3730,84 -7868,69 0 -225067 120,442 120,393 -465,733 288,098 184,166 11539,1 -1123,77 0,783852 0,187814 118,45 118,483 0 2,497 -117,322 -102,83 206,754 12340,9 -5633,98 -7394,69 0 -260240 120,57 120,508 -451,125 345,523 109,897 12485,3 -2724,78 0,777084 0,0998417 118,565 118,598 0 2,4975 -122,692 -108,2 214,674 12066,1 -7176,41 -6804,04 0 -288584 120,462 120,386 -426,867 394,897 33,6148 13066 -4350,96 0,655266 -0,00843177 118,471 118,489 0 2,498 -110,877 -96,5212 190,376 11596,2 -8438,88 -5948,55 0 -309747 120,102 120,021 -393,495 434,611 -41,862 13235 -6018,02 0,425167 -0,109938 118,159 118,171 0 2,4985 -84,5625 -69,8087 138,826 10956,4 -9500,02 -4684,22 0 -323214 119,58 119,486 -351,144 462,921 -114,653 12957,8 -7680,89 0,147694 -0,164075 117,7 117,703 0 2,499 -50,7291 -34,908 73,1809 10153 -10484,6 -2822,94 0 -328282 119,017 118,924 -299,68 478,351 -183,683 12232,2 -9265,13 -0,102709 -0,157308 117,192 117,195 0 2,4995 -20,3865 -2,15496 13,0394 9234,19 -11411,5 -331,066 0 -324786 118,576 118,484 -239,37 480,632 -248,55 11108,6 -10692,1 -0,2719 -0,096404 116,773 116,775 0
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
16 déc. 2021 à 11:07
16 déc. 2021 à 11:07
quand tu partages du code, surtout du code python, il est indispensable de spécifier le langage dans les balises de code, comme expliqué ici: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
16 déc. 2021 à 11:13
16 déc. 2021 à 11:13
Peux-tu aussi préciser comment répondre aux questions posées par le programme?
Précise aussi le résultat obtenu, et le résultat attendu.
Je n'ai pas eu d'erreur "comparaison est impossible entre les str et les float".
Précise aussi le résultat obtenu, et le résultat attendu.
Je n'ai pas eu d'erreur "comparaison est impossible entre les str et les float".
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
Modifié le 16 déc. 2021 à 12:39
Modifié le 16 déc. 2021 à 12:39
pour convertir en numérique:
ou bien, dans une boucle:
df["Iph0"] = pd.to_numeric(df["Iph0"], downcast='float')
ou bien, dans une boucle:
df["Iph0"][i] = float(df["Iph0"][i])
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
Ambassadeur
1 568
13 déc. 2021 à 14:16
13 déc. 2021 à 14:16
bonjour,
quelles sont ces valeurs?
quelles sont ces valeurs?
_Ritchi_
Messages postés
21311
Date d'inscription
samedi 17 mars 2007
Statut
Contributeur
Dernière intervention
25 janvier 2025
6 089
13 déc. 2021 à 16:27
13 déc. 2021 à 16:27
Bonjour
Voici l'aide de Panda Dataframe : https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.max.html
Tu noteras au passage que la fonctionnalité Max() possède des paramètres d'entrée dont l'absence dans ton code pourrait peut-être expliquer les résultats étranges que tu constates.
Ritchi
Voici l'aide de Panda Dataframe : https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.max.html
Tu noteras au passage que la fonctionnalité Max() possède des paramètres d'entrée dont l'absence dans ton code pourrait peut-être expliquer les résultats étranges que tu constates.
Ritchi
Bonjour,
Merci pour votre aide, j'ai essayé en changeant les paramètres mais le résultat reste la même
En revanche sur mon dataframe je lui ai demandé de trier les données dans l'ordre, voici comment il les trie:
(quand j'ai mis
J'ai l'impression qu'il ne prend pas en compte les virgules ni les signes -
Merci pour votre aide, j'ai essayé en changeant les paramètres mais le résultat reste la même
En revanche sur mon dataframe je lui ai demandé de trier les données dans l'ordre, voici comment il les trie:
-0,07.... -0,2; -0,3; -0,4;..... -1.... -1,5.... -1,9; -10 ; -10,1 .... -10,9; -100.... -109,9; -11.... -11,1.... -11,9; -110;-111;.....-119;-12....-12,9;-120
(quand j'ai mis
".....", ca signifie que l'évolution est linéaire, avec un pas de 0,1 à peu près)
J'ai l'impression qu'il ne prend pas en compte les virgules ni les signes -
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Bonjour,
Sur mon dataframe je lui ai demandé de trier les données dans l'ordre, voici comment il les trie:
-0,07.... -0,2; -0,3; -0,4;..... -1.... -1,5.... -1,9; -10 ; -10,1 .... -10,9; -100.... -109,9; -11.... -11,1.... -11,9; -110;-111;.....-119;-12....-12,9;-120
(quand j'ai mis ".....", ca signifie que l'évolution est linéaire, avec un pas de 0,1 à peu près)
J'ai l'impression qu'il ne prend pas en compte les virgules ni les signes -
Sur mon dataframe je lui ai demandé de trier les données dans l'ordre, voici comment il les trie:
-0,07.... -0,2; -0,3; -0,4;..... -1.... -1,5.... -1,9; -10 ; -10,1 .... -10,9; -100.... -109,9; -11.... -11,1.... -11,9; -110;-111;.....-119;-12....-12,9;-120
(quand j'ai mis ".....", ca signifie que l'évolution est linéaire, avec un pas de 0,1 à peu près)
J'ai l'impression qu'il ne prend pas en compte les virgules ni les signes -
mamiemando
Messages postés
33540
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 février 2025
7 828
Modifié le 15 déc. 2021 à 14:21
Modifié le 15 déc. 2021 à 14:21
Bonjour,
Peux-tu partager un exemple minimum de code (et fonctionnel) ainsi qu'un fichier texte minimal qui mettent en évidence le problème ?
Bonne chance
Peux-tu partager un exemple minimum de code (et fonctionnel) ainsi qu'un fichier texte minimal qui mettent en évidence le problème ?
Bonne chance
mamiemando
Messages postés
33540
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 février 2025
7 828
Modifié le 16 déc. 2021 à 15:10
Modifié le 16 déc. 2021 à 15:10
Bonjour,
En fait il y a deux problèmes dans ton fichiers csv :
Voici la solution que je te propose :
On peut contrôler que les valeurs de la dataframe ont un type qui tient la route et que son contenu est également correct :
... ce qui donne :
Bonne chance
En fait il y a deux problèmes dans ton fichiers csv :
- L'en-tête (header) est sur deux lignes au lieu de une. Selon la documentation de
read_csv
, il est possible de passerheader=[0, 1]
, mais chez moi ça ne fait pas ce qu'il faut. De même, on aurait pu être tenté de passerskiprows=1
, mais là non plus, ça ne fait pas ce qu'il faut. Pour contourner, le problème, je te propose donc de passer par unStringIO
intermédiaire, dans lequel on ne conserve que les lignes qui nous intéresse (toutes sauf la seconde qui contient les unités physiques). - Comme le souligne yg_be, tes valeurs décimales utilisent le caractère
,
au lieu de.
et donc par défaut,pandas
considère que ça n'est pas un flottant et considère ces valeurs comme des chaînes. Pour éviter cela il faut préciserdecimal=","
au moment de charger la dataframe, ce qui évitera de devoir faire les downcasts dont parle yg_be.
Voici la solution que je te propose :
import pandas as pd from io import StringIO filename = "foo.csv" with open(filename) as f: s = StringIO("".join([ line for (i, line) in enumerate(f.readlines()) if i != 1 ])) df = pd.read_csv(s, sep=" ", decimal=",")
On peut contrôler que les valeurs de la dataframe ont un type qui tient la route et que son contenu est également correct :
for col in df.columns: print(col, type(df[col][0])) print(df)
... ce qui donne :
Time Iph0 HTB G1 Iph4 HTB.1 \
0 -2.5000 -0.113344 -0.007221 -0.250831 -3.089630 -0.055189
1 -2.4995 -0.113344 -0.007221 -0.250831 -2.040770 -0.055189
2 -2.4990 -0.113344 -0.141455 -0.250831 -0.991916 -0.055189
3 -2.4985 -0.113344 -0.141455 -0.250831 -0.991916 -0.055189
4 -2.4980 -0.247603 -0.141455 -0.250831 -0.991916 -0.055189
.. ... ... ... ... ... ...
59 2.4975 -122.692001 -108.199997 214.673996 12066.099609 -7176.410156
60 2.4980 -110.876999 -96.521202 190.376007 11596.200195 -8438.879883
61 2.4985 -84.562500 -69.808701 138.826004 10956.400391 -9500.019531
62 2.4990 -50.729099 -34.908001 73.180901 10153.000000 -10484.599609
63 2.4995 -20.386499 -2.154960 13.039400 9234.190430 -11411.500000
G1.1 Iph8 HTB.2 G1.2 ... A.1 G2.6 Emission.3 \
0 -1.058710 1.59654 -317957.0 0.125600 ... NaN NaN NaN
1 -1.058710 1.59654 -299694.0 0.125600 ... NaN NaN NaN
2 -2.109690 1.59654 -274737.0 0.132382 ... NaN NaN NaN
3 -2.109690 1.59654 -243791.0 0.132382 ... NaN NaN NaN
4 -2.109690 1.59654 -207047.0 0.132382 ... NaN NaN NaN
.. ... ... ... ... ... ... ... ...
59 -6804.040039 0.00000 -288584.0 120.461998 ... NaN NaN NaN
60 -5948.549805 0.00000 -309747.0 120.101997 ... NaN NaN NaN
61 -4684.220215 0.00000 -323214.0 119.580002 ... NaN NaN NaN
62 -2822.939941 0.00000 -328282.0 119.016998 ... NaN NaN NaN
63 -331.066010 0.00000 -324786.0 118.575996 ... NaN NaN NaN
ordre.3 ferm.3 pole.3 B.1 G2.7 CalcCh.1 C01
0 NaN NaN NaN NaN NaN NaN NaN
1 NaN NaN NaN NaN NaN NaN NaN
2 NaN NaN NaN NaN NaN NaN NaN
3 NaN NaN NaN NaN NaN NaN NaN
4 NaN NaN NaN NaN NaN NaN NaN
.. ... ... ... ... ... ... ...
59 NaN NaN NaN NaN NaN NaN NaN
60 NaN NaN NaN NaN NaN NaN NaN
61 NaN NaN NaN NaN NaN NaN NaN
62 NaN NaN NaN NaN NaN NaN NaN
63 NaN NaN NaN NaN NaN NaN NaN
[64 rows x 73 columns]
Time <class 'numpy.float32'>
Iph0 <class 'numpy.float32'>
HTB <class 'numpy.float32'>
G1 <class 'numpy.float32'>
Iph4 <class 'numpy.float32'>
HTB.1 <class 'numpy.float32'>
G1.1 <class 'numpy.float32'>
Iph8 <class 'numpy.float32'>
HTB.2 <class 'numpy.float32'>
G1.2 <class 'numpy.float32'>
Uph0 <class 'numpy.float32'>
HTA <class 'numpy.float32'>
G1.3 <class 'numpy.float32'>
Uph4 <class 'numpy.float32'>
HTA.1 <class 'numpy.float32'>
G1.4 <class 'numpy.float32'>
Uph8 <class 'numpy.float32'>
HTA.2 <class 'numpy.float32'>
G1.5 <class 'numpy.float32'>
CalcCh <class 'numpy.float32'>
A01 <class 'numpy.float32'>
Uph0.1 <class 'numpy.float32'>
HTB.3 <class 'numpy.float32'>
G1.6 <class 'numpy.float32'>
Emission <class 'numpy.float32'>
ordre <class 'numpy.float32'>
ferm <class 'numpy.float32'>
pole <class 'numpy.float32'>
A <class 'numpy.float32'>
G1.7 <class 'numpy.float32'>
Emission.1 <class 'numpy.float32'>
ordre.1 <class 'numpy.float32'>
ferm.1 <class 'numpy.float32'>
pole.1 <class 'numpy.float32'>
B <class 'numpy.float32'>
G1.8 <class 'numpy.float32'>
Iph0.1 <class 'numpy.float32'>
HTB.4 <class 'numpy.float32'>
G2 <class 'numpy.float32'>
Iph4.1 <class 'numpy.float32'>
HTB.5 <class 'numpy.float32'>
G2.1 <class 'numpy.float32'>
Iph8.1 <class 'numpy.float32'>
HTB.6 <class 'numpy.float32'>
G2.2 <class 'numpy.float32'>
Uph0.2 <class 'numpy.float32'>
HTA.3 <class 'numpy.float32'>
G2.3 <class 'numpy.float32'>
Uph4.1 <class 'numpy.float32'>
HTA.4 <class 'numpy.float32'>
G2.4 <class 'numpy.float32'>
Ordre <class 'numpy.float32'>
marche <class 'numpy.float32'>
RPH3 <class 'numpy.float32'>
G2.5 <class 'numpy.float32'>
Ordre.1 <class 'numpy.float32'>
marche.1 <class 'numpy.float32'>
RPH3.1 <class 'numpy.float32'>
G1.9 <class 'numpy.float32'>
Emission.2 <class 'numpy.float32'>
ordre.2 <class 'numpy.float32'>
ferm.2 <class 'numpy.float32'>
pole.2 <class 'numpy.float32'>
A.1 <class 'numpy.float32'>
G2.6 <class 'numpy.float32'>
Emission.3 <class 'numpy.float32'>
ordre.3 <class 'numpy.float32'>
ferm.3 <class 'numpy.float32'>
pole.3 <class 'numpy.float32'>
B.1 <class 'numpy.float32'>
G2.7 <class 'numpy.float32'>
CalcCh.1 <class 'numpy.float32'>
C01 <class 'numpy.float32'>
Bonne chance
Merci beaucoup,
Il semblerait en effet que le problème vienne du format des valeurs.
Pour la question de la ligne en entête, je l'avais supprimé avec "df.drop(0,0,inplace=True)
del(df["C01"])" Mais en rajourant " decimal="," " J'ai dans mon dataframe des valeurs à virgule qu'il considère comme 'str' et des valeurs à point qu'il considère comme des float, je ne comprend pas pourquoi. Et il me dit donc impossible de comparer les deux .
Si j'utilise df["Iph0"] = pd.to_numeric(df["Iph0"], downcast='float') il m'affiche "Unable to parse string "0,201141" at position 0"
Il semblerait en effet que le problème vienne du format des valeurs.
Pour la question de la ligne en entête, je l'avais supprimé avec "df.drop(0,0,inplace=True)
del(df["C01"])" Mais en rajourant " decimal="," " J'ai dans mon dataframe des valeurs à virgule qu'il considère comme 'str' et des valeurs à point qu'il considère comme des float, je ne comprend pas pourquoi. Et il me dit donc impossible de comparer les deux .
Si j'utilise df["Iph0"] = pd.to_numeric(df["Iph0"], downcast='float') il m'affiche "Unable to parse string "0,201141" at position 0"
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
16 déc. 2021 à 17:24
16 déc. 2021 à 17:24
Ma suggestion supposait qu'il y avait des . dans le fichier texte.
antoninfoure
>
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
17 déc. 2021 à 09:27
17 déc. 2021 à 09:27
En effet, j'ai remplacé les virgules par des . dans le fichier texte, malheureusement je ne peux pas obtenir tous mes fichiers avec des . est ce que vous sauriez modifier cela avec python ? Est ce que je dois modifier le fichier texte ou bien je peux modifier le dataframe ?
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
1 568
>
antoninfoure
17 déc. 2021 à 10:15
17 déc. 2021 à 10:15
tu peux modifier ainsi le dataframe:
for i in range(1,len(df["Iph0"])+1): df["Iph0"][i]=float(df["Iph0"][i].replace(",","."))
mamiemando
Messages postés
33540
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
21 février 2025
7 828
>
yg_be
Messages postés
23476
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
20 février 2025
20 déc. 2021 à 12:36
20 déc. 2021 à 12:36
Si tu prends le temps de lire le message #15 tu verras qu'il n'est pas nécessaire de bidouiller le fichier comme le proposes yg_be, cela peut se gérer directement au moment de charger la dataframe...
15 déc. 2021 à 14:21
15 déc. 2021 à 14:53
15 déc. 2021 à 16:42