Convertir le type 'datetime.datetime' en 'float'

a marqué ce sujet comme résolu.

Bonjour,

J’ai un problème lors de la lecture d’un fichier Excel .xlsx normal (2 colonnes avec des valeurs numériques à priori) avec Pandas. En fait, j’utilise la fonction read_excel avec convertisseur pour transformer les colonnes directement en float (car au début je pensais que c’étaient des str) avec j’ai l’erreur suivante : float() argument must be a string or a number, not 'datetime.datetime'.

Sachant que mes valeurs sont des valeurs numériques très banales du genre 0.00, 0.04, 0.07… et 1650, 2550… Je veux dire, il n’y a aucun format explicite de date dans les valeurs.

J’ai essayé de chercher sur plusieurs sites comment convertir un type datetime en float mais je ne trouve rien (par contre l’inverse oui).

Peut-être devrais-je écrire une fonction toute bête qui parcourt tous les éléments et les transforme en chaîne de caractères puis transforme cette chaîne en réel mais ça peut marcher rapidement dans mon cas (très peu de données) mais je dis si un jour je rencontre des données très grosses que devrais-je faire ?

J’espère que vous pourrez m’aider.

Merci d’avance.

edit adri1: format des tags

+0 -0

Bonjour,

Il faut absolument que tu nous donnes plus d’information.

Le format excel pour une date est le suivant :

  • 1 = 11 et donc 0.5 = 12h, etc, …;
  • Si < 1 alors ce n’est pas une date mais une heure;
  • Si >= 1 alors c’est ne nombre de jours stocker depuis le 1 Janvier 1904 (anciennement 1900).

Voilà, ensuite, read_excel se comporte différemment en fonction du type des colonnes dans Excel, il a peut-être détecter une date ?!

Normalement, tu as l’option parse_date=False qui désactive le parsing des dates (et donc les dates restes des float).

Poste nous comment tu utilises pandas et une photo du début du fichier Excel pour qu’on puisse bien t’aider.

+0 -0

Bonsoir,

Merci pour ces précisions. J’ai joint une capture d’écran du début de l’Excel pour que vous ayez idée des données. Je ne sais pas pourquoi le tableau est orange en fait j’ai copié ce même tableau d’un autre qui contenait les données avec des "," et je les ai remplacé avec la fonction Rechercher d’Excel. (C’est plus Google Sheets qu’Excel en vrai…).

Sinon pour Pandas j’ai utilisé la commande suivante :

import pandas as pd
df = pd.read_excel('feuille_calcul.xlsx', header=0, converters={'alpha': float, 'M': float})
Capture d'écran du Google Sheets
Capture d'écran du Google Sheets

Je confirme. Le format ne semble pas posé de problème. Ça devrait marché.

Juste je me demandais. Le format de fichier Excel t’es imposé.e ? Car des formats comme .csv ou .json serait plus simple à lire et beaucoup plus utilisé dans la pratique.

+0 -0
Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte