Moyen plus rapide pour lire les fichiers Excel pour les pandas dataframe
J'ai un 14MB fichier Excel avec cinq feuilles de calcul que je suis en train de lire dans une Pandas dataframe, et bien que le code ci-dessous fonctionne, il faut 9 minutes!
Quelqu'un aurait-il des suggestions pour l'accélérer?
import pandas as pd
def OTT_read(xl,site_name):
df = pd.read_excel(xl.io,site_name,skiprows=2,parse_dates=0,index_col=0,
usecols=[0,1,2],header=None,
names=['date_time','%s_depth'%site_name,'%s_temp'%site_name])
return df
def make_OTT_df(FILEDIR,OTT_FILE):
xl = pd.ExcelFile(FILEDIR + OTT_FILE)
site_names = xl.sheet_names
df_list = [OTT_read(xl,site_name) for site_name in site_names]
return site_names,df_list
FILEDIR='c:/downloads/'
OTT_FILE='OTT_Data_All_stations.xlsx'
site_names_OTT,df_list_OTT = make_OTT_df(FILEDIR,OTT_FILE)
Pourriez-vous essayez de l'enregistrer au format csv et de chargement, il est possible que la excel reader n'est pas aussi rapide que le csv un
Il a plusieurs feuilles de calcul mais ne sera pas que de ne pas travailler?
Vous devriez toujours être en mesure de sauver chaque feuille, malheureusement, la douleur est ici que vous devez épargner chaque feuille séparément, 14MB n'est pas une grande taille et le csv reader va manger cette place très rapidement. Un autre point peut-être d'essayer
Il a plusieurs feuilles de calcul mais ne sera pas que de ne pas travailler?
Vous devriez toujours être en mesure de sauver chaque feuille, malheureusement, la douleur est ici que vous devez épargner chaque feuille séparément, 14MB n'est pas une grande taille et le csv reader va manger cette place très rapidement. Un autre point peut-être d'essayer
ExcelFile.parse
OriginalL'auteur jsignell | 2015-02-27
Vous devez vous connecter pour publier un commentaire.
Comme d'autres l'ont suggéré, csv lecture est plus rapide. Donc, si vous êtes sur windows et Excel, vous pourriez appeler un vbscript pour convertir Excel au format csv, puis lire le fichier csv. J'ai essayé le script ci-dessous et il a fallu environ 30 secondes.
Voici un petit extrait de python pour créer le ExcelToCsv.script vbs:
Cette réponse bénéficié de Convertir XLS en CSV sur la ligne de commande et csv & xlsx fichiers d'importation pour les pandas trame de données: problème de vitesse
OriginalL'auteur Rich Signell
Si vous avez moins de 65 536 lignes (chaque feuille) vous pouvez essayer
xls
(au lieu dexlsx
. Dans mon expérience,xls
est plus rapide quexlsx
. Il est difficile de comparer àcsv
, car cela dépend du nombre de feuilles.Bien que ce n'est pas une solution idéale (
xls
est un binaire vieux privative format), j'ai constaté qu'il est utile si vous avez trop de feuilles, interne formules avec des valeurs qui sont souvent mis à jour, ou pour quelque raison que ce soit que vous aimeriez vraiment garder le excel multiples fonctionnalités.OriginalL'auteur toto_tico