Modifier Excel à partir de Python pour créer un tableau croisé dynamique

Je souhaite améliorer l'efficacité en utilisant Python

Pour améliorer l'efficacité du travail, je voulais créer un tableau croisé dynamique pour le fichier Excel créé par Pandas, activer les filtres et regrouper les dates et heures.

Je n'avais pas beaucoup de matériel en japonais, alors j'aimerais le partager comme référence.

L'URL affichée dans Reference montre la fonction pour créer le tableau croisé dynamique, donc si vous voulez faire plus de choses, vous devriez vous y référer.

Créer un fichier d'exemple

Créez des données pour un tableau croisé dynamique sans signification particulière. Modifiez le nom du fichier à exporter sous forme de fichier Excel. Veillez à ce que le nom de fichier spécifié ne se trouve pas dans le même répertoire. Nous ne pouvons pas prendre la responsabilité même s'il est écrasé.

import pandas as pd 
import random
from datetime import datetime as dt

record = []
for y in range(2015, 2020):
    for m in range(1, 13):
        for shop in ['A', 'B', 'C']:
            date = dt(year=y, month=m, day=1).strftime('%Y-%m-%d')
            price = 200 + random.randint(0,100)    
            record.append([date, shop, price])

df_record = pd.DataFrame(record)
df_record.columns = ['date', 'shop', 'price']
df_record['date'] = pd.to_datetime(df_record['date'])
df_record.to_excel('Veuillez modifier ici.xlsx', index=None)

Création de tableau croisé dynamique

Spécifiez le nom de fichier spécifié dans [Créer un exemple de fichier](#Créer un exemple de fichier) comme nom de fichier lu.

import win32com.client as win32
import os
win32c = win32.constants

## win32.Je pourrais le faire avec Dispatch, mais j'ai eu une erreur quand je l'ai transformé en un exe avec pyinstaller, donc
## win32.gencache.Il peut être plus sûr d'utiliser EnsureDispatch
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True  

##Si vous ne spécifiez pas le chemin absolu lors de la lecture, une erreur se produira
fpath = os.path.join(os.getcwd(),'Veuillez modifier ici.xlsx')
wb = excel.Workbooks.Open(fpath)

##Spécifiez la feuille 1 et activez le filtre
wbs1 = wb.Sheets('Sheet1')
wbs1.Columns.AutoFilter(1)

##Créer un tableau croisé dynamique
wbs2_name = 'pivot'
wb.Sheets.Add().Name = wbs2_name
wbs2 = wb.Sheets(wbs2_name)
pvt_name = 'pvt'
pc = wb.PivotCaches().Create(SourceType=win32c.xlDatabase, SourceData=wbs1.UsedRange)
pc.CreatePivotTable(TableDestination='{sheet}!R3C1'.format(sheet=wbs2_name), TableName=pvt_name)

##Paramètres du tableau croisé dynamique
wbs2.PivotTables(pvt_name).PivotFields('date').Orientation = win32c.xlRowField
wbs2.PivotTables(pvt_name).AddDataField(wbs2.PivotTables(pvt_name).PivotFields('price'), 'Ave/price', win32c.xlAverage).NumberFormat = '0'
wbs2.PivotTables(pvt_name).PivotFields('price').Orientation = win32c.xlPageField

##Sélectionnez un groupe de dates
## Periods=(Secondes,Minutes,Temps,journée,Mois,trimestre,Année)
wbs2.Cells(4, 1).Select()
excel.Selection.Group(Start=True, End=True, Periods=(False, False, False, False, True, False, True))

##Fermer le fichier
wb.Close(True)
excel.Quit()

Matériel de référence

How to Create a Pivot Table in Excel with the Python win32com Module

Recommended Posts

Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Créer un tableau C à partir d'une feuille Python> Excel
Script Python qui crée un fichier JSON à partir d'un fichier CSV
5 façons de créer un chatbot Python
Comment créer un clone depuis Github
Créer un fichier deb à partir d'un package python
Comment créer un référentiel à partir d'un média
Créer un bloc de données à partir d'Excel à l'aide de pandas
Envoyer un message de Slack à un serveur Python
[Python] Compréhension de liste Différentes façons de créer une liste
Comment ouvrir un navigateur Web à partir de python
Comment créer un objet fonction à partir d'une chaîne
Créer un module Python
Changements de Python 3.0 à Python 3.5
Changements de Python 2 à Python 3.0
Importer un fichier Excel depuis Python (enregistré dans DB)
Je veux créer une fenêtre avec Python
Comment créer un fichier JSON en Python
Créez un outil qui secoue automatiquement furigana avec html en utilisant Mecab de Python3
Créer une nouvelle tâche Todoist à partir d'un script Python
[python] Créer une table de pandas DataFrame vers postgres
Exécutez Python à partir d'Excel
Comment générer un objet Python à partir de JSON
Étapes pour créer un bot Twitter avec Python
Créer un arbre de décision à partir de 0 avec Python (1. Présentation)
Créer un objet datetime à partir d'une chaîne en Python (Python 3.3)
Créer un environnement Python
Exécutez des scripts Python à partir d'Excel (en utilisant xlwings)
Créez des paramètres dans terraform pour envoyer des messages depuis AWS Lambda Python3.8 vers Slack
Créer un plugin pour exécuter Python Doctest sur Vim (2)
Créez un plug-in pour exécuter Python Doctest avec Vim (1)
Étapes de l'installation de Python 3 à la création d'une application Django
De l'achat d'un ordinateur à l'exécution d'un programme sur python
Envisagez la conversion de Python récursif en non récursif
[Python] Comment créer un histogramme bidimensionnel avec Matplotlib
[Python] Comment appeler une fonction de c depuis python (édition ctypes)
Créer un plugin Wox (Python)
Publier de Python vers Slack
Créer une fonction en Python
Créer un dictionnaire en Python
Flirter de PHP à Python
Une route vers Python intermédiaire
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Créer un tableau numpy python
Passer de python2.7 à python3.6 (centos7)
Connectez-vous à sqlite depuis python
[Introduction à Python] <liste> [modifier le 22/02/2020]
Créer un répertoire avec python
[GCF + Python] Comment importer Excel vers GCS et créer une nouvelle table dans BigQuery
[Il n'est pas trop tard pour apprendre Python à partir de 2020] Partie 2 Créons un environnement de développement Python
Comment créer un profil radial à partir d'images astronomiques (Chandra, XMM etc.) en utilisant python
Comment utiliser NUITKA-Utilities hinted-compilation pour créer facilement un fichier exécutable à partir d'un script Python
J'ai écrit du code Python pour créer un diagramme de dépendance de table (vue) (PlantUML) à partir de SQL
J'ai essayé de créer une API list.csv avec Python à partir de swagger.yaml
Comment découper un bloc de plusieurs tableaux à partir d'un multiple en Python
Comment exécuter un programme Python à partir d'un script shell
Créez un bot Mastodon avec une fonction pour répondre automatiquement avec Python