ボルトがラストラン(100m x 4リレー)で足首をひねり失格。同じ年で頑張っているアスリートが次々と引退していく昨今で、少し物悲しさが残る結果になりましたね。今日は100m走を題材にPandas学習していきます。
やりたいこと
- 100m走シーズン記録のデータフレーム化
- 100m走シーズン記録のグラフ化
- (おまけ)100m走シーズン記録の動画を検索&インライン表示
できたもの
必要なもの
- matplotlib
- YouTubeAPIのアカウントKEY
1. 100m走シーズン記録のデータフレーム化
100m走が気になって、Wikipediaを読んでいたら100mのシーズン記録がtableで載ってました。こういった整形されたデータはデータフレームに変換しやすいので、やってみることにします。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
import pandas as pd import html5lib import datetime import re hundred_time_table= pd.read_html('https://ja.wikipedia.org/wiki/100%E3%83%A1%E3%83%BC%E3%83%88%E3%83%AB%E7%AB%B6%E8%B5%B0') df_hundread = hundred_time_table[6] #この処理無駄。カラム名を変えながら、1行目を削除している。 df_hundread.columns = df_hundread.iloc[0] df_hundread = df_hundread.drop(0) df_hundread.head(3) #記録カラムが数値になってないので正規表現で変換 for i, z in zip(df_hundread['記録'], range(len(df_hundread['記録']))): m = re.search('(10|9)秒(dd)', i) df_hundread.iloc[[z], [1]]= float(m.group(1) + '.' + m.group(2)) #日付カラムをdatetime型へ変換 for day, p in zip(df_hundread['日付'], range(len(df_hundread['日付']))): df_hundread.iloc[[p], [6]] = datetime.datetime.strptime(day, '%Y年%m月%d日') |
ということで、一部データ整形が必要だったけど、比較的簡単にデータフレーム化が完了しました。
年 | 記録 | 風速 | 名前 | 所属 | 場所 | 日付 | |
---|---|---|---|---|---|---|---|
1 | 1964 | 10.06 | +1.1 | ボブ・ヘイズ | アメリカ合衆国 | 東京 | 1964-10-15 00:00:00 |
2 | 1968 | 10.03 | +0.9 | ジム・ハインズ | アメリカ合衆国 | サクラメント | 1968-06-20 00:00:00 |
3 | 1968 | 10.02 | +2.0 | チャールズ・エドワード・グリーン | アメリカ合衆国 | メキシコシティ | 1968-10-13 00:00:00 |
4 | 1968 | 9.95 | +0.3 | ジム・ハインズ | アメリカ合衆国 | メキシコシティ | 1968-10-14 00:00:00 |
5 | 1972 | 10.07 | 0.0 | ワレリー・ボルゾフ | ソビエト連邦 | ミュンヘン | 1972-08-31 00:00:00 |
6 | 1975 | 10.05 | -1.2 | スティーブ・リディック(英語版) | アメリカ合衆国 | チューリッヒ | 1975-08-20 00:00:00 |
7 | 1976 | 10.06 | -0.1 | ヘイズリー・クロフォード | トリニダード・トバゴ | モントリオール | 1976-07-24 00:00:00 |
8 | 1977 | 9.98 | +0.6 | シルビオ・レオナルド | キューバ | グアダラハラ | 1977-08-11 00:00:00 |
9 | 1978 | 10.07 | +1.7 | クランシー・エドワーズ(英語版) | アメリカ合衆国 | ユージーン | 1978-06-02 00:00:00 |
10 | 1978 | 10.07 | +1.8 | エドワード・ハート(英語版) | アメリカ合衆国 | コロラドスプリングス | 1978-07-30 00:00:00 |
11 | 1978 | 10.07 | -0.1 | スティーブ・ウィリアムズ(英語版) | アメリカ合衆国 | チューリッヒ | 1978-08-16 00:00:00 |
12 | 1979 | 10.01 | +0.9 | ピエトロ・メンネア | イタリア | メキシコシティ | 1979-09-04 00:00:00 |
13 | 1980 | 10.02 | +1.0 | ジェームズ・サンフォード(英語版) | アメリカ合衆国 | ウェストウッド | 1980-05-11 00:00:00 |
14 | 1981 | 10 | 0.0 | カール・ルイス | アメリカ合衆国 | ダラス | 1981-05-16 00:00:00 |
15 | 1982 | 10 | +1.9 | カール・ルイス | アメリカ合衆国 | モデスト | 1982-05-15 00:00:00 |
16 | 1983 | 9.93 | +1.4 | カルヴィン・スミス | アメリカ合衆国 | コロラドスプリングス | 1983-07-03 00:00:00 |
17 | 1984 | 9.96 | +0.1 | メル・ラッタニー(英語版) | アメリカ合衆国 | アテネ | 1984-05-05 00:00:00 |
18 | 1985 | 9.98 | +1.6 | カール・ルイス | アメリカ合衆国 | モデスト | 1985-05-11 00:00:00 |
19 | 1986 | 10 | +1.0 | チディ・イモー | ナイジェリア | ベルリン | 1986-08-15 00:00:00 |
20 | 1987 | 9.93 | +1.0 | カール・ルイス | アメリカ合衆国 | ローマ | 1987-08-30 00:00:00 |
21 | 1988 | 9.93 | +1.1 | カール・ルイス | アメリカ合衆国 | チューリッヒ | 1988-08-17 00:00:00 |
22 | 1988 | 9.92 | +1.1 | カール・ルイス | アメリカ合衆国 | ソウル | 1988-09-24 00:00:00 |
23 | 1989 | 9.94 | +0.8 | リロイ・バレル | アメリカ合衆国 | ヒューストン | 1989-06-16 00:00:00 |
24 | 1990 | 9.96 | +0.7 | リロイ・バレル | アメリカ合衆国 | ヴィルヌーヴ=ダスク | 1990-06-29 00:00:00 |
25 | 1991 | 9.9 | +1.9 | リロイ・バレル | アメリカ合衆国 | ニューヨーク | 1991-06-14 00:00:00 |
26 | 1991 | 9.86 | +1.2 | カール・ルイス | アメリカ合衆国 | 東京 | 1991-08-25 00:00:00 |
27 | 1992 | 9.93 | -0.6 | マイク・マーシュ | アメリカ合衆国 | ウォルナット | 1992-04-18 00:00:00 |
28 | 1993 | 9.87 | +0.3 | リンフォード・クリスティ | イギリス | シュトゥットガルト | 1993-08-15 00:00:00 |
29 | 1994 | 9.85 | +1.2 | リロイ・バレル | アメリカ合衆国 | ローザンヌ | 1994-07-06 00:00:00 |
30 | 1995 | 9.91 | +1.3 | ドノバン・ベイリー | カナダ | モントリオール | 1995-07-15 00:00:00 |
31 | 1996 | 9.84 | +0.7 | ドノバン・ベイリー | カナダ | アトランタ | 1996-07-27 00:00:00 |
32 | 1997 | 9.86 | +0.2 | モーリス・グリーン | アメリカ合衆国 | アテネ | 1997-08-03 00:00:00 |
33 | 1998 | 9.86 | +1.8 | アト・ボルドン | トリニダード・トバゴ | ウォルナット | 1998-04-19 00:00:00 |
34 | 1999 | 9.79 | +0.1 | モーリス・グリーン | アメリカ合衆国 | アテネ | 1999-06-16 00:00:00 |
35 | 2000 | 9.86 | -0.2 | モーリス・グリーン | アメリカ合衆国 | ベルリン | 2000-09-01 00:00:00 |
36 | 2001 | 9.82 | -0.2 | モーリス・グリーン | アメリカ合衆国 | エドモントン | 2001-08-05 00:00:00 |
37 | 2002 | 9.89 | +0.9 | モーリス・グリーン | アメリカ合衆国 | ローマ | 2002-07-12 00:00:00 |
38 | 2003 | 9.93 | +1.8 | パトリック・ジョンソン | オーストラリア | 水戸 | 2003-05-05 00:00:00 |
39 | 2004 | 9.85 | +0.6 | ジャスティン・ガトリン | アメリカ合衆国 | アテネ | 2004-08-22 00:00:00 |
40 | 2005 | 9.77 | +1.6 | アサファ・パウエル | ジャマイカ | アテネ | 2005-06-14 00:00:00 |
41 | 2006 | 9.77 | +1.5 | アサファ・パウエル | ジャマイカ | ゲーツヘッド | 2006-06-11 00:00:00 |
42 | 2006 | 9.77 | +1.0 | アサファ・パウエル | ジャマイカ | チューリッヒ | 2006-08-18 00:00:00 |
43 | 2007 | 9.74 | +1.7 | アサファ・パウエル | ジャマイカ | リエーティ | 2007-09-09 00:00:00 |
44 | 2008 | 9.72 | +1.7 | ウサイン・ボルト | ジャマイカ | ニューヨーク | 2008-05-31 00:00:00 |
45 | 2008 | 9.69 | 0.0 | ウサイン・ボルト | ジャマイカ | 北京 | 2008-08-16 00:00:00 |
46 | 2009 | 9.58 | +0.9 | ウサイン・ボルト | ジャマイカ | ベルリン | 2009-08-16 00:00:00 |
47 | 2010 | 9.78 | -0.4 | タイソン・ゲイ | アメリカ合衆国 | ロンドン | 2010-08-13 00:00:00 |
48 | 2010 | 9.78 | +0.9 | ネスタ・カーター | ジャマイカ | リエーティ | 2010-08-29 00:00:00 |
49 | 2011 | 9.76 | +1.3 | ウサイン・ボルト | ジャマイカ | ブリュッセル | 2011-09-16 00:00:00 |
50 | 2012 | 9.63 | +1.5 | ウサイン・ボルト | ジャマイカ | ロンドン | 2012-08-05 00:00:00 |
51 | 2013 | 9.77 | -0.3 | ウサイン・ボルト | ジャマイカ | モスクワ | 2013-08-11 00:00:00 |
52 | 2014 | 9.77 | +0.6 | ジャスティン・ガトリン | アメリカ合衆国 | ブリュッセル | 2014-09-05 00:00:00 |
53 | 2015 | 9.74 | +0.9 | ジャスティン・ガトリン | アメリカ合衆国 | ドーハ | 2015-05-15 00:00:00 |
54 | 2016 | 9.8 | +1.6 | ジャスティン・ガトリン | アメリカ合衆国 | ユージーン | 2016-07-03 00:00:00 |
2. 100m走シーズン記録のグラフ化
グラフ化を試みます。といっても2行ですね。
1 2 3 4 5 6 7 |
%matplotlib inline import seaborn as sns import matplotlib.pyplot as plt plt.plot(df_hundread['日付'], df_hundread['記録']) plt.ylim([9.2,10.5]) |
以上でプロットできました。
むむむ、9.5秒に限りなく近いタイムがある。誰だ?ということで、下記実行。
1 |
df_hundread[df_hundread['記録'] == df_hundread['記録'].min()] |
やっぱりボルト。
年 | 記録 | 風速 | 名前 | 所属 | 場所 | 日付 | |
---|---|---|---|---|---|---|---|
46 | 2009 | 9.58 | +0.9 | ウサイン・ボルト | ジャマイカ | ベルリン | 2009-08-16 00:00:00 |
3. (おまけ)100m走シーズン記録の動画を検索&インライン表示
100mシーンをYouTubeで見たいと思ったんですが、いちいちYouTubeにいって検索するのがタルい。Jupyter Notebook上で検索も表示をしてくれるとありがたい。ということで、数行書きました。YouTubeのAPIKEYは必要になります。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
import requests, json from IPython.display import YouTubeVideo #run_indexにインデックスを入れる。例えば「46」の場合は、「ウサインボルトの9.58」動画でます。 run_index = 53 query = df_hundread['年'][run_index] + ' ' + df_hundread['名前'][run_index] key = 'YOUR API KEY' youtube_url = 'https://www.googleapis.com/youtube/v3/search?part=snippet&maxResults=1&q={}&key={}'.format(query,key) res = requests.get(youtube_url) json_text = json.loads(res.text) vid = json_text['items'][0]['id']['videoId'] title = json_text['items'][0]['snippet']['title'] print(title) YouTubeVideo(vid) |
できたぜ。うぇい。
ZoomやChatworkでファイル共有している方へ
リモートワークが一般的になってきた今「誰が」「どこで」「何を」ファイル共有しているのかしっかりと把握する必要があります。easyDBを利用すればセキュリティ上で安全なファイル共有をクラウド上で行えるだけでなく、ファイルのバージョン管理等も簡単にできます。
>>>リモートワーク時代の安全なファイル共有「easyDB」はこちら