まとめページ
↓で各細かい操作のまとめページを作りました。今後はこちらを更新していきます。
データ抽出→ソート→別ファイル出力
Jリーグデータサイトの「天候ごとのチームの勝敗」に対して処理を行う。
J. League Data Site (j-league.or.jp)
フォルダ構成は以下で、prgから実行。
─┬data
└prg
import openpyxl
from pprint import pprint
from operator import itemgetter
#import pandas as pd
wb = openpyxl.load_workbook(r"..\data\全チーム_天候別勝敗.xlsx")
sh = wb.active
#辞書のリストを作る
shipment_list = []
for row in sh.iter_rows():
if row[0].row == 1:
header_cells = row
else:
row_dic = {}
for v, k in zip(header_cells, row):
row_dic[v.value] = k.value
shipment_list.append(row_dic)
#ソート処理
#aはチーム_大会_天候
#bは天候_大会_チーム
sorted_list_a = sorted(shipment_list, key=itemgetter("チーム","大会", "天候"))
sorted_list_b = sorted(shipment_list, key=itemgetter("天候", "大会","チーム"))
#aの転記処理
#転記準備
owb = openpyxl.Workbook()
osh = owb.active
osh.title = "チーム_大会_天候"
list_row = 1
#転記先ヘッダ処理
osh.cell(list_row,1).value = "チーム"
osh.cell(list_row,2).value = "大会"
osh.cell(list_row,3).value = "天候"
osh.cell(list_row,4).value = "試合"
osh.cell(list_row,5).value = "勝"
osh.cell(list_row,6).value = "分"
osh.cell(list_row,7).value = "敗"
osh.cell(list_row,8).value = "得点"
osh.cell(list_row,9).value = "失点"
#転記処理
for dic in sorted_list_a:
list_row += 1
osh.cell(list_row,1).value = dic["チーム"]
osh.cell(list_row,2).value = dic["大会"]
osh.cell(list_row,3).value = dic["天候"]
osh.cell(list_row,4).value = dic["試合"]
osh.cell(list_row,5).value = dic["勝"]
osh.cell(list_row,6).value = dic["分"]
osh.cell(list_row,7).value = dic["敗"]
osh.cell(list_row,8).value = dic["得点"]
osh.cell(list_row,9).value = dic["失点"]
#転記ファイルとして保存
owb.save(r"..\data\チーム_大会_天候.xlsx")
#bの転記処理
#転記準備
owb = openpyxl.Workbook()
osh = owb.active
osh.title = "天候_大会_チーム"
list_row = 1
#転記先ヘッダ処理
osh.cell(list_row,1).value = "チーム"
osh.cell(list_row,2).value = "大会"
osh.cell(list_row,3).value = "天候"
osh.cell(list_row,4).value = "試合"
osh.cell(list_row,5).value = "勝"
osh.cell(list_row,6).value = "分"
osh.cell(list_row,7).value = "敗"
osh.cell(list_row,8).value = "得点"
osh.cell(list_row,9).value = "失点"
#転記処理
for dic in sorted_list_b:
list_row += 1
osh.cell(list_row,1).value = dic["チーム"]
osh.cell(list_row,2).value = dic["大会"]
osh.cell(list_row,3).value = dic["天候"]
osh.cell(list_row,4).value = dic["試合"]
osh.cell(list_row,5).value = dic["勝"]
osh.cell(list_row,6).value = dic["分"]
osh.cell(list_row,7).value = dic["敗"]
osh.cell(list_row,8).value = dic["得点"]
osh.cell(list_row,9).value = dic["失点"]
#転記ファイルとして保存
owb.save(r"..\data\天候_大会_チーム.xlsx")
データ別にシートを分けて出力
得点ランキングに載っている選手のデータを、所属チーム単位でシートを分けて記載する。
フォルダ構成は以下で、prgから実行。
─┬indata
├outdata
import openpyxl
from operator import itemgetter
└prg
import openpyxl
from operator import itemgetter
wb = openpyxl.load_workbook(r"..\indata\全選手_得点データ.xlsx")
sh = wb.active
#辞書のリストを作る
shipment_list = []
for row in sh.iter_rows():
if row[0].row == 1:
header_cells = row
else:
row_dic = {}
for k, v in zip(header_cells, row):
row_dic[k.value] = v.value
shipment_list.append(row_dic)
#大会順にソート
sorted_list = sorted(shipment_list,key=itemgetter("所属(J最終所属)", "得点"))
owb = openpyxl.Workbook()
osh = owb.active
osh.title = "全チーム_得点"
list_row = 1
#転記処理
#ヘッダ処理
osh.cell(list_row,1).value = "大会"
osh.cell(list_row,2).value = "順位"
osh.cell(list_row,3).value = "選手名"
osh.cell(list_row,4).value = "所属(J最終所属)"
osh.cell(list_row,5).value = "得点"
osh.cell(list_row,6).value = "シュート"
osh.cell(list_row,7).value = "出場"
osh.cell(list_row,8).value = "出場時間"
osh.cell(list_row,9).value = "1試合平均"
osh.cell(list_row,10).value = "合計"
for dic in sorted_list:
list_row += 1
osh.cell(list_row,1).value = dic["大会"]
osh.cell(list_row,2).value = dic["順位"]
osh.cell(list_row,3).value = dic["選手名"]
osh.cell(list_row,4).value = dic["所属(J最終所属)"]
osh.cell(list_row,5).value = dic["得点"]
osh.cell(list_row,6).value = dic["シュート"]
osh.cell(list_row,7).value = dic["出場"]
osh.cell(list_row,8).value = dic["出場時間"]
osh.cell(list_row,9).value = dic["1試合平均"]
old_key = ""
for dic in sorted_list:
if old_key != dic["所属(J最終所属)"]:
old_key = dic["所属(J最終所属)"]
osh_n = owb.create_sheet(title=dic["所属(J最終所属)"])
list_row = 1
for i in range(1,10):
osh_n.cell(list_row,i).value = osh.cell(list_row,i).value
list_row += 1
osh_n.cell(list_row,1).value = dic["大会"]
osh_n.cell(list_row,2).value = dic["順位"]
osh_n.cell(list_row,3).value = dic["選手名"]
osh_n.cell(list_row,4).value = dic["所属(J最終所属)"]
osh_n.cell(list_row,5).value = dic["得点"]
osh_n.cell(list_row,6).value = dic["シュート"]
osh_n.cell(list_row,7).value = dic["出場"]
osh_n.cell(list_row,8).value = dic["出場時間"]
osh_n.cell(list_row,9).value = dic["1試合平均"]
owb.save(r"..\outdata\ゴール数集計3.xlsx")
フォントを変更する処理
ファイルの全シート全行に対して、フォントをMeiryo UIに変更する。
フォルダ構成は以下で、prgから実行。
─┬indata
├outdata
└prg
import openpyxl
from openpyxl.styles import Font
wb = openpyxl.load_workbook(r"..\outdata\ゴール数集計3.xlsx")
sh = wb.active
#フォント設定処理---ここから---
font = Font(name = "Meiryo UI")
for sh in wb.worksheets:
for row in sh:
for cell in row:
sh[cell.coordinate].font = font
wb.save(r"..\outdata\ゴール数集計3_meiryo.xlsx")
#フォント設定処理---ここまで---
以上