私はファンタジーのフットボールの情報をウェブサイトでスクラップし、Excelファイルに書き込むこの機能に取り組んでいます。最終的には、Excelワークブック内の別のシートに毎週の情報を載せたいと思っています。ループを使用してDataframe PandasでExcelシートを作成
次のコードは、Excelワークブックに書き込むまで完全に機能します。ワークブックはわずか17週のデータを持っています。パンダExcelWriterは毎回シートを追加したいときに毎回そのシートを上書きするようです。
pandas ExcelWriterでループを含むシートを作成することについてオンラインで何かを見つけることができなかったので、私が望むように行うことができるかどうかは完全にはわかりません。
import bs4 as bs
import urllib.request
import pandas as pd
from pandas import ExcelWriter
for week in range(1,18):
#IGNORE MOST OF THIS STUFF BELOW BECAUSE IT WORKS AS IS
source = urllib.request.urlopen('http://fftoday.com/stats/playerstats.php?Season=2015&GameWeek='+str(week)+'&PosID=10&LeagueID=1').read()
soup = bs.BeautifulSoup(source, 'lxml')
table = soup.find('table', width='100%', border='0', cellpadding='2', cellspacing='1')
table_rows = table.find_all('tr')
player_data = {}
for tr in table_rows:
td = tr.find_all('td')
row = [i.text for i in td]
if row != ['\xa0 ', 'Passing', 'Rushing', 'Fantasy'] and row != ['Player\nSort First: \n\n\n\xa0\xa0\n\t\tLast: \n\n\n', 'Team\n\n\n\n', 'G\n\n\n\n', 'Comp\n\n', 'Att\n\n', 'Yard\n\n', 'TD\n\n', 'INT\n\n', 'Att\n\n', 'Yard\n\n', 'TD\n\n', 'FPts\n\n\n\n', 'FPts/G\n\n\n\n']:
names = str(row[0]).encode('utf-8')
names = str(names)[:-1].split()[1:]
names[0:] = [' '.join(names[0:])]
row[0] = names[0]
player_data[str(row[0])] = row[1:]
df_qb = pd.DataFrame.from_dict(player_data)
df_qb = df_qb.transpose()
df_qb.columns = ['Team', 'Games', 'Completions', 'Att', 'Yards',
'TD', 'INT', 'Rush Att', 'Rush Yards', 'Rush TD',
'Fantasy Points', 'Fantasy Points per Game']
#EVERY THING WORKS JUST FINE UNTIL RIGHT HERE
writer = ExcelWriter('Weekly Fantasy Football Data.xlsx')
df_qb.to_excel(writer, 'Week ' + str(week))
writer.save()
http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.to_excel.html – innisfree
http://stackoverflow.com/questions/20219254/how-to-write-既存のExcelファイルを上書きせずにデータ利用パンダ – innisfree