[Recommandation de Pandas] Un exemple de division d'une feuille Excel avec des centaines de milliers de lignes en n CSV et d'attribution de numéros de série à chaque fichier à partir de 1.

Ouais, utilisons des Pandas (python)

Nous sommes en 2020, je vais donc arrêter VBA et utiliser Pandas et python pour gérer Excel en interne. Ce qui suit est pour ceux qui ont lu l'article d'introduction de Python, donc les explications détaillées sont omises. Il y a beaucoup d'informations sur les pandas et python sur le Web, donc si vous êtes un bon garçon qui veut essayer Pandas et python, si vous avez un problème, vérifiez-le.

(Note supplémentaire pour les étudiants?) Alors que le renforcement de la conformité était recherché ...

Dans la société dite utilisatrice où de nombreuses personnes connaissent le nom dans TV CM, etc., la requête dans l'ancien Acesss de Heisei envoie une requête à une base de données, puis le fichier contenant des informations personnelles est envoyé. Exportez-le sur Excel ... Après cela, je dois faire un travail de bureau tel que le couper et le coller localement et l'utiliser à d'autres fins. Dans le cas des sociétés cotées, on dit souvent que ce travail est subtil en termes de compla (un exemple de demande de compla est de clarifier qui a vu des informations personnelles). Dans un tel cas, si vous vous dépêchez et exécutez Access sur Windows sur un serveur tel qu'AWS et terminez le traitement du côté serveur de la sortie CSV par une exécution planifiée, la conformité est acceptable pour le moment. Dans AWS, j'exécute un script dans Systems Manager et mets un fichier dans S3 ... etc. Cependant, dans une entreprise avec un ancien Access, il y a un script VB qui lui est attaché, VBA, ce qui est douloureux, il est donc dit qu'il devrait être remplacé par Pandas et python.

[1] Travaux préparatoires: fiche spécifique Excel Préparation manuelle

1-1. Installez la bibliothèque pour pouvoir lire Excel avec les pandas

$ pip install xlwt
$ pip install openpyxl

Si vous vous demandez ce qu'est pnp, veuillez rechercher sur Google diverses choses des environs de nkmk ici, la plaque de fer que vous ne supprimez pas dans le commentaire japonais de Pandas & python:

https://note.nkmk.me/python-pandas-to-excel/

1-2 Lisez la nième feuille d'Excel avec les pandas.

Ce serait pratique si vous pouviez lire rapidement l'une des feuilles Excel. Avec Pandas, vous pouvez rapidement convertir des feuilles Excel en quelque chose appelé DataFrame (df).

n=0 #Dans les pandas, 0 à droite de la feuille Excel,1,2...Spécifier.
#Exemple de lecture de la nième feuille avec le nom de fichier cible
df= pd.read_excel(target, sheet_name=n)

, La feuille Excel est lue comme un DataFrame (df) dans lequel vous ne pouvez en extraire qu'une partie, ou supprimer ou ajouter une colonne spécifique.

[2] Découpez une partie du Dataframe et renumérotez les numéros de série de 1.

2-1. Exemple de fonction d'attribution de numéro de série

Comme ça. Notez que pour les numéros de série, Excel est une culture qui commence à 1 et pandas est une culture qui commence à 0. Veuillez indiquer le nom de colonne auquel vous souhaitez attribuer des numéros de série, le cas échéant.

# new_index_colonne col(La valeur par défaut est"Numéro de série")に1からNuméro de sérieを付与する関数 
def getPartDf(df,start, step=5, debug= True, new_index_col="Numéro de série"):
    dfx = df[start:start+step].reset_index()
    dfx[new_index_col] = dfx.index +1 #Le numéro de série est à nouveau donné. Si vous définissez ceci sur autre chose que 1,
    dfy = dfx.set_index(new_index_col)
    return dfy if debug else dfy.drop("index", axis=1)

Si vous utilisez un DataFrame lu à partir d'un fichier Excel ridicule (comme moi), vous voudrez vous assurer de l'avoir lu, il y a donc aussi un mode de débogage qui conserve l'index d'origine (Remarque)

2-2. Exemple d'appel d'une fonction de numérotation de série dans une boucle for

Utilisez la fonction range pour faire pivoter la boucle à pas réguliers (step_num).

core_name = """Fichier après découpe"""
step_num= 10000
debug = False

# step_Le processus de découpage des lignes Excel en fichiers séparés par num.
for i in range(0, len(df), step_num):
    print(f"{i}c'est tout{i+step_num}Moins que")
    savedDf = getPartDf(df,i, step_num, debug)
    if (debug):
        print(savedDf.head())
    fn = f"{out}/{core_name}{i}_{i+step_num -1}.csv"
    savedDf.to_csv(fn, encoding="cp932")

Les fractions sont bien gérées par les pandas.

Exemple d'exécution: lors du traitement d'une feuille Excel avec des centaines de milliers de lignes

ʻSi debug = False`

Sortie écran:

0 ou plus et moins de 10000
10000 ou plus et moins de 20000
20000 ou plus et moins de 30000
30000 ou plus et moins de 40000
40000 ou plus et moins de 50000
50000 ou plus et moins de 60000
60 000 ou plus et moins de 70 000
(Abréviation)
len 836543

Partie du fichier Excel de sortie (que faire si l'extension n'est pas affichée ...): 切り出し後.PNG

À propos, le traitement avec un grand partenaire Excel prend beaucoup de temps. Cet article aurait également été rédigé pendant ce temps d'attente. ..

Recommended Posts

[Recommandation de Pandas] Un exemple de division d'une feuille Excel avec des centaines de milliers de lignes en n CSV et d'attribution de numéros de série à chaque fichier à partir de 1.
Utilisez Pandas pour écrire uniquement les lignes spécifiées du bloc de données dans le fichier Excel
Comment coller un fichier CSV dans un fichier Excel à l'aide de Pandas