Um die Arbeitseffizienz zu verbessern, wollte ich eine Pivot-Tabelle für die von Pandas erstellte Excel-Datei erstellen, Filter aktivieren sowie Datums- und Uhrzeitangaben gruppieren.
Ich hatte nicht viel Material auf Japanisch, deshalb möchte ich es als Referenz teilen.
Die in Referenz angezeigte URL zeigt die Funktion zum Erstellen der Pivot-Tabelle. Wenn Sie also mehr tun möchten, sollten Sie darauf verweisen.
Erstellen Sie Daten für eine Pivot-Tabelle, die keine bestimmte Bedeutung hat. Bearbeiten Sie den Dateinamen, der als Excel-Datei ausgegeben werden soll. Achten Sie darauf, dass sich der angegebene Dateiname nicht im selben Verzeichnis befindet. Wir können keine Verantwortung übernehmen, auch wenn diese überschrieben wird.
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('Bitte hier bearbeiten.xlsx', index=None)
Geben Sie den unter [Beispieldatei erstellen](# Beispieldatei erstellen) angegebenen Dateinamen als Namen der gelesenen Datei an.
import win32com.client as win32
import os
win32c = win32.constants
## win32.Ich könnte es mit Dispatch machen, aber ich habe einen Fehler bekommen, als ich es mit pyinstaller zu einer Exe gemacht habe
## win32.gencache.Die Verwendung von EnsureDispatch ist möglicherweise sicherer
excel = win32.gencache.EnsureDispatch('Excel.Application')
excel.Visible = True
##Wenn Sie beim Lesen nicht den absoluten Pfad angeben, tritt ein Fehler auf
fpath = os.path.join(os.getcwd(),'Bitte hier bearbeiten.xlsx')
wb = excel.Workbooks.Open(fpath)
##Geben Sie Blatt 1 an und aktivieren Sie den Filter
wbs1 = wb.Sheets('Sheet1')
wbs1.Columns.AutoFilter(1)
##Erstellen einer Pivot-Tabelle
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)
##Pivot-Tabelleneinstellungen
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
##Wählen Sie eine Gruppe von Daten
## Periods=(Sekunden,Protokoll,Zeit,Tag,Mond,Quartal,Jahr)
wbs2.Cells(4, 1).Select()
excel.Selection.Group(Start=True, End=True, Periods=(False, False, False, False, True, False, True))
##Datei schließen
wb.Close(True)
excel.Quit()
How to Create a Pivot Table in Excel with the Python win32com Module