J'ai un grand fichier de feuille de calcul (.xlsx) que je traite à l'aide de pandas python. Il se trouve que j'ai besoin de données de deux onglets dans ce gros fichier. L'un des onglets contient une tonne de données et l'autre ne contient que quelques cellules carrées.
Quand j'utilise pd.read_excel () sur n'importe quel feuille calcul, il me semble que tout le fichier est chargé (pas seulement la feuille de calcul qui m'intéresse). Ainsi, lorsque j'utilise la méthode deux fois (une fois pour chaque feuille), je dois effectivement souffrir que tout le classeur soit lu deux fois (même si nous n'utilisons que la feuille spécifiée).
Est-ce que je l'utilise mal ou est-ce simplement limité de cette manière?
Je vous remercie!
Réponses:
Essayez
pd.ExcelFile
:Comme indiqué par @HaPsantran, l'intégralité du fichier Excel est lu pendant l'
ExcelFile()
appel (il ne semble pas y avoir de moyen de contourner cela). Cela vous évite simplement d'avoir à lire le même fichier à chaque fois que vous souhaitez accéder à une nouvelle feuille.Notez que l'
sheet_name
argument topd.read_excel()
peut être le nom de la feuille (comme ci-dessus), un entier spécifiant le numéro de la feuille (par exemple 0, 1, etc.), une liste de noms de feuilles ou d'indices, ouNone
. Si une liste est fournie, elle renvoie un dictionnaire dans lequel les clés sont les noms / index de feuille et les valeurs sont les blocs de données. La valeur par défaut est de simplement renvoyer la première feuille (c.-à-d.sheet_name=0
).Si
None
est spécifié, toutes les feuilles sont renvoyées, sous forme de{sheet_name:dataframe}
dictionnaire.la source
sheet_name
et nonsheetname
. Je n'avais pas réalisé que c'était la partie obsolète, car elle fonctionnait toujours sur la méthode read_excel, mais pas sur la méthode parse.Il existe 3 options:
Lisez toutes les feuilles directement dans un dictionnaire ordonné.
Merci @ihightower pour l'avoir signalé et @toto_tico pour avoir signalé le problème de version.
Lire la première feuille directement dans le dataframe
Lisez le fichier Excel et obtenez une liste de feuilles. Ensuite, choisissez et chargez les feuilles.
Lisez toutes les feuilles et stockez-les dans un dictionnaire. Identique au premier mais plus explicite.
Mise à jour: Merci @toto_tico d'avoir signalé le problème de version.
la source
df_sheet_map = pd.read_excel(file_fullpath, sheetname=None)
, cela aura les feuilles dans un dictionnaire automatiquement .. et accéder à la feuille en tant que dataframe comme ceci:df_sheet_map['house']
Vous pouvez également utiliser l'index de la feuille:
donnera la première feuille de calcul. pour la deuxième feuille de calcul:
la source
Vous pouvez également spécifier le nom de la feuille en tant que paramètre:
téléchargera uniquement la feuille
"sheet_name"
.la source
par défaut, lisez la première feuille du classeur.
lire la feuille spécifique du classeur et
lire toutes les feuilles de calcul d'Excel à Pandas dataframe en tant que type de OrderedDict signifie des dataframes imbriquées, toutes les feuilles de calcul en tant que dataframes collectées à l'intérieur de dataframe et son type est OrderedDict.
la source
Oui, malheureusement, il chargera toujours le fichier complet. Si vous faites cela à plusieurs reprises, il est probablement préférable d'extraire les feuilles pour séparer les CSV, puis de les charger séparément. Vous pouvez automatiser ce processus avec d6tstack qui ajoute également des fonctionnalités supplémentaires telles que vérifier si toutes les colonnes sont égales sur toutes les feuilles ou sur plusieurs fichiers Excel.
Voir les exemples Excel de d6tstack
la source
Si vous avez enregistré le fichier Excel dans le même dossier que votre programme python (Adressage relatif), il vous suffit de mentionner le numéro de feuille avec le nom du fichier. Syntaxe = pd.read_excel (Filename, SheetNo) Exemple:
la source