From 0aac6e644687e6c73360c53db9bdd8804b70f2fd Mon Sep 17 00:00:00 2001 From: diequcar Date: Sun, 21 Jul 2019 23:28:34 -0500 Subject: [PATCH] Se realizan ambos proyectos, obteniendo 3 csv --- .../League of Legends API-checkpoint.ipynb | 1154 +++++++ ...e of Legends Web Scraping-checkpoint.ipynb | 2822 +++++++++++++++++ your-code/League of Legends API.ipynb | 1154 +++++++ .../League of Legends Web Scraping.ipynb | 2822 +++++++++++++++++ your-code/The Wardman's last 100 matches.csv | 101 + your-code/matches API.csv | 101 + your-code/queue final.csv | 48 + your-code/queue webscraping.csv | 77 + your-code/season final.csv | 15 + your-code/season webscraping.csv | 13 + 10 files changed, 8307 insertions(+) create mode 100644 your-code/.ipynb_checkpoints/League of Legends API-checkpoint.ipynb create mode 100644 your-code/.ipynb_checkpoints/League of Legends Web Scraping-checkpoint.ipynb create mode 100644 your-code/League of Legends API.ipynb create mode 100644 your-code/League of Legends Web Scraping.ipynb create mode 100644 your-code/The Wardman's last 100 matches.csv create mode 100644 your-code/matches API.csv create mode 100644 your-code/queue final.csv create mode 100644 your-code/queue webscraping.csv create mode 100644 your-code/season final.csv create mode 100644 your-code/season webscraping.csv diff --git a/your-code/.ipynb_checkpoints/League of Legends API-checkpoint.ipynb b/your-code/.ipynb_checkpoints/League of Legends API-checkpoint.ipynb new file mode 100644 index 0000000..43945c8 --- /dev/null +++ b/your-code/.ipynb_checkpoints/League of Legends API-checkpoint.ipynb @@ -0,0 +1,1154 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![LoL](https://i.blogs.es/19ba21/league-of-legends/1366_2000.jpg)\n", + "\n", + "Introducción:\n", + "\n", + "Al ser un jugador constante de League of Legends, pensé que sería interesante obtener los datos de las últimas partidas de cualquier jugador del mundo. Es por eso que decidí usar la API de Riot Games, la empresa encargada del desarrollo del juego.\n", + "\n", + "El problema:\n", + "\n", + "A lo largo de la obtención de datos me encontré con diferentes problemas como que la información del tipo de partida, el campeón o personaje usado y la temporada en la que se realizaba la partida estaban identificadas con su ID, lo cual no nos servía para el análisis, ya que no había forma de saber que representaba ese ID.\n", + "\n", + "Solución:\n", + "\n", + "Al encontrar este problema realicé dos cosas:\n", + "\n", + "1. Realicé un scraping de una página de riot para obtener como resultado dos tablas, la primera de ellas con el ID de la temporada y el nombre de dicha temporada, y la segunda con el ID del tipo de partida y su descripción.\n", + "\n", + "2. Investigando un poco encontré otra api llamada data dragon, con la cuál pude obtener algunos campeones y sus ID.\n", + "\n", + "Descripción:\n", + "\n", + "Fuente: https://api.riotgames.com/ | http://ddragon.leagueoflegends.com/cdn/6.24.1/data/en_US/champion.json\n", + "Tipo de fuente: API\n", + "Autor del estudio: Diego Quiroz\n", + "Lenguaje programación utilizado: Python\n", + "Librerías utilizadas: Requests, Json, Pandas, datetime.\n", + "\n", + "Objetivos del estudio:\n", + "\n", + "Obtener un csv con las últimas 100 partidas del jugador seleccionado.\n", + "\n", + "Áreas de oportunidad:\n", + "\n", + "1. Encontrar una base completa con los ID de cada campeón.\n", + "2. Realizar una selección de las mejores 10 partidas.\n", + "3. Relacionar dichas 10 partidas con otra conexión api, para ver el desarrollo de la partida." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import pandas as pd\n", + "from pandas.io.json import json_normalize\n", + "from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "regiones = {'BR':'BR1',\n", + "'EUNE':'EUN1',\n", + "'EUW':'EUW1',\n", + "'JP':'JP1',\n", + "'KR':'KR',\n", + "'LAN':'LA1',\n", + "'LAS':'LA2',\n", + "'NA':'NA1',\n", + "'OCE':'OC1',\n", + "'TR':'TR1',\n", + "'RU':'RU',\n", + "'PBE':'PBE1'\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "¿Qué summoner quieres buscar? The Wardman\n", + "¿Cuál es su región? eligé entre las siguientes opciones BR, EUNE, EUW, JP, KR, LAN, LAS, NA, OCE, TR, RU, PBE NA\n" + ] + } + ], + "source": [ + "summoner = input('¿Qué summoner quieres buscar? ')\n", + "input_region = input('¿Cuál es su región? eligé entre las siguientes opciones BR, EUNE, EUW, JP, KR, LAN, LAS, NA, OCE, TR, RU, PBE ')\n", + "region = regiones[input_region]\n", + "url = f'https://{region}.api.riotgames.com/lol/summoner/v4/summoners/by-name/{summoner}?api_key=RGAPI-55eeb8cb-cfac-4ba8-bb06-ef7690fad7bc'\n", + "LOL = requests.get (url)\n", + "LOL_json = LOL.json()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "summoner_Id = LOL_json['id']\n", + "accountId = LOL_json['accountId']\n", + "puuid = LOL_json['puuid']" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "url2 = f'https://{region}.api.riotgames.com//lol/match/v4/matchlists/by-account/{accountId}?api_key=RGAPI-55eeb8cb-cfac-4ba8-bb06-ef7690fad7bc'\n", + "matches = requests.get (url2)\n", + "matches_json = matches.json()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "matches_df = pd.DataFrame(matches_json['matches'])\n", + "matches_df.to_csv('matches API.csv', index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "churl = 'http://ddragon.leagueoflegends.com/cdn/6.24.1/data/en_US/champion.json'\n", + "champions =requests.get(churl)\n", + "champions_json = champions.json()\n", + "champions_info = champions_json['data']" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "champions_df = pd.DataFrame(champions_info)\n", + "champions_df = champions_df.transpose()\n", + "champions_dict = dict(zip(dict(champions_df['key']).values(),dict(champions_df['key']).keys()))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "matches_df['Summoner'] = summoner\n", + "matches_df['role'] = matches_df['role'].str.split('_', expand = True)\n", + "matches_df['role'] = matches_df['role']\n", + "matches_df['Fecha y Hora'] = pd.to_datetime(matches_df['timestamp'],unit='ms')\n", + "matches_df['Champion Name'] = [champions_dict[str(a)] for a in list(matches_df['champion'])]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "season = pd.read_csv('season final.csv')\n", + "queue = pd.read_csv('queue final.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "matches_df= pd.merge(matches_df,queue, on='queue')\n", + "matches_df= pd.merge(matches_df,season, on='season')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "matches_df.drop(['champion','gameId','queue','season','timestamp'], axis = 1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "cols_name = ['Lane','Region','Solo/Duo','Summoner','Fecha y Hora','Champion','Map','Type','Season']\n", + "matches_df = matches_df.rename(columns = dict(zip(matches_df.columns,cols_name)))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "cols_order = ['Summoner','Region','Fecha y Hora','Solo/Duo','Type','Map','Lane','Champion','Season']\n", + "matches_df = matches_df[cols_order]\n", + "matches_df.to_csv(f\"{summoner}'s last 100 matches.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SummonerRegionFecha y HoraSolo/DuoTypeMapLaneChampionSeason
0The WardmanNA12019-07-18 18:47:57.269DUO5v5 ARAM gamesHowling AbyssNONEGravesSEASON 2019
1The WardmanNA12019-07-02 00:59:14.090DUO5v5 Ranked Solo gamesSummoner's RiftTOPMordekaiserSEASON 2019
2The WardmanNA12019-06-27 03:23:27.175DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMThreshSEASON 2019
3The WardmanNA12019-06-26 06:59:58.005DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMTwitchSEASON 2019
4The WardmanNA12019-06-26 06:13:37.753SOLO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
5The WardmanNA12019-06-26 05:40:55.337DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMJinxSEASON 2019
6The WardmanNA12019-06-26 05:02:09.996DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMJinxSEASON 2019
7The WardmanNA12019-06-26 02:44:46.587DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMLuxSEASON 2019
8The WardmanNA12019-06-26 01:56:25.799DUO5v5 Ranked Solo gamesSummoner's RiftMIDMorganaSEASON 2019
9The WardmanNA12019-06-26 01:20:22.169DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMNautilusSEASON 2019
10The WardmanNA12019-06-25 06:30:23.719DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
11The WardmanNA12019-06-25 05:51:42.389DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
12The WardmanNA12019-06-25 05:06:40.593DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
13The WardmanNA12019-06-25 04:28:56.002DUO5v5 Ranked Solo gamesSummoner's RiftMIDSivirSEASON 2019
14The WardmanNA12019-06-25 03:46:41.352DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
15The WardmanNA12019-06-25 03:00:40.616DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
16The WardmanNA12019-06-25 02:25:20.426SOLO5v5 Ranked Solo gamesSummoner's RiftTOPJaxSEASON 2019
17The WardmanNA12019-06-25 01:45:10.502SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
18The WardmanNA12019-06-25 01:08:02.540SOLO5v5 Ranked Solo gamesSummoner's RiftTOPNasusSEASON 2019
19The WardmanNA12019-06-22 18:51:55.717SOLO5v5 Ranked Solo gamesSummoner's RiftTOPMordekaiserSEASON 2019
20The WardmanNA12019-06-22 18:11:13.746SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
21The WardmanNA12019-06-22 17:33:36.001SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
22The WardmanNA12019-06-22 09:22:40.004SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
23The WardmanNA12019-06-22 08:56:55.090SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
24The WardmanNA12019-06-22 00:05:08.735DUO5v5 Ranked Solo gamesSummoner's RiftMIDGarenSEASON 2019
25The WardmanNA12019-06-21 23:27:34.215SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
26The WardmanNA12019-06-21 04:53:10.636DUO5v5 Ranked Solo gamesSummoner's RiftMIDGarenSEASON 2019
27The WardmanNA12019-06-21 04:07:30.695SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
28The WardmanNA12019-06-21 03:21:22.361SOLO5v5 Ranked Solo gamesSummoner's RiftMIDGalioSEASON 2019
29The WardmanNA12019-06-21 02:29:44.324NONE5v5 Ranked Solo gamesSummoner's RiftJUNGLESejuaniSEASON 2019
..............................
70The WardmanNA12019-06-16 05:24:57.217SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
71The WardmanNA12019-06-16 04:38:50.701SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
72The WardmanNA12019-06-16 03:02:05.986SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
73The WardmanNA12019-06-16 02:19:37.109SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
74The WardmanNA12019-06-16 01:35:24.900SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
75The WardmanNA12019-06-16 01:06:40.839SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
76The WardmanNA12019-06-16 00:25:31.795SOLO5v5 Ranked Solo gamesSummoner's RiftMIDMorganaSEASON 2019
77The WardmanNA12019-06-15 23:47:15.097DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
78The WardmanNA12019-06-15 23:13:50.520DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
79The WardmanNA12019-06-15 22:32:54.820DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
80The WardmanNA12019-06-15 22:04:34.946SOLO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
81The WardmanNA12019-06-15 21:17:59.216DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
82The WardmanNA12019-06-15 20:21:10.572DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMCaitlynSEASON 2019
83The WardmanNA12019-06-14 08:03:23.656DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
84The WardmanNA12019-06-14 07:30:37.144DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMAsheSEASON 2019
85The WardmanNA12019-06-14 06:51:54.892DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
86The WardmanNA12019-06-14 06:21:16.769DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMLuxSEASON 2019
87The WardmanNA12019-06-14 06:10:57.276DUO5v5 Ranked Solo gamesSummoner's RiftNONELuxSEASON 2019
88The WardmanNA12019-06-14 05:27:17.040DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMKarmaSEASON 2019
89The WardmanNA12019-06-14 04:54:42.439DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMKarmaSEASON 2019
90The WardmanNA12019-06-14 04:28:45.608DUO5v5 Ranked Solo gamesSummoner's RiftNONENautilusSEASON 2019
91The WardmanNA12019-06-14 03:48:25.673DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMBlitzcrankSEASON 2019
92The WardmanNA12019-06-14 03:06:20.097DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
93The WardmanNA12019-06-14 02:43:38.740DUO5v5 Ranked Solo gamesSummoner's RiftNONESivirSEASON 2019
94The WardmanNA12019-06-13 23:48:30.178DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
95The WardmanNA12019-06-13 23:39:33.572DUO5v5 Ranked Solo gamesSummoner's RiftNONESivirSEASON 2019
96The WardmanNA12019-06-13 23:09:21.187DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMCaitlynSEASON 2019
97The WardmanNA12019-06-27 04:35:53.317DUO5v5 Draft Pick gamesSummoner's RiftBOTTOMThreshSEASON 2019
98The WardmanNA12019-06-27 04:03:19.041DUO5v5 Draft Pick gamesSummoner's RiftBOTTOMThreshSEASON 2019
99The WardmanNA12019-06-21 00:48:21.000DUO5v5 Ranked Flex gamesSummoner's RiftBOTTOMSivirSEASON 2019
\n", + "

100 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " Summoner Region Fecha y Hora Solo/Duo \\\n", + "0 The Wardman NA1 2019-07-18 18:47:57.269 DUO \n", + "1 The Wardman NA1 2019-07-02 00:59:14.090 DUO \n", + "2 The Wardman NA1 2019-06-27 03:23:27.175 DUO \n", + "3 The Wardman NA1 2019-06-26 06:59:58.005 DUO \n", + "4 The Wardman NA1 2019-06-26 06:13:37.753 SOLO \n", + "5 The Wardman NA1 2019-06-26 05:40:55.337 DUO \n", + "6 The Wardman NA1 2019-06-26 05:02:09.996 DUO \n", + "7 The Wardman NA1 2019-06-26 02:44:46.587 DUO \n", + "8 The Wardman NA1 2019-06-26 01:56:25.799 DUO \n", + "9 The Wardman NA1 2019-06-26 01:20:22.169 DUO \n", + "10 The Wardman NA1 2019-06-25 06:30:23.719 DUO \n", + "11 The Wardman NA1 2019-06-25 05:51:42.389 DUO \n", + "12 The Wardman NA1 2019-06-25 05:06:40.593 DUO \n", + "13 The Wardman NA1 2019-06-25 04:28:56.002 DUO \n", + "14 The Wardman NA1 2019-06-25 03:46:41.352 DUO \n", + "15 The Wardman NA1 2019-06-25 03:00:40.616 DUO \n", + "16 The Wardman NA1 2019-06-25 02:25:20.426 SOLO \n", + "17 The Wardman NA1 2019-06-25 01:45:10.502 SOLO \n", + "18 The Wardman NA1 2019-06-25 01:08:02.540 SOLO \n", + "19 The Wardman NA1 2019-06-22 18:51:55.717 SOLO \n", + "20 The Wardman NA1 2019-06-22 18:11:13.746 SOLO \n", + "21 The Wardman NA1 2019-06-22 17:33:36.001 SOLO \n", + "22 The Wardman NA1 2019-06-22 09:22:40.004 SOLO \n", + "23 The Wardman NA1 2019-06-22 08:56:55.090 SOLO \n", + "24 The Wardman NA1 2019-06-22 00:05:08.735 DUO \n", + "25 The Wardman NA1 2019-06-21 23:27:34.215 SOLO \n", + "26 The Wardman NA1 2019-06-21 04:53:10.636 DUO \n", + "27 The Wardman NA1 2019-06-21 04:07:30.695 SOLO \n", + "28 The Wardman NA1 2019-06-21 03:21:22.361 SOLO \n", + "29 The Wardman NA1 2019-06-21 02:29:44.324 NONE \n", + ".. ... ... ... ... \n", + "70 The Wardman NA1 2019-06-16 05:24:57.217 SOLO \n", + "71 The Wardman NA1 2019-06-16 04:38:50.701 SOLO \n", + "72 The Wardman NA1 2019-06-16 03:02:05.986 SOLO \n", + "73 The Wardman NA1 2019-06-16 02:19:37.109 SOLO \n", + "74 The Wardman NA1 2019-06-16 01:35:24.900 SOLO \n", + "75 The Wardman NA1 2019-06-16 01:06:40.839 SOLO \n", + "76 The Wardman NA1 2019-06-16 00:25:31.795 SOLO \n", + "77 The Wardman NA1 2019-06-15 23:47:15.097 DUO \n", + "78 The Wardman NA1 2019-06-15 23:13:50.520 DUO \n", + "79 The Wardman NA1 2019-06-15 22:32:54.820 DUO \n", + "80 The Wardman NA1 2019-06-15 22:04:34.946 SOLO \n", + "81 The Wardman NA1 2019-06-15 21:17:59.216 DUO \n", + "82 The Wardman NA1 2019-06-15 20:21:10.572 DUO \n", + "83 The Wardman NA1 2019-06-14 08:03:23.656 DUO \n", + "84 The Wardman NA1 2019-06-14 07:30:37.144 DUO \n", + "85 The Wardman NA1 2019-06-14 06:51:54.892 DUO \n", + "86 The Wardman NA1 2019-06-14 06:21:16.769 DUO \n", + "87 The Wardman NA1 2019-06-14 06:10:57.276 DUO \n", + "88 The Wardman NA1 2019-06-14 05:27:17.040 DUO \n", + "89 The Wardman NA1 2019-06-14 04:54:42.439 DUO \n", + "90 The Wardman NA1 2019-06-14 04:28:45.608 DUO \n", + "91 The Wardman NA1 2019-06-14 03:48:25.673 DUO \n", + "92 The Wardman NA1 2019-06-14 03:06:20.097 DUO \n", + "93 The Wardman NA1 2019-06-14 02:43:38.740 DUO \n", + "94 The Wardman NA1 2019-06-13 23:48:30.178 DUO \n", + "95 The Wardman NA1 2019-06-13 23:39:33.572 DUO \n", + "96 The Wardman NA1 2019-06-13 23:09:21.187 DUO \n", + "97 The Wardman NA1 2019-06-27 04:35:53.317 DUO \n", + "98 The Wardman NA1 2019-06-27 04:03:19.041 DUO \n", + "99 The Wardman NA1 2019-06-21 00:48:21.000 DUO \n", + "\n", + " Type Map Lane Champion Season \n", + "0 5v5 ARAM games Howling Abyss NONE Graves SEASON 2019 \n", + "1 5v5 Ranked Solo games Summoner's Rift TOP Mordekaiser SEASON 2019 \n", + "2 5v5 Ranked Solo games Summoner's Rift BOTTOM Thresh SEASON 2019 \n", + "3 5v5 Ranked Solo games Summoner's Rift BOTTOM Twitch SEASON 2019 \n", + "4 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "5 5v5 Ranked Solo games Summoner's Rift BOTTOM Jinx SEASON 2019 \n", + "6 5v5 Ranked Solo games Summoner's Rift BOTTOM Jinx SEASON 2019 \n", + "7 5v5 Ranked Solo games Summoner's Rift BOTTOM Lux SEASON 2019 \n", + "8 5v5 Ranked Solo games Summoner's Rift MID Morgana SEASON 2019 \n", + "9 5v5 Ranked Solo games Summoner's Rift BOTTOM Nautilus SEASON 2019 \n", + "10 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "11 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "12 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "13 5v5 Ranked Solo games Summoner's Rift MID Sivir SEASON 2019 \n", + "14 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "15 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "16 5v5 Ranked Solo games Summoner's Rift TOP Jax SEASON 2019 \n", + "17 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "18 5v5 Ranked Solo games Summoner's Rift TOP Nasus SEASON 2019 \n", + "19 5v5 Ranked Solo games Summoner's Rift TOP Mordekaiser SEASON 2019 \n", + "20 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "21 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "22 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "23 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "24 5v5 Ranked Solo games Summoner's Rift MID Garen SEASON 2019 \n", + "25 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "26 5v5 Ranked Solo games Summoner's Rift MID Garen SEASON 2019 \n", + "27 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "28 5v5 Ranked Solo games Summoner's Rift MID Galio SEASON 2019 \n", + "29 5v5 Ranked Solo games Summoner's Rift JUNGLE Sejuani SEASON 2019 \n", + ".. ... ... ... ... ... \n", + "70 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "71 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "72 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "73 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "74 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "75 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "76 5v5 Ranked Solo games Summoner's Rift MID Morgana SEASON 2019 \n", + "77 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "78 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "79 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "80 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "81 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "82 5v5 Ranked Solo games Summoner's Rift BOTTOM Caitlyn SEASON 2019 \n", + "83 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "84 5v5 Ranked Solo games Summoner's Rift BOTTOM Ashe SEASON 2019 \n", + "85 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "86 5v5 Ranked Solo games Summoner's Rift BOTTOM Lux SEASON 2019 \n", + "87 5v5 Ranked Solo games Summoner's Rift NONE Lux SEASON 2019 \n", + "88 5v5 Ranked Solo games Summoner's Rift BOTTOM Karma SEASON 2019 \n", + "89 5v5 Ranked Solo games Summoner's Rift BOTTOM Karma SEASON 2019 \n", + "90 5v5 Ranked Solo games Summoner's Rift NONE Nautilus SEASON 2019 \n", + "91 5v5 Ranked Solo games Summoner's Rift BOTTOM Blitzcrank SEASON 2019 \n", + "92 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "93 5v5 Ranked Solo games Summoner's Rift NONE Sivir SEASON 2019 \n", + "94 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "95 5v5 Ranked Solo games Summoner's Rift NONE Sivir SEASON 2019 \n", + "96 5v5 Ranked Solo games Summoner's Rift BOTTOM Caitlyn SEASON 2019 \n", + "97 5v5 Draft Pick games Summoner's Rift BOTTOM Thresh SEASON 2019 \n", + "98 5v5 Draft Pick games Summoner's Rift BOTTOM Thresh SEASON 2019 \n", + "99 5v5 Ranked Flex games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "\n", + "[100 rows x 9 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "matches_df" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/your-code/.ipynb_checkpoints/League of Legends Web Scraping-checkpoint.ipynb b/your-code/.ipynb_checkpoints/League of Legends Web Scraping-checkpoint.ipynb new file mode 100644 index 0000000..80c5d71 --- /dev/null +++ b/your-code/.ipynb_checkpoints/League of Legends Web Scraping-checkpoint.ipynb @@ -0,0 +1,2822 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![LoL](https://i.blogs.es/19ba21/league-of-legends/1366_2000.jpg)\n", + "\n", + "Introducción:\n", + "\n", + "El siguiente scraping se realiza de la página de developer de Riot Games, ya que al realizar el proyecto de API encontré que hacía falta información que no brindaba la API, sin embargo había una sección de la página en la que venían dos tablas con la información faltante.\n", + "\n", + "Objetivo:\n", + "\n", + "Relacionar los dos proyectos, para obtener una base clara sobre las últimas 100 partidas del jugador seleccionado.\n", + "\n", + "Resultado:\n", + "\n", + "Se obtuvieron mediando web scraping dos dataframes con los datos faltantes en el proyecto de API." + ] + }, + { + "cell_type": "code", + "execution_count": 257, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "from bs4 import BeautifulSoup\n", + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 239, + "metadata": {}, + "outputs": [], + "source": [ + "url = 'https://developer.riotgames.com/game-constants.html'\n", + "LOL = requests.get(url).text" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "\n", + " \n", + " Riot Developer Portal\n", + " \n", + "\n", + " \n", + " \t\n", + " \t\n", + " \n", + " \t\n", + " \t\n", + " \t\n", + " \t\n", + " \n", + "\n", + " \t\n", + "\n", + "\n", + " \t\n", + " \n", + "\n", + " \t\n", + " \t\n", + "\n", + " \t\n", + " \t\n", + "\n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \t\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \t\n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + "\n", + " \n", + " \n", + "
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\t
\n", + "\n", + "\t\t\n", + "
\n", + "\t
\n", + "\t\tLanguage\n", + " \t
\n", + "\n", + " \t
\n", + " \t
\n", + " \t
\n", + "\n", + "\t \t\n", + "\t\t \t\n", + "\t\t\t\t\t \n", + "\t\t\t\t\t\n", + "\t\t\t\t\n", + "\n", + " \t\t\t
\n", + " \t\t
\n", + " \t
\n", + "
\n", + "\n", + "\n", + "\t\t
\n", + " \n", + "

Game Constants

\n", + "\n", + "

Seasons

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDName
0PRESEASON 3
1SEASON 3
2PRESEASON 2014
3SEASON 2014
4PRESEASON 2015
5SEASON 2015
6PRESEASON 2016
7SEASON 2016
8PRESEASON 2017
9SEASON 2017
10PRESEASON 2018
11SEASON 2018
\n", + "\n", + "\n", + "\n", + "

Matchmaking Queues

\n", + "
\n", + "

These constants populate the queue, queueId, and gameQueueConfigId fields.

\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdMapDescriptionNotes
0Custom games
2Summoner's Rift5v5 Blind Pick gamesDeprecated in patch 7.19 in favor of queueId 430
4Summoner's Rift5v5 Ranked Solo gamesDeprecated in favor of queueId 420
6Summoner's Rift5v5 Ranked Premade gamesGame mode deprecated
7Summoner's RiftCo-op vs AI gamesDeprecated in favor of queueId 32 and 33
8Twisted Treeline3v3 Normal gamesDeprecated in patch 7.19 in favor of queueId 460
9Twisted Treeline3v3 Ranked Flex gamesDeprecated in patch 7.19 in favor of queueId 470
14Summoner's Rift5v5 Draft Pick gamesDeprecated in favor of queueId 400
16Crystal Scar5v5 Dominion Blind Pick gamesGame mode deprecated
17Crystal Scar5v5 Dominion Draft Pick gamesGame mode deprecated
25Crystal ScarDominion Co-op vs AI gamesGame mode deprecated
31Summoner's RiftCo-op vs AI Intro Bot gamesDeprecated in patch 7.19 in favor of queueId 830
32Summoner's RiftCo-op vs AI Beginner Bot gamesDeprecated in patch 7.19 in favor of queueId 840
33Summoner's RiftCo-op vs AI Intermediate Bot gamesDeprecated in patch 7.19 in favor of queueId 850
41Twisted Treeline3v3 Ranked Team gamesGame mode deprecated
42Summoner's Rift5v5 Ranked Team gamesGame mode deprecated
52Twisted TreelineCo-op vs AI gamesDeprecated in patch 7.19 in favor of queueId 800
61Summoner's Rift5v5 Team Builder gamesGame mode deprecated
65Howling Abyss5v5 ARAM gamesDeprecated in patch 7.19 in favor of queueId 450
67Howling AbyssARAM Co-op vs AI gamesGame mode deprecated
70Summoner's RiftOne for All gamesDeprecated in patch 8.6 in favor of queueId 1020
72Howling Abyss1v1 Snowdown Showdown games
73Howling Abyss2v2 Snowdown Showdown games
75Summoner's Rift6v6 Hexakill games
76Summoner's RiftUltra Rapid Fire games
78Howling AbyssOne For All: Mirror Mode games
83Summoner's RiftCo-op vs AI Ultra Rapid Fire games
91Summoner's RiftDoom Bots Rank 1 gamesDeprecated in patch 7.19 in favor of queueId 950
92Summoner's RiftDoom Bots Rank 2 gamesDeprecated in patch 7.19 in favor of queueId 950
93Summoner's RiftDoom Bots Rank 5 gamesDeprecated in patch 7.19 in favor of queueId 950
96Crystal ScarAscension gamesDeprecated in patch 7.19 in favor of queueId 910
98Twisted Treeline6v6 Hexakill games
100Butcher's Bridge5v5 ARAM games
300Howling AbyssLegend of the Poro King gamesDeprecated in patch 7.19 in favor of queueId 920
310Summoner's RiftNemesis games
313Summoner's RiftBlack Market Brawlers games
315Summoner's RiftNexus Siege gamesDeprecated in patch 7.19 in favor of queueId 940
317Crystal ScarDefinitely Not Dominion games
318Summoner's RiftARURF gamesDeprecated in patch 7.19 in favor of queueId 900
325Summoner's RiftAll Random games
400Summoner's Rift5v5 Draft Pick games
410Summoner's Rift5v5 Ranked Dynamic gamesGame mode deprecated in patch 6.22
420Summoner's Rift5v5 Ranked Solo games
430Summoner's Rift5v5 Blind Pick games
440Summoner's Rift5v5 Ranked Flex games
450Howling Abyss5v5 ARAM games
460Twisted Treeline3v3 Blind Pick games
470Twisted Treeline3v3 Ranked Flex games
600Summoner's RiftBlood Hunt Assassin games
610Cosmic RuinsDark Star: Singularity games
700Summoner's RiftClash games
800Twisted TreelineCo-op vs. AI Intermediate Bot games
810Twisted TreelineCo-op vs. AI Intro Bot games
820Twisted TreelineCo-op vs. AI Beginner Bot games
830Summoner's RiftCo-op vs. AI Intro Bot games
840Summoner's RiftCo-op vs. AI Beginner Bot games
850Summoner's RiftCo-op vs. AI Intermediate Bot games
900Summoner's RiftARURF games
910Crystal ScarAscension games
920Howling AbyssLegend of the Poro King games
940Summoner's RiftNexus Siege games
950Summoner's RiftDoom Bots Voting games
960Summoner's RiftDoom Bots Standard games
980Valoran City ParkStar Guardian Invasion: Normal games
990Valoran City ParkStar Guardian Invasion: Onslaught games
1000OverchargePROJECT: Hunters games
1010Summoner's RiftSnow ARURF games
1020Summoner's RiftOne for All games
1030Crash SiteOdyssey Extraction: Intro games
1040Crash SiteOdyssey Extraction: Cadet games
1050Crash SiteOdyssey Extraction: Crewmember games
1060Crash SiteOdyssey Extraction: Captain games
1070Crash SiteOdyssey Extraction: Onslaught games
1090ConvergenceTeamfight Tactics games
1100ConvergenceRanked Teamfight Tactics games
1200Nexus BlitzNexus Blitz gamesDeprecated in patch 9.2
\n", + "\n", + "\n", + "

Map Names

\n", + "

These constants populate the mapId field.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mapIdNameNotes
1Summoner's RiftOriginal Summer variant
2Summoner's RiftOriginal Autumn variant
3The Proving GroundsTutorial map
4Twisted TreelineOriginal version
8The Crystal ScarDominion map
10Twisted TreelineCurrent version
11Summoner's RiftCurrent version
12Howling AbyssARAM map
14Butcher's BridgeARAM map
16Cosmic RuinsDark Star: Singularity map
18Valoran City ParkStar Guardian Invasion map
19Substructure 43PROJECT: Hunters map
20Crash SiteOdyssey: Extraction map
21Nexus BlitzNexus Blitz map
\n", + "\n", + "

Game Modes

\n", + "

These constants populate the gameMode field.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
gameModeDescription
CLASSICClassic Summoner's Rift and Twisted Treeline games
ODINDominion/Crystal Scar games
ARAMARAM games
TUTORIALTutorial games
URFURF games
DOOMBOTSTEEMODoom Bot games
ONEFORALLOne for All games
ASCENSIONAscension games
FIRSTBLOODSnowdown Showdown games
KINGPOROLegend of the Poro King games
SIEGENexus Siege games
ASSASSINATEBlood Hunt Assassin games
ARSRAll Random Summoner's Rift games
DARKSTARDark Star: Singularity games
STARGUARDIANStar Guardian Invasion games
PROJECTPROJECT: Hunters games
GAMEMODEXNexus Blitz games
ODYSSEYOdyssey: Extraction games
\n", + "\n", + "

Game Types

\n", + "

These constants populate the gameType field.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
gameType / matchTypeDescription
CUSTOM_GAMECustom games
TUTORIAL_GAMETutorial games
MATCHED_GAMEAll other games
\n", + "\n", + "

Rune Slot IDs

\n", + "

These constants populate the runeSlotId field. A blank version of the rune page background can be found here.

\n", + "

\n", + "
\n", + "\n", + "
\n", + "\n", + "

Match Timeline Data Position Values

\n", + "

Match timeline data contains a position field that contains x and y values. Translating the position, in the timeline data, onto the mini-map can be tricky so keep in mind the following:

\n", + "
    \n", + "
  • Due to various factors (e.g., game map vs. mini-map are different shapes, there is more space outside of the game map, various features are misrepresented in scale or position on the mini-map, etc.), the bounds for the game map are not the same as the bounds for the mini-map.
  • \n", + "
  • The mini-map from the match history website is also not the same as the in-game mini-map so we've provided examples to help translate timeline data onto both mini-maps. Although, due to the reasons given in the first bullet point, as well as the fact that the translation code doesn't use the same logic as the client UI to \"draw\" the mini-map, it wouldn't be 100% accurate for either.
  • \n", + "
  • The bounds that are documented on this page represent the bounds of the actual game map. Because of the issues stated in the previous bullet points, the bounds in the sample code have been adjusted so that the timeline data \"fits\" better when translated onto the mini-map.
  • \n", + "
\n", + "
\n", + "\n", + "

Summoner's Rift
\n", + " Summoner's Rift was updated and replaced with a new version on Nov 20th, 2014. For this reason, there are two bounds used to translate timeline positions; one on the original Summoner's Rift and one on the newly updated Summoner's Rift. Any games played before Nov 12th, 2014 should all be on the original Summoner's Rift and any games after Nov 20th, 2014 should be all on the new Summoner's Rift. Games played between those dates could be played on either map and you should verify which map's bounds should be used. You can find the mapID of the corresponding maps below under the Map Names section that lists all maps along with their corresponding mapID.

\n", + "\n", + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Original Summoner's Rift, Summer Variant
\n", + " Original Summoner's Rift, Winter Variant

\n", + "
    \n", + "
  • min: { x: -269, y: -83}
  • \n", + "
  • max: { x: 14276, y: 14522}
  • \n", + "
\n", + "
before November 12, 2014
\n", + "
Adjusted bounds for the Match History website's mini-map (as seen on the left)
\n", + "
    \n", + "
  • min: {x: -1000, y: -570}
  • \n", + "
  • max: {x: 14800, y: 14800}
  • \n", + "
\n", + " Sample Code\n", + "
Current Summoner's Rift
\n", + "
    \n", + "
  • min: { x: 0, y: 0}
  • \n", + "
  • max: { x: 14820, y: 14881}
  • \n", + "
\n", + "
after November 20, 2014
\n", + "
Adjusted bounds for the in-game mini-map (as seen on the left)
\n", + "
    \n", + "
  • min: {x: -120, y: -120}
  • \n", + "
  • max: {x: 14870, y: 14980}
  • \n", + "
\n", + " Sample Code\n", + "
Adjusted bounds for the Match History website's mini-map (as seen on the left)
\n", + "
    \n", + "
  • min: {x: -570, y: -420}
  • \n", + "
  • max: {x: 15220, y: 14980}
  • \n", + "
\n", + " Sample Code\n", + "
\n", + "\n", + "

Proving Grounds
\n", + "Proving Grounds was the map used for the original tutorial mode.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: -500, y: -500}
  • \n", + "
  • max: {x: 15000, y: 15000}
  • \n", + "
\n", + "
\n", + "\n", + "

Crystal Scar
\n", + "Crystal Scar is the map for game mode Dominion.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: 0, y: 0}
  • \n", + "
  • max: {x: 13987, y: 13987}
  • \n", + "
\n", + "
\n", + "\n", + "

Twisted Treeline
\n", + "Twisted Treeline is the map for 3v3 game modes.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: 0, y: 0}
  • \n", + "
  • max: {x: 15398, y: 15398}
  • \n", + "
\n", + "
\n", + "\n", + "

Howling Abyss
\n", + "Howling Abyss is the map for the game mode ARAM.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: -28, y: -19}
  • \n", + "
  • max: {x: 12849, y: 12858}
  • \n", + "
\n", + "
\n", + "\n", + "

Butcher's Bridge
\n", + "Butcher's Bridge was a re-skin of the Howling Abyss map for the game mode ARAM during the Bildgewater event.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: -28, y: -19}
  • \n", + "
  • max: {x: 12849, y: 12858}
  • \n", + "
\n", + "
\n", + "\n", + "

Cosmic Ruins
\n", + "Cosmic Ruins is the map for the game mode Dark Star: Singularity.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: { x: 18, y: 18}
  • \n", + "
  • max: { x: 6843, y: 6843}
  • \n", + "
\n", + "
Adjusted bounds
\n", + "
    \n", + "
  • min: {x: 20, y: 20}
  • \n", + "
  • max: {x: 6970, y: 6970}
  • \n", + "
\n", + " Sample Code\n", + "
\n", + "\n", + "

Valoran City Park
\n", + "Valoran City Park is the map for the Star Guardian game mode Invasion.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
\n", + "\n", + "

Substructure 43
\n", + "Substructure 43 is the map for the PROJECT: Hunters game mode Overcharge.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
\n", + "\n", + "

Nexus Blitz
\n", + "Nexus Blitz is the map for Nexus Blitz games.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
\n", + "\n", + "

Crash Site
\n", + "Crash Site is the map for Odyssey: Extraction games.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
\n", + "\t
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + " \n", + "\n", + " \n", + " \n", + "\n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "" + ] + }, + "execution_count": 240, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "LOLsoup = BeautifulSoup(LOL,'html5lib')\n", + "LOLsoup" + ] + }, + { + "cell_type": "code", + "execution_count": 277, + "metadata": {}, + "outputs": [], + "source": [ + "queue = LOLsoup.find_all(\"tr\")\n", + "queue_list = [q.text.replace(' ','').split('\\n') for q in queue][13:90]\n", + "q = [t for t in queue_list if t]\n", + "queue_df = pd.DataFrame(q, columns= q[0])\n", + "queue_df = queue_df.drop(0).drop('', axis =1)\n", + "queue_df.to_csv('queue webscraping.csv', index = False)\n", + "queue_df = queue_df[queue_df.Notes == '']\n", + "queue_df['Id'] = queue_df['Id'].astype(np.int64)\n", + "del queue_df['Notes']\n", + "queue_df = queue_df.rename(columns={'Id':'queue'})\n", + "queue_df.to_csv('queue final.csv', index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 271, + "metadata": {}, + "outputs": [], + "source": [ + "season = LOLsoup.find_all(\"tr\")\n", + "season_list = [q.text.replace(' ','').split('\\n') for q in queue][:13]\n", + "s = [t for t in season_list if t]\n", + "season_df = pd.DataFrame(s, columns= s[0]).drop(0).drop('',axis=1)\n", + "season_df.to_csv('season webscraping.csv', index = False)\n", + "season_df.dtypes\n", + "to_append = {'ID':[12,13],'Name':['PRESEASON 2019','SEASON 2019']}\n", + "df_to_append = pd.DataFrame(to_append)\n", + "season_df = pd.concat([season_df,df_to_append])\n", + "season_df['ID'] = season_df['ID'].astype(np.int64)\n", + "season_df = season_df.rename(columns= {'ID':'season'})\n", + "season_df.to_csv('season final.csv',index = False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/your-code/League of Legends API.ipynb b/your-code/League of Legends API.ipynb new file mode 100644 index 0000000..43945c8 --- /dev/null +++ b/your-code/League of Legends API.ipynb @@ -0,0 +1,1154 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![LoL](https://i.blogs.es/19ba21/league-of-legends/1366_2000.jpg)\n", + "\n", + "Introducción:\n", + "\n", + "Al ser un jugador constante de League of Legends, pensé que sería interesante obtener los datos de las últimas partidas de cualquier jugador del mundo. Es por eso que decidí usar la API de Riot Games, la empresa encargada del desarrollo del juego.\n", + "\n", + "El problema:\n", + "\n", + "A lo largo de la obtención de datos me encontré con diferentes problemas como que la información del tipo de partida, el campeón o personaje usado y la temporada en la que se realizaba la partida estaban identificadas con su ID, lo cual no nos servía para el análisis, ya que no había forma de saber que representaba ese ID.\n", + "\n", + "Solución:\n", + "\n", + "Al encontrar este problema realicé dos cosas:\n", + "\n", + "1. Realicé un scraping de una página de riot para obtener como resultado dos tablas, la primera de ellas con el ID de la temporada y el nombre de dicha temporada, y la segunda con el ID del tipo de partida y su descripción.\n", + "\n", + "2. Investigando un poco encontré otra api llamada data dragon, con la cuál pude obtener algunos campeones y sus ID.\n", + "\n", + "Descripción:\n", + "\n", + "Fuente: https://api.riotgames.com/ | http://ddragon.leagueoflegends.com/cdn/6.24.1/data/en_US/champion.json\n", + "Tipo de fuente: API\n", + "Autor del estudio: Diego Quiroz\n", + "Lenguaje programación utilizado: Python\n", + "Librerías utilizadas: Requests, Json, Pandas, datetime.\n", + "\n", + "Objetivos del estudio:\n", + "\n", + "Obtener un csv con las últimas 100 partidas del jugador seleccionado.\n", + "\n", + "Áreas de oportunidad:\n", + "\n", + "1. Encontrar una base completa con los ID de cada campeón.\n", + "2. Realizar una selección de las mejores 10 partidas.\n", + "3. Relacionar dichas 10 partidas con otra conexión api, para ver el desarrollo de la partida." + ] + }, + { + "cell_type": "code", + "execution_count": 1, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "import pandas as pd\n", + "from pandas.io.json import json_normalize\n", + "from datetime import datetime" + ] + }, + { + "cell_type": "code", + "execution_count": 2, + "metadata": {}, + "outputs": [], + "source": [ + "regiones = {'BR':'BR1',\n", + "'EUNE':'EUN1',\n", + "'EUW':'EUW1',\n", + "'JP':'JP1',\n", + "'KR':'KR',\n", + "'LAN':'LA1',\n", + "'LAS':'LA2',\n", + "'NA':'NA1',\n", + "'OCE':'OC1',\n", + "'TR':'TR1',\n", + "'RU':'RU',\n", + "'PBE':'PBE1'\n", + "}" + ] + }, + { + "cell_type": "code", + "execution_count": 3, + "metadata": {}, + "outputs": [ + { + "name": "stdout", + "output_type": "stream", + "text": [ + "¿Qué summoner quieres buscar? The Wardman\n", + "¿Cuál es su región? eligé entre las siguientes opciones BR, EUNE, EUW, JP, KR, LAN, LAS, NA, OCE, TR, RU, PBE NA\n" + ] + } + ], + "source": [ + "summoner = input('¿Qué summoner quieres buscar? ')\n", + "input_region = input('¿Cuál es su región? eligé entre las siguientes opciones BR, EUNE, EUW, JP, KR, LAN, LAS, NA, OCE, TR, RU, PBE ')\n", + "region = regiones[input_region]\n", + "url = f'https://{region}.api.riotgames.com/lol/summoner/v4/summoners/by-name/{summoner}?api_key=RGAPI-55eeb8cb-cfac-4ba8-bb06-ef7690fad7bc'\n", + "LOL = requests.get (url)\n", + "LOL_json = LOL.json()" + ] + }, + { + "cell_type": "code", + "execution_count": 4, + "metadata": {}, + "outputs": [], + "source": [ + "summoner_Id = LOL_json['id']\n", + "accountId = LOL_json['accountId']\n", + "puuid = LOL_json['puuid']" + ] + }, + { + "cell_type": "code", + "execution_count": 5, + "metadata": {}, + "outputs": [], + "source": [ + "url2 = f'https://{region}.api.riotgames.com//lol/match/v4/matchlists/by-account/{accountId}?api_key=RGAPI-55eeb8cb-cfac-4ba8-bb06-ef7690fad7bc'\n", + "matches = requests.get (url2)\n", + "matches_json = matches.json()\n" + ] + }, + { + "cell_type": "code", + "execution_count": 6, + "metadata": {}, + "outputs": [], + "source": [ + "matches_df = pd.DataFrame(matches_json['matches'])\n", + "matches_df.to_csv('matches API.csv', index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "metadata": {}, + "outputs": [], + "source": [ + "churl = 'http://ddragon.leagueoflegends.com/cdn/6.24.1/data/en_US/champion.json'\n", + "champions =requests.get(churl)\n", + "champions_json = champions.json()\n", + "champions_info = champions_json['data']" + ] + }, + { + "cell_type": "code", + "execution_count": 8, + "metadata": {}, + "outputs": [], + "source": [ + "champions_df = pd.DataFrame(champions_info)\n", + "champions_df = champions_df.transpose()\n", + "champions_dict = dict(zip(dict(champions_df['key']).values(),dict(champions_df['key']).keys()))" + ] + }, + { + "cell_type": "code", + "execution_count": 9, + "metadata": {}, + "outputs": [], + "source": [ + "matches_df['Summoner'] = summoner\n", + "matches_df['role'] = matches_df['role'].str.split('_', expand = True)\n", + "matches_df['role'] = matches_df['role']\n", + "matches_df['Fecha y Hora'] = pd.to_datetime(matches_df['timestamp'],unit='ms')\n", + "matches_df['Champion Name'] = [champions_dict[str(a)] for a in list(matches_df['champion'])]" + ] + }, + { + "cell_type": "code", + "execution_count": 10, + "metadata": {}, + "outputs": [], + "source": [ + "season = pd.read_csv('season final.csv')\n", + "queue = pd.read_csv('queue final.csv')" + ] + }, + { + "cell_type": "code", + "execution_count": 11, + "metadata": {}, + "outputs": [], + "source": [ + "matches_df= pd.merge(matches_df,queue, on='queue')\n", + "matches_df= pd.merge(matches_df,season, on='season')" + ] + }, + { + "cell_type": "code", + "execution_count": 12, + "metadata": {}, + "outputs": [], + "source": [ + "matches_df.drop(['champion','gameId','queue','season','timestamp'], axis = 1, inplace=True)" + ] + }, + { + "cell_type": "code", + "execution_count": 13, + "metadata": {}, + "outputs": [], + "source": [ + "cols_name = ['Lane','Region','Solo/Duo','Summoner','Fecha y Hora','Champion','Map','Type','Season']\n", + "matches_df = matches_df.rename(columns = dict(zip(matches_df.columns,cols_name)))" + ] + }, + { + "cell_type": "code", + "execution_count": 14, + "metadata": {}, + "outputs": [], + "source": [ + "cols_order = ['Summoner','Region','Fecha y Hora','Solo/Duo','Type','Map','Lane','Champion','Season']\n", + "matches_df = matches_df[cols_order]\n", + "matches_df.to_csv(f\"{summoner}'s last 100 matches.csv\", index=False)" + ] + }, + { + "cell_type": "code", + "execution_count": 15, + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
SummonerRegionFecha y HoraSolo/DuoTypeMapLaneChampionSeason
0The WardmanNA12019-07-18 18:47:57.269DUO5v5 ARAM gamesHowling AbyssNONEGravesSEASON 2019
1The WardmanNA12019-07-02 00:59:14.090DUO5v5 Ranked Solo gamesSummoner's RiftTOPMordekaiserSEASON 2019
2The WardmanNA12019-06-27 03:23:27.175DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMThreshSEASON 2019
3The WardmanNA12019-06-26 06:59:58.005DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMTwitchSEASON 2019
4The WardmanNA12019-06-26 06:13:37.753SOLO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
5The WardmanNA12019-06-26 05:40:55.337DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMJinxSEASON 2019
6The WardmanNA12019-06-26 05:02:09.996DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMJinxSEASON 2019
7The WardmanNA12019-06-26 02:44:46.587DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMLuxSEASON 2019
8The WardmanNA12019-06-26 01:56:25.799DUO5v5 Ranked Solo gamesSummoner's RiftMIDMorganaSEASON 2019
9The WardmanNA12019-06-26 01:20:22.169DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMNautilusSEASON 2019
10The WardmanNA12019-06-25 06:30:23.719DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
11The WardmanNA12019-06-25 05:51:42.389DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
12The WardmanNA12019-06-25 05:06:40.593DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
13The WardmanNA12019-06-25 04:28:56.002DUO5v5 Ranked Solo gamesSummoner's RiftMIDSivirSEASON 2019
14The WardmanNA12019-06-25 03:46:41.352DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
15The WardmanNA12019-06-25 03:00:40.616DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
16The WardmanNA12019-06-25 02:25:20.426SOLO5v5 Ranked Solo gamesSummoner's RiftTOPJaxSEASON 2019
17The WardmanNA12019-06-25 01:45:10.502SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
18The WardmanNA12019-06-25 01:08:02.540SOLO5v5 Ranked Solo gamesSummoner's RiftTOPNasusSEASON 2019
19The WardmanNA12019-06-22 18:51:55.717SOLO5v5 Ranked Solo gamesSummoner's RiftTOPMordekaiserSEASON 2019
20The WardmanNA12019-06-22 18:11:13.746SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
21The WardmanNA12019-06-22 17:33:36.001SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
22The WardmanNA12019-06-22 09:22:40.004SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
23The WardmanNA12019-06-22 08:56:55.090SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
24The WardmanNA12019-06-22 00:05:08.735DUO5v5 Ranked Solo gamesSummoner's RiftMIDGarenSEASON 2019
25The WardmanNA12019-06-21 23:27:34.215SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
26The WardmanNA12019-06-21 04:53:10.636DUO5v5 Ranked Solo gamesSummoner's RiftMIDGarenSEASON 2019
27The WardmanNA12019-06-21 04:07:30.695SOLO5v5 Ranked Solo gamesSummoner's RiftTOPGarenSEASON 2019
28The WardmanNA12019-06-21 03:21:22.361SOLO5v5 Ranked Solo gamesSummoner's RiftMIDGalioSEASON 2019
29The WardmanNA12019-06-21 02:29:44.324NONE5v5 Ranked Solo gamesSummoner's RiftJUNGLESejuaniSEASON 2019
..............................
70The WardmanNA12019-06-16 05:24:57.217SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
71The WardmanNA12019-06-16 04:38:50.701SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
72The WardmanNA12019-06-16 03:02:05.986SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
73The WardmanNA12019-06-16 02:19:37.109SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
74The WardmanNA12019-06-16 01:35:24.900SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
75The WardmanNA12019-06-16 01:06:40.839SOLO5v5 Ranked Solo gamesSummoner's RiftMIDAhriSEASON 2019
76The WardmanNA12019-06-16 00:25:31.795SOLO5v5 Ranked Solo gamesSummoner's RiftMIDMorganaSEASON 2019
77The WardmanNA12019-06-15 23:47:15.097DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
78The WardmanNA12019-06-15 23:13:50.520DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
79The WardmanNA12019-06-15 22:32:54.820DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
80The WardmanNA12019-06-15 22:04:34.946SOLO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
81The WardmanNA12019-06-15 21:17:59.216DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
82The WardmanNA12019-06-15 20:21:10.572DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMCaitlynSEASON 2019
83The WardmanNA12019-06-14 08:03:23.656DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
84The WardmanNA12019-06-14 07:30:37.144DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMAsheSEASON 2019
85The WardmanNA12019-06-14 06:51:54.892DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
86The WardmanNA12019-06-14 06:21:16.769DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMLuxSEASON 2019
87The WardmanNA12019-06-14 06:10:57.276DUO5v5 Ranked Solo gamesSummoner's RiftNONELuxSEASON 2019
88The WardmanNA12019-06-14 05:27:17.040DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMKarmaSEASON 2019
89The WardmanNA12019-06-14 04:54:42.439DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMKarmaSEASON 2019
90The WardmanNA12019-06-14 04:28:45.608DUO5v5 Ranked Solo gamesSummoner's RiftNONENautilusSEASON 2019
91The WardmanNA12019-06-14 03:48:25.673DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMBlitzcrankSEASON 2019
92The WardmanNA12019-06-14 03:06:20.097DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
93The WardmanNA12019-06-14 02:43:38.740DUO5v5 Ranked Solo gamesSummoner's RiftNONESivirSEASON 2019
94The WardmanNA12019-06-13 23:48:30.178DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMSivirSEASON 2019
95The WardmanNA12019-06-13 23:39:33.572DUO5v5 Ranked Solo gamesSummoner's RiftNONESivirSEASON 2019
96The WardmanNA12019-06-13 23:09:21.187DUO5v5 Ranked Solo gamesSummoner's RiftBOTTOMCaitlynSEASON 2019
97The WardmanNA12019-06-27 04:35:53.317DUO5v5 Draft Pick gamesSummoner's RiftBOTTOMThreshSEASON 2019
98The WardmanNA12019-06-27 04:03:19.041DUO5v5 Draft Pick gamesSummoner's RiftBOTTOMThreshSEASON 2019
99The WardmanNA12019-06-21 00:48:21.000DUO5v5 Ranked Flex gamesSummoner's RiftBOTTOMSivirSEASON 2019
\n", + "

100 rows × 9 columns

\n", + "
" + ], + "text/plain": [ + " Summoner Region Fecha y Hora Solo/Duo \\\n", + "0 The Wardman NA1 2019-07-18 18:47:57.269 DUO \n", + "1 The Wardman NA1 2019-07-02 00:59:14.090 DUO \n", + "2 The Wardman NA1 2019-06-27 03:23:27.175 DUO \n", + "3 The Wardman NA1 2019-06-26 06:59:58.005 DUO \n", + "4 The Wardman NA1 2019-06-26 06:13:37.753 SOLO \n", + "5 The Wardman NA1 2019-06-26 05:40:55.337 DUO \n", + "6 The Wardman NA1 2019-06-26 05:02:09.996 DUO \n", + "7 The Wardman NA1 2019-06-26 02:44:46.587 DUO \n", + "8 The Wardman NA1 2019-06-26 01:56:25.799 DUO \n", + "9 The Wardman NA1 2019-06-26 01:20:22.169 DUO \n", + "10 The Wardman NA1 2019-06-25 06:30:23.719 DUO \n", + "11 The Wardman NA1 2019-06-25 05:51:42.389 DUO \n", + "12 The Wardman NA1 2019-06-25 05:06:40.593 DUO \n", + "13 The Wardman NA1 2019-06-25 04:28:56.002 DUO \n", + "14 The Wardman NA1 2019-06-25 03:46:41.352 DUO \n", + "15 The Wardman NA1 2019-06-25 03:00:40.616 DUO \n", + "16 The Wardman NA1 2019-06-25 02:25:20.426 SOLO \n", + "17 The Wardman NA1 2019-06-25 01:45:10.502 SOLO \n", + "18 The Wardman NA1 2019-06-25 01:08:02.540 SOLO \n", + "19 The Wardman NA1 2019-06-22 18:51:55.717 SOLO \n", + "20 The Wardman NA1 2019-06-22 18:11:13.746 SOLO \n", + "21 The Wardman NA1 2019-06-22 17:33:36.001 SOLO \n", + "22 The Wardman NA1 2019-06-22 09:22:40.004 SOLO \n", + "23 The Wardman NA1 2019-06-22 08:56:55.090 SOLO \n", + "24 The Wardman NA1 2019-06-22 00:05:08.735 DUO \n", + "25 The Wardman NA1 2019-06-21 23:27:34.215 SOLO \n", + "26 The Wardman NA1 2019-06-21 04:53:10.636 DUO \n", + "27 The Wardman NA1 2019-06-21 04:07:30.695 SOLO \n", + "28 The Wardman NA1 2019-06-21 03:21:22.361 SOLO \n", + "29 The Wardman NA1 2019-06-21 02:29:44.324 NONE \n", + ".. ... ... ... ... \n", + "70 The Wardman NA1 2019-06-16 05:24:57.217 SOLO \n", + "71 The Wardman NA1 2019-06-16 04:38:50.701 SOLO \n", + "72 The Wardman NA1 2019-06-16 03:02:05.986 SOLO \n", + "73 The Wardman NA1 2019-06-16 02:19:37.109 SOLO \n", + "74 The Wardman NA1 2019-06-16 01:35:24.900 SOLO \n", + "75 The Wardman NA1 2019-06-16 01:06:40.839 SOLO \n", + "76 The Wardman NA1 2019-06-16 00:25:31.795 SOLO \n", + "77 The Wardman NA1 2019-06-15 23:47:15.097 DUO \n", + "78 The Wardman NA1 2019-06-15 23:13:50.520 DUO \n", + "79 The Wardman NA1 2019-06-15 22:32:54.820 DUO \n", + "80 The Wardman NA1 2019-06-15 22:04:34.946 SOLO \n", + "81 The Wardman NA1 2019-06-15 21:17:59.216 DUO \n", + "82 The Wardman NA1 2019-06-15 20:21:10.572 DUO \n", + "83 The Wardman NA1 2019-06-14 08:03:23.656 DUO \n", + "84 The Wardman NA1 2019-06-14 07:30:37.144 DUO \n", + "85 The Wardman NA1 2019-06-14 06:51:54.892 DUO \n", + "86 The Wardman NA1 2019-06-14 06:21:16.769 DUO \n", + "87 The Wardman NA1 2019-06-14 06:10:57.276 DUO \n", + "88 The Wardman NA1 2019-06-14 05:27:17.040 DUO \n", + "89 The Wardman NA1 2019-06-14 04:54:42.439 DUO \n", + "90 The Wardman NA1 2019-06-14 04:28:45.608 DUO \n", + "91 The Wardman NA1 2019-06-14 03:48:25.673 DUO \n", + "92 The Wardman NA1 2019-06-14 03:06:20.097 DUO \n", + "93 The Wardman NA1 2019-06-14 02:43:38.740 DUO \n", + "94 The Wardman NA1 2019-06-13 23:48:30.178 DUO \n", + "95 The Wardman NA1 2019-06-13 23:39:33.572 DUO \n", + "96 The Wardman NA1 2019-06-13 23:09:21.187 DUO \n", + "97 The Wardman NA1 2019-06-27 04:35:53.317 DUO \n", + "98 The Wardman NA1 2019-06-27 04:03:19.041 DUO \n", + "99 The Wardman NA1 2019-06-21 00:48:21.000 DUO \n", + "\n", + " Type Map Lane Champion Season \n", + "0 5v5 ARAM games Howling Abyss NONE Graves SEASON 2019 \n", + "1 5v5 Ranked Solo games Summoner's Rift TOP Mordekaiser SEASON 2019 \n", + "2 5v5 Ranked Solo games Summoner's Rift BOTTOM Thresh SEASON 2019 \n", + "3 5v5 Ranked Solo games Summoner's Rift BOTTOM Twitch SEASON 2019 \n", + "4 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "5 5v5 Ranked Solo games Summoner's Rift BOTTOM Jinx SEASON 2019 \n", + "6 5v5 Ranked Solo games Summoner's Rift BOTTOM Jinx SEASON 2019 \n", + "7 5v5 Ranked Solo games Summoner's Rift BOTTOM Lux SEASON 2019 \n", + "8 5v5 Ranked Solo games Summoner's Rift MID Morgana SEASON 2019 \n", + "9 5v5 Ranked Solo games Summoner's Rift BOTTOM Nautilus SEASON 2019 \n", + "10 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "11 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "12 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "13 5v5 Ranked Solo games Summoner's Rift MID Sivir SEASON 2019 \n", + "14 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "15 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "16 5v5 Ranked Solo games Summoner's Rift TOP Jax SEASON 2019 \n", + "17 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "18 5v5 Ranked Solo games Summoner's Rift TOP Nasus SEASON 2019 \n", + "19 5v5 Ranked Solo games Summoner's Rift TOP Mordekaiser SEASON 2019 \n", + "20 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "21 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "22 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "23 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "24 5v5 Ranked Solo games Summoner's Rift MID Garen SEASON 2019 \n", + "25 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "26 5v5 Ranked Solo games Summoner's Rift MID Garen SEASON 2019 \n", + "27 5v5 Ranked Solo games Summoner's Rift TOP Garen SEASON 2019 \n", + "28 5v5 Ranked Solo games Summoner's Rift MID Galio SEASON 2019 \n", + "29 5v5 Ranked Solo games Summoner's Rift JUNGLE Sejuani SEASON 2019 \n", + ".. ... ... ... ... ... \n", + "70 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "71 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "72 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "73 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "74 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "75 5v5 Ranked Solo games Summoner's Rift MID Ahri SEASON 2019 \n", + "76 5v5 Ranked Solo games Summoner's Rift MID Morgana SEASON 2019 \n", + "77 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "78 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "79 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "80 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "81 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "82 5v5 Ranked Solo games Summoner's Rift BOTTOM Caitlyn SEASON 2019 \n", + "83 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "84 5v5 Ranked Solo games Summoner's Rift BOTTOM Ashe SEASON 2019 \n", + "85 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "86 5v5 Ranked Solo games Summoner's Rift BOTTOM Lux SEASON 2019 \n", + "87 5v5 Ranked Solo games Summoner's Rift NONE Lux SEASON 2019 \n", + "88 5v5 Ranked Solo games Summoner's Rift BOTTOM Karma SEASON 2019 \n", + "89 5v5 Ranked Solo games Summoner's Rift BOTTOM Karma SEASON 2019 \n", + "90 5v5 Ranked Solo games Summoner's Rift NONE Nautilus SEASON 2019 \n", + "91 5v5 Ranked Solo games Summoner's Rift BOTTOM Blitzcrank SEASON 2019 \n", + "92 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "93 5v5 Ranked Solo games Summoner's Rift NONE Sivir SEASON 2019 \n", + "94 5v5 Ranked Solo games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "95 5v5 Ranked Solo games Summoner's Rift NONE Sivir SEASON 2019 \n", + "96 5v5 Ranked Solo games Summoner's Rift BOTTOM Caitlyn SEASON 2019 \n", + "97 5v5 Draft Pick games Summoner's Rift BOTTOM Thresh SEASON 2019 \n", + "98 5v5 Draft Pick games Summoner's Rift BOTTOM Thresh SEASON 2019 \n", + "99 5v5 Ranked Flex games Summoner's Rift BOTTOM Sivir SEASON 2019 \n", + "\n", + "[100 rows x 9 columns]" + ] + }, + "execution_count": 15, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "matches_df" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/your-code/League of Legends Web Scraping.ipynb b/your-code/League of Legends Web Scraping.ipynb new file mode 100644 index 0000000..80c5d71 --- /dev/null +++ b/your-code/League of Legends Web Scraping.ipynb @@ -0,0 +1,2822 @@ +{ + "cells": [ + { + "cell_type": "markdown", + "metadata": {}, + "source": [ + "![LoL](https://i.blogs.es/19ba21/league-of-legends/1366_2000.jpg)\n", + "\n", + "Introducción:\n", + "\n", + "El siguiente scraping se realiza de la página de developer de Riot Games, ya que al realizar el proyecto de API encontré que hacía falta información que no brindaba la API, sin embargo había una sección de la página en la que venían dos tablas con la información faltante.\n", + "\n", + "Objetivo:\n", + "\n", + "Relacionar los dos proyectos, para obtener una base clara sobre las últimas 100 partidas del jugador seleccionado.\n", + "\n", + "Resultado:\n", + "\n", + "Se obtuvieron mediando web scraping dos dataframes con los datos faltantes en el proyecto de API." + ] + }, + { + "cell_type": "code", + "execution_count": 257, + "metadata": {}, + "outputs": [], + "source": [ + "import requests\n", + "from bs4 import BeautifulSoup\n", + "import pandas as pd\n", + "import numpy as np" + ] + }, + { + "cell_type": "code", + "execution_count": 239, + "metadata": {}, + "outputs": [], + "source": [ + "url = 'https://developer.riotgames.com/game-constants.html'\n", + "LOL = requests.get(url).text" + ] + }, + { + "cell_type": "code", + "execution_count": 240, + "metadata": {}, + "outputs": [ + { + "data": { + "text/plain": [ + "\n", + "\n", + " \n", + " Riot Developer Portal\n", + " \n", + "\n", + " \n", + " \t\n", + " \t\n", + " \n", + " \t\n", + " \t\n", + " \t\n", + " \t\n", + " \n", + "\n", + " \t\n", + "\n", + "\n", + " \t\n", + " \n", + "\n", + " \t\n", + " \t\n", + "\n", + " \t\n", + " \t\n", + "\n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \t\n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + " \n", + " \t\n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + "\n", + "\n", + "\n", + " \n", + "\n", + " \n", + " \n", + "
\n", + "
\n", + " \n", + "\n", + "\n", + "
\n", + "\t
\n", + "\n", + "\t\t\n", + "
\n", + "\t
\n", + "\t\tLanguage\n", + " \t
\n", + "\n", + " \t
\n", + " \t
\n", + " \t
\n", + "\n", + "\t \t\n", + "\t\t \t\n", + "\t\t\t\t\t \n", + "\t\t\t\t\t\n", + "\t\t\t\t\n", + "\n", + " \t\t\t
\n", + " \t\t
\n", + " \t
\n", + "
\n", + "\n", + "\n", + "\t\t
\n", + " \n", + "

Game Constants

\n", + "\n", + "

Seasons

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IDName
0PRESEASON 3
1SEASON 3
2PRESEASON 2014
3SEASON 2014
4PRESEASON 2015
5SEASON 2015
6PRESEASON 2016
7SEASON 2016
8PRESEASON 2017
9SEASON 2017
10PRESEASON 2018
11SEASON 2018
\n", + "\n", + "\n", + "\n", + "

Matchmaking Queues

\n", + "
\n", + "

These constants populate the queue, queueId, and gameQueueConfigId fields.

\n", + "\n", + "\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
IdMapDescriptionNotes
0Custom games
2Summoner's Rift5v5 Blind Pick gamesDeprecated in patch 7.19 in favor of queueId 430
4Summoner's Rift5v5 Ranked Solo gamesDeprecated in favor of queueId 420
6Summoner's Rift5v5 Ranked Premade gamesGame mode deprecated
7Summoner's RiftCo-op vs AI gamesDeprecated in favor of queueId 32 and 33
8Twisted Treeline3v3 Normal gamesDeprecated in patch 7.19 in favor of queueId 460
9Twisted Treeline3v3 Ranked Flex gamesDeprecated in patch 7.19 in favor of queueId 470
14Summoner's Rift5v5 Draft Pick gamesDeprecated in favor of queueId 400
16Crystal Scar5v5 Dominion Blind Pick gamesGame mode deprecated
17Crystal Scar5v5 Dominion Draft Pick gamesGame mode deprecated
25Crystal ScarDominion Co-op vs AI gamesGame mode deprecated
31Summoner's RiftCo-op vs AI Intro Bot gamesDeprecated in patch 7.19 in favor of queueId 830
32Summoner's RiftCo-op vs AI Beginner Bot gamesDeprecated in patch 7.19 in favor of queueId 840
33Summoner's RiftCo-op vs AI Intermediate Bot gamesDeprecated in patch 7.19 in favor of queueId 850
41Twisted Treeline3v3 Ranked Team gamesGame mode deprecated
42Summoner's Rift5v5 Ranked Team gamesGame mode deprecated
52Twisted TreelineCo-op vs AI gamesDeprecated in patch 7.19 in favor of queueId 800
61Summoner's Rift5v5 Team Builder gamesGame mode deprecated
65Howling Abyss5v5 ARAM gamesDeprecated in patch 7.19 in favor of queueId 450
67Howling AbyssARAM Co-op vs AI gamesGame mode deprecated
70Summoner's RiftOne for All gamesDeprecated in patch 8.6 in favor of queueId 1020
72Howling Abyss1v1 Snowdown Showdown games
73Howling Abyss2v2 Snowdown Showdown games
75Summoner's Rift6v6 Hexakill games
76Summoner's RiftUltra Rapid Fire games
78Howling AbyssOne For All: Mirror Mode games
83Summoner's RiftCo-op vs AI Ultra Rapid Fire games
91Summoner's RiftDoom Bots Rank 1 gamesDeprecated in patch 7.19 in favor of queueId 950
92Summoner's RiftDoom Bots Rank 2 gamesDeprecated in patch 7.19 in favor of queueId 950
93Summoner's RiftDoom Bots Rank 5 gamesDeprecated in patch 7.19 in favor of queueId 950
96Crystal ScarAscension gamesDeprecated in patch 7.19 in favor of queueId 910
98Twisted Treeline6v6 Hexakill games
100Butcher's Bridge5v5 ARAM games
300Howling AbyssLegend of the Poro King gamesDeprecated in patch 7.19 in favor of queueId 920
310Summoner's RiftNemesis games
313Summoner's RiftBlack Market Brawlers games
315Summoner's RiftNexus Siege gamesDeprecated in patch 7.19 in favor of queueId 940
317Crystal ScarDefinitely Not Dominion games
318Summoner's RiftARURF gamesDeprecated in patch 7.19 in favor of queueId 900
325Summoner's RiftAll Random games
400Summoner's Rift5v5 Draft Pick games
410Summoner's Rift5v5 Ranked Dynamic gamesGame mode deprecated in patch 6.22
420Summoner's Rift5v5 Ranked Solo games
430Summoner's Rift5v5 Blind Pick games
440Summoner's Rift5v5 Ranked Flex games
450Howling Abyss5v5 ARAM games
460Twisted Treeline3v3 Blind Pick games
470Twisted Treeline3v3 Ranked Flex games
600Summoner's RiftBlood Hunt Assassin games
610Cosmic RuinsDark Star: Singularity games
700Summoner's RiftClash games
800Twisted TreelineCo-op vs. AI Intermediate Bot games
810Twisted TreelineCo-op vs. AI Intro Bot games
820Twisted TreelineCo-op vs. AI Beginner Bot games
830Summoner's RiftCo-op vs. AI Intro Bot games
840Summoner's RiftCo-op vs. AI Beginner Bot games
850Summoner's RiftCo-op vs. AI Intermediate Bot games
900Summoner's RiftARURF games
910Crystal ScarAscension games
920Howling AbyssLegend of the Poro King games
940Summoner's RiftNexus Siege games
950Summoner's RiftDoom Bots Voting games
960Summoner's RiftDoom Bots Standard games
980Valoran City ParkStar Guardian Invasion: Normal games
990Valoran City ParkStar Guardian Invasion: Onslaught games
1000OverchargePROJECT: Hunters games
1010Summoner's RiftSnow ARURF games
1020Summoner's RiftOne for All games
1030Crash SiteOdyssey Extraction: Intro games
1040Crash SiteOdyssey Extraction: Cadet games
1050Crash SiteOdyssey Extraction: Crewmember games
1060Crash SiteOdyssey Extraction: Captain games
1070Crash SiteOdyssey Extraction: Onslaught games
1090ConvergenceTeamfight Tactics games
1100ConvergenceRanked Teamfight Tactics games
1200Nexus BlitzNexus Blitz gamesDeprecated in patch 9.2
\n", + "\n", + "\n", + "

Map Names

\n", + "

These constants populate the mapId field.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
mapIdNameNotes
1Summoner's RiftOriginal Summer variant
2Summoner's RiftOriginal Autumn variant
3The Proving GroundsTutorial map
4Twisted TreelineOriginal version
8The Crystal ScarDominion map
10Twisted TreelineCurrent version
11Summoner's RiftCurrent version
12Howling AbyssARAM map
14Butcher's BridgeARAM map
16Cosmic RuinsDark Star: Singularity map
18Valoran City ParkStar Guardian Invasion map
19Substructure 43PROJECT: Hunters map
20Crash SiteOdyssey: Extraction map
21Nexus BlitzNexus Blitz map
\n", + "\n", + "

Game Modes

\n", + "

These constants populate the gameMode field.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
gameModeDescription
CLASSICClassic Summoner's Rift and Twisted Treeline games
ODINDominion/Crystal Scar games
ARAMARAM games
TUTORIALTutorial games
URFURF games
DOOMBOTSTEEMODoom Bot games
ONEFORALLOne for All games
ASCENSIONAscension games
FIRSTBLOODSnowdown Showdown games
KINGPOROLegend of the Poro King games
SIEGENexus Siege games
ASSASSINATEBlood Hunt Assassin games
ARSRAll Random Summoner's Rift games
DARKSTARDark Star: Singularity games
STARGUARDIANStar Guardian Invasion games
PROJECTPROJECT: Hunters games
GAMEMODEXNexus Blitz games
ODYSSEYOdyssey: Extraction games
\n", + "\n", + "

Game Types

\n", + "

These constants populate the gameType field.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
gameType / matchTypeDescription
CUSTOM_GAMECustom games
TUTORIAL_GAMETutorial games
MATCHED_GAMEAll other games
\n", + "\n", + "

Rune Slot IDs

\n", + "

These constants populate the runeSlotId field. A blank version of the rune page background can be found here.

\n", + "

\n", + "
\n", + "\n", + "
\n", + "\n", + "

Match Timeline Data Position Values

\n", + "

Match timeline data contains a position field that contains x and y values. Translating the position, in the timeline data, onto the mini-map can be tricky so keep in mind the following:

\n", + "
    \n", + "
  • Due to various factors (e.g., game map vs. mini-map are different shapes, there is more space outside of the game map, various features are misrepresented in scale or position on the mini-map, etc.), the bounds for the game map are not the same as the bounds for the mini-map.
  • \n", + "
  • The mini-map from the match history website is also not the same as the in-game mini-map so we've provided examples to help translate timeline data onto both mini-maps. Although, due to the reasons given in the first bullet point, as well as the fact that the translation code doesn't use the same logic as the client UI to \"draw\" the mini-map, it wouldn't be 100% accurate for either.
  • \n", + "
  • The bounds that are documented on this page represent the bounds of the actual game map. Because of the issues stated in the previous bullet points, the bounds in the sample code have been adjusted so that the timeline data \"fits\" better when translated onto the mini-map.
  • \n", + "
\n", + "
\n", + "\n", + "

Summoner's Rift
\n", + " Summoner's Rift was updated and replaced with a new version on Nov 20th, 2014. For this reason, there are two bounds used to translate timeline positions; one on the original Summoner's Rift and one on the newly updated Summoner's Rift. Any games played before Nov 12th, 2014 should all be on the original Summoner's Rift and any games after Nov 20th, 2014 should be all on the new Summoner's Rift. Games played between those dates could be played on either map and you should verify which map's bounds should be used. You can find the mapID of the corresponding maps below under the Map Names section that lists all maps along with their corresponding mapID.

\n", + "\n", + "
\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Original Summoner's Rift, Summer Variant
\n", + " Original Summoner's Rift, Winter Variant

\n", + "
    \n", + "
  • min: { x: -269, y: -83}
  • \n", + "
  • max: { x: 14276, y: 14522}
  • \n", + "
\n", + "
before November 12, 2014
\n", + "
Adjusted bounds for the Match History website's mini-map (as seen on the left)
\n", + "
    \n", + "
  • min: {x: -1000, y: -570}
  • \n", + "
  • max: {x: 14800, y: 14800}
  • \n", + "
\n", + " Sample Code\n", + "
Current Summoner's Rift
\n", + "
    \n", + "
  • min: { x: 0, y: 0}
  • \n", + "
  • max: { x: 14820, y: 14881}
  • \n", + "
\n", + "
after November 20, 2014
\n", + "
Adjusted bounds for the in-game mini-map (as seen on the left)
\n", + "
    \n", + "
  • min: {x: -120, y: -120}
  • \n", + "
  • max: {x: 14870, y: 14980}
  • \n", + "
\n", + " Sample Code\n", + "
Adjusted bounds for the Match History website's mini-map (as seen on the left)
\n", + "
    \n", + "
  • min: {x: -570, y: -420}
  • \n", + "
  • max: {x: 15220, y: 14980}
  • \n", + "
\n", + " Sample Code\n", + "
\n", + "\n", + "

Proving Grounds
\n", + "Proving Grounds was the map used for the original tutorial mode.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: -500, y: -500}
  • \n", + "
  • max: {x: 15000, y: 15000}
  • \n", + "
\n", + "
\n", + "\n", + "

Crystal Scar
\n", + "Crystal Scar is the map for game mode Dominion.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: 0, y: 0}
  • \n", + "
  • max: {x: 13987, y: 13987}
  • \n", + "
\n", + "
\n", + "\n", + "

Twisted Treeline
\n", + "Twisted Treeline is the map for 3v3 game modes.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: 0, y: 0}
  • \n", + "
  • max: {x: 15398, y: 15398}
  • \n", + "
\n", + "
\n", + "\n", + "

Howling Abyss
\n", + "Howling Abyss is the map for the game mode ARAM.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: -28, y: -19}
  • \n", + "
  • max: {x: 12849, y: 12858}
  • \n", + "
\n", + "
\n", + "\n", + "

Butcher's Bridge
\n", + "Butcher's Bridge was a re-skin of the Howling Abyss map for the game mode ARAM during the Bildgewater event.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: {x: -28, y: -19}
  • \n", + "
  • max: {x: 12849, y: 12858}
  • \n", + "
\n", + "
\n", + "\n", + "

Cosmic Ruins
\n", + "Cosmic Ruins is the map for the game mode Dark Star: Singularity.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
Map bounds
\n", + "
    \n", + "
  • min: { x: 18, y: 18}
  • \n", + "
  • max: { x: 6843, y: 6843}
  • \n", + "
\n", + "
Adjusted bounds
\n", + "
    \n", + "
  • min: {x: 20, y: 20}
  • \n", + "
  • max: {x: 6970, y: 6970}
  • \n", + "
\n", + " Sample Code\n", + "
\n", + "\n", + "

Valoran City Park
\n", + "Valoran City Park is the map for the Star Guardian game mode Invasion.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
\n", + "\n", + "

Substructure 43
\n", + "Substructure 43 is the map for the PROJECT: Hunters game mode Overcharge.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
\n", + "\n", + "

Nexus Blitz
\n", + "Nexus Blitz is the map for Nexus Blitz games.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
\n", + "\n", + "

Crash Site
\n", + "Crash Site is the map for Odyssey: Extraction games.

\n", + "\n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "
AssetsNotes
\n", + "\t
\n", + "
\n", + "\n", + "\n", + "
\n", + "
\n", + " \n", + "\n", + " \n", + " \n", + "\n", + " \n", + " \n", + "\n", + " \n", + " \n", + " \n", + " \n", + " \n", + " \n", + "\n", + "\n", + "\n", + "" + ] + }, + "execution_count": 240, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "LOLsoup = BeautifulSoup(LOL,'html5lib')\n", + "LOLsoup" + ] + }, + { + "cell_type": "code", + "execution_count": 277, + "metadata": {}, + "outputs": [], + "source": [ + "queue = LOLsoup.find_all(\"tr\")\n", + "queue_list = [q.text.replace(' ','').split('\\n') for q in queue][13:90]\n", + "q = [t for t in queue_list if t]\n", + "queue_df = pd.DataFrame(q, columns= q[0])\n", + "queue_df = queue_df.drop(0).drop('', axis =1)\n", + "queue_df.to_csv('queue webscraping.csv', index = False)\n", + "queue_df = queue_df[queue_df.Notes == '']\n", + "queue_df['Id'] = queue_df['Id'].astype(np.int64)\n", + "del queue_df['Notes']\n", + "queue_df = queue_df.rename(columns={'Id':'queue'})\n", + "queue_df.to_csv('queue final.csv', index = False)" + ] + }, + { + "cell_type": "code", + "execution_count": 271, + "metadata": {}, + "outputs": [], + "source": [ + "season = LOLsoup.find_all(\"tr\")\n", + "season_list = [q.text.replace(' ','').split('\\n') for q in queue][:13]\n", + "s = [t for t in season_list if t]\n", + "season_df = pd.DataFrame(s, columns= s[0]).drop(0).drop('',axis=1)\n", + "season_df.to_csv('season webscraping.csv', index = False)\n", + "season_df.dtypes\n", + "to_append = {'ID':[12,13],'Name':['PRESEASON 2019','SEASON 2019']}\n", + "df_to_append = pd.DataFrame(to_append)\n", + "season_df = pd.concat([season_df,df_to_append])\n", + "season_df['ID'] = season_df['ID'].astype(np.int64)\n", + "season_df = season_df.rename(columns= {'ID':'season'})\n", + "season_df.to_csv('season final.csv',index = False)" + ] + } + ], + "metadata": { + "kernelspec": { + "display_name": "Python 3", + "language": "python", + "name": "python3" + }, + "language_info": { + "codemirror_mode": { + "name": "ipython", + "version": 3 + }, + "file_extension": ".py", + "mimetype": "text/x-python", + "name": "python", + "nbconvert_exporter": "python", + "pygments_lexer": "ipython3", + "version": "3.7.3" + } + }, + "nbformat": 4, + "nbformat_minor": 2 +} diff --git a/your-code/The Wardman's last 100 matches.csv b/your-code/The Wardman's last 100 matches.csv new file mode 100644 index 0000000..3e003fd --- /dev/null +++ b/your-code/The Wardman's last 100 matches.csv @@ -0,0 +1,101 @@ +Summoner,Region,Fecha y Hora,Solo/Duo,Type,Map,Lane,Champion,Season +The Wardman,NA1,2019-07-18 18:47:57.269,DUO,5v5 ARAM games,Howling Abyss,NONE,Graves,SEASON 2019 +The Wardman,NA1,2019-07-02 00:59:14.090,DUO,5v5 Ranked Solo games,Summoner's Rift,TOP,Mordekaiser,SEASON 2019 +The Wardman,NA1,2019-06-27 03:23:27.175,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Thresh,SEASON 2019 +The Wardman,NA1,2019-06-26 06:59:58.005,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Twitch,SEASON 2019 +The Wardman,NA1,2019-06-26 06:13:37.753,SOLO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-26 05:40:55.337,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Jinx,SEASON 2019 +The Wardman,NA1,2019-06-26 05:02:09.996,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Jinx,SEASON 2019 +The Wardman,NA1,2019-06-26 02:44:46.587,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Lux,SEASON 2019 +The Wardman,NA1,2019-06-26 01:56:25.799,DUO,5v5 Ranked Solo games,Summoner's Rift,MID,Morgana,SEASON 2019 +The Wardman,NA1,2019-06-26 01:20:22.169,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Nautilus,SEASON 2019 +The Wardman,NA1,2019-06-25 06:30:23.719,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-25 05:51:42.389,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-25 05:06:40.593,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-25 04:28:56.002,DUO,5v5 Ranked Solo games,Summoner's Rift,MID,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-25 03:46:41.352,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-25 03:00:40.616,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-25 02:25:20.426,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Jax,SEASON 2019 +The Wardman,NA1,2019-06-25 01:45:10.502,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Garen,SEASON 2019 +The Wardman,NA1,2019-06-25 01:08:02.540,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Nasus,SEASON 2019 +The Wardman,NA1,2019-06-22 18:51:55.717,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Mordekaiser,SEASON 2019 +The Wardman,NA1,2019-06-22 18:11:13.746,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Garen,SEASON 2019 +The Wardman,NA1,2019-06-22 17:33:36.001,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Garen,SEASON 2019 +The Wardman,NA1,2019-06-22 09:22:40.004,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Garen,SEASON 2019 +The Wardman,NA1,2019-06-22 08:56:55.090,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Garen,SEASON 2019 +The Wardman,NA1,2019-06-22 00:05:08.735,DUO,5v5 Ranked Solo games,Summoner's Rift,MID,Garen,SEASON 2019 +The Wardman,NA1,2019-06-21 23:27:34.215,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Garen,SEASON 2019 +The Wardman,NA1,2019-06-21 04:53:10.636,DUO,5v5 Ranked Solo games,Summoner's Rift,MID,Garen,SEASON 2019 +The Wardman,NA1,2019-06-21 04:07:30.695,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Garen,SEASON 2019 +The Wardman,NA1,2019-06-21 03:21:22.361,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Galio,SEASON 2019 +The Wardman,NA1,2019-06-21 02:29:44.324,NONE,5v5 Ranked Solo games,Summoner's Rift,JUNGLE,Sejuani,SEASON 2019 +The Wardman,NA1,2019-06-21 01:57:08.983,NONE,5v5 Ranked Solo games,Summoner's Rift,JUNGLE,Sejuani,SEASON 2019 +The Wardman,NA1,2019-06-21 01:26:52.376,NONE,5v5 Ranked Solo games,Summoner's Rift,JUNGLE,Sejuani,SEASON 2019 +The Wardman,NA1,2019-06-20 07:57:00.685,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Janna,SEASON 2019 +The Wardman,NA1,2019-06-20 07:13:23.952,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Janna,SEASON 2019 +The Wardman,NA1,2019-06-20 06:42:34.631,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Janna,SEASON 2019 +The Wardman,NA1,2019-06-20 06:04:58.748,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Janna,SEASON 2019 +The Wardman,NA1,2019-06-20 05:29:10.996,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Janna,SEASON 2019 +The Wardman,NA1,2019-06-20 04:46:43.211,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Janna,SEASON 2019 +The Wardman,NA1,2019-06-20 04:12:27.912,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Lux,SEASON 2019 +The Wardman,NA1,2019-06-20 03:31:24.939,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Janna,SEASON 2019 +The Wardman,NA1,2019-06-20 02:57:07.204,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Nautilus,SEASON 2019 +The Wardman,NA1,2019-06-20 02:09:44.975,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Morgana,SEASON 2019 +The Wardman,NA1,2019-06-20 01:36:46.630,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-20 00:51:39.665,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-19 02:13:35.099,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Nautilus,SEASON 2019 +The Wardman,NA1,2019-06-19 01:36:45.296,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Morgana,SEASON 2019 +The Wardman,NA1,2019-06-18 02:59:36.387,DUO,5v5 Ranked Solo games,Summoner's Rift,MID,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-18 02:22:47.760,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Morgana,SEASON 2019 +The Wardman,NA1,2019-06-18 01:59:07.664,DUO,5v5 Ranked Solo games,Summoner's Rift,NONE,Leona,SEASON 2019 +The Wardman,NA1,2019-06-18 01:16:48.909,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Morgana,SEASON 2019 +The Wardman,NA1,2019-06-18 00:39:31.512,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Nautilus,SEASON 2019 +The Wardman,NA1,2019-06-17 06:51:02.159,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Thresh,SEASON 2019 +The Wardman,NA1,2019-06-17 06:16:04.610,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Soraka,SEASON 2019 +The Wardman,NA1,2019-06-17 05:41:30.559,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Thresh,SEASON 2019 +The Wardman,NA1,2019-06-17 04:59:33.622,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Thresh,SEASON 2019 +The Wardman,NA1,2019-06-17 04:18:18.056,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Brand,SEASON 2019 +The Wardman,NA1,2019-06-17 03:15:11.707,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-17 02:38:20.676,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Caitlyn,SEASON 2019 +The Wardman,NA1,2019-06-17 01:46:29.422,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Caitlyn,SEASON 2019 +The Wardman,NA1,2019-06-17 00:54:25.855,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Caitlyn,SEASON 2019 +The Wardman,NA1,2019-06-17 00:09:59.393,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-16 23:18:41.456,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Leona,SEASON 2019 +The Wardman,NA1,2019-06-16 22:41:55.600,SOLO,5v5 Ranked Solo games,Summoner's Rift,TOP,Leona,SEASON 2019 +The Wardman,NA1,2019-06-16 21:32:41.907,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Jinx,SEASON 2019 +The Wardman,NA1,2019-06-16 20:48:39.529,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-16 20:16:04.162,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Ashe,SEASON 2019 +The Wardman,NA1,2019-06-16 19:35:46.758,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-16 19:08:46.573,DUO,5v5 Ranked Solo games,Summoner's Rift,NONE,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 18:36:26.529,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 18:07:09.953,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 05:24:57.217,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 04:38:50.701,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 03:02:05.986,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 02:19:37.109,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 01:35:24.900,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 01:06:40.839,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Ahri,SEASON 2019 +The Wardman,NA1,2019-06-16 00:25:31.795,SOLO,5v5 Ranked Solo games,Summoner's Rift,MID,Morgana,SEASON 2019 +The Wardman,NA1,2019-06-15 23:47:15.097,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-15 23:13:50.520,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-15 22:32:54.820,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-15 22:04:34.946,SOLO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-15 21:17:59.216,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-15 20:21:10.572,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Caitlyn,SEASON 2019 +The Wardman,NA1,2019-06-14 08:03:23.656,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-14 07:30:37.144,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Ashe,SEASON 2019 +The Wardman,NA1,2019-06-14 06:51:54.892,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-14 06:21:16.769,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Lux,SEASON 2019 +The Wardman,NA1,2019-06-14 06:10:57.276,DUO,5v5 Ranked Solo games,Summoner's Rift,NONE,Lux,SEASON 2019 +The Wardman,NA1,2019-06-14 05:27:17.040,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Karma,SEASON 2019 +The Wardman,NA1,2019-06-14 04:54:42.439,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Karma,SEASON 2019 +The Wardman,NA1,2019-06-14 04:28:45.608,DUO,5v5 Ranked Solo games,Summoner's Rift,NONE,Nautilus,SEASON 2019 +The Wardman,NA1,2019-06-14 03:48:25.673,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Blitzcrank,SEASON 2019 +The Wardman,NA1,2019-06-14 03:06:20.097,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-14 02:43:38.740,DUO,5v5 Ranked Solo games,Summoner's Rift,NONE,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-13 23:48:30.178,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-13 23:39:33.572,DUO,5v5 Ranked Solo games,Summoner's Rift,NONE,Sivir,SEASON 2019 +The Wardman,NA1,2019-06-13 23:09:21.187,DUO,5v5 Ranked Solo games,Summoner's Rift,BOTTOM,Caitlyn,SEASON 2019 +The Wardman,NA1,2019-06-27 04:35:53.317,DUO,5v5 Draft Pick games,Summoner's Rift,BOTTOM,Thresh,SEASON 2019 +The Wardman,NA1,2019-06-27 04:03:19.041,DUO,5v5 Draft Pick games,Summoner's Rift,BOTTOM,Thresh,SEASON 2019 +The Wardman,NA1,2019-06-21 00:48:21.000,DUO,5v5 Ranked Flex games,Summoner's Rift,BOTTOM,Sivir,SEASON 2019 diff --git a/your-code/matches API.csv b/your-code/matches API.csv new file mode 100644 index 0000000..043125f --- /dev/null +++ b/your-code/matches API.csv @@ -0,0 +1,101 @@ +champion,gameId,lane,platformId,queue,role,season,timestamp +104,3098384601,NONE,NA1,450,DUO_SUPPORT,13,1563475677269 +82,3082038329,TOP,NA1,420,DUO,13,1562029154090 +412,3076260340,BOTTOM,NA1,400,DUO_SUPPORT,13,1561610153317 +412,3076231678,BOTTOM,NA1,400,DUO_SUPPORT,13,1561608199041 +412,3076210811,BOTTOM,NA1,420,DUO_SUPPORT,13,1561605807175 +29,3075232601,BOTTOM,NA1,420,DUO_CARRY,13,1561532398005 +15,3075197468,BOTTOM,NA1,420,SOLO,13,1561529617753 +222,3075182286,BOTTOM,NA1,420,DUO_CARRY,13,1561527655337 +222,3075154170,BOTTOM,NA1,420,DUO_CARRY,13,1561525329996 +99,3075055533,BOTTOM,NA1,420,DUO_SUPPORT,13,1561517086587 +25,3075014542,MID,NA1,420,DUO_SUPPORT,13,1561514185799 +111,3074992633,BOTTOM,NA1,420,DUO_SUPPORT,13,1561512022169 +15,3074581095,BOTTOM,NA1,420,DUO_CARRY,13,1561444223719 +15,3074562827,BOTTOM,NA1,420,DUO_CARRY,13,1561441902389 +15,3074541604,BOTTOM,NA1,420,DUO_CARRY,13,1561439200593 +15,3074512513,MID,NA1,420,DUO,13,1561436936002 +15,3074465450,BOTTOM,NA1,420,DUO_CARRY,13,1561434401352 +15,3074432791,BOTTOM,NA1,420,DUO_CARRY,13,1561431640616 +24,3074411162,TOP,NA1,420,SOLO,13,1561429520426 +86,3074380295,TOP,NA1,420,SOLO,13,1561427110502 +75,3074350515,TOP,NA1,420,SOLO,13,1561424882540 +82,3072552650,TOP,NA1,420,SOLO,13,1561229515717 +86,3072518596,TOP,NA1,420,SOLO,13,1561227073746 +86,3072521106,TOP,NA1,420,SOLO,13,1561224816001 +86,3072387474,TOP,NA1,420,SOLO,13,1561195360004 +86,3072385590,TOP,NA1,420,SOLO,13,1561193815090 +86,3072074055,MID,NA1,420,DUO,13,1561161908735 +86,3072046971,TOP,NA1,420,SOLO,13,1561159654215 +86,3071384199,MID,NA1,420,DUO,13,1561092790636 +86,3071370161,TOP,NA1,420,SOLO,13,1561090050695 +3,3071320884,MID,NA1,420,SOLO,13,1561087282361 +113,3071266813,JUNGLE,NA1,420,NONE,13,1561084184324 +113,3071255057,JUNGLE,NA1,420,NONE,13,1561082228983 +113,3071219678,JUNGLE,NA1,420,NONE,13,1561080412376 +15,3071200837,BOTTOM,NA1,440,DUO_CARRY,13,1561078101000 +40,3070844534,BOTTOM,NA1,420,DUO_SUPPORT,13,1561017420685 +40,3070836734,BOTTOM,NA1,420,DUO_SUPPORT,13,1561014803952 +40,3070832552,BOTTOM,NA1,420,DUO_SUPPORT,13,1561012954631 +40,3070798755,BOTTOM,NA1,420,DUO_SUPPORT,13,1561010698748 +40,3070782099,BOTTOM,NA1,420,DUO_SUPPORT,13,1561008550996 +40,3070762569,BOTTOM,NA1,420,DUO_SUPPORT,13,1561006003211 +99,3070734150,BOTTOM,NA1,420,DUO_SUPPORT,13,1561003947912 +40,3070703609,BOTTOM,NA1,420,DUO_SUPPORT,13,1561001484939 +111,3070664222,BOTTOM,NA1,420,DUO_SUPPORT,13,1560999427204 +25,3070628863,BOTTOM,NA1,420,DUO_SUPPORT,13,1560996584975 +15,3070602805,BOTTOM,NA1,420,DUO_CARRY,13,1560994606630 +15,3070568673,BOTTOM,NA1,420,DUO_CARRY,13,1560991899665 +111,3070005996,BOTTOM,NA1,420,DUO_SUPPORT,13,1560910415099 +25,3069976172,BOTTOM,NA1,420,DUO_SUPPORT,13,1560908205296 +15,3069139062,MID,NA1,420,DUO,13,1560826776387 +25,3069108616,BOTTOM,NA1,420,DUO_SUPPORT,13,1560824567760 +89,3069101900,NONE,NA1,420,DUO_SUPPORT,13,1560823147664 +25,3069070383,BOTTOM,NA1,420,DUO_SUPPORT,13,1560820608909 +111,3069029454,BOTTOM,NA1,420,DUO_SUPPORT,13,1560818371512 +412,3068681843,BOTTOM,NA1,420,DUO_SUPPORT,13,1560754262159 +16,3068664521,BOTTOM,NA1,420,DUO_SUPPORT,13,1560752164610 +412,3068638162,BOTTOM,NA1,420,DUO_SUPPORT,13,1560750090559 +412,3068610900,BOTTOM,NA1,420,DUO_SUPPORT,13,1560747573622 +63,3068591023,BOTTOM,NA1,420,DUO_SUPPORT,13,1560745098056 +15,3068534116,BOTTOM,NA1,420,DUO_CARRY,13,1560741311707 +51,3068494223,BOTTOM,NA1,420,DUO_CARRY,13,1560739100676 +51,3068458637,BOTTOM,NA1,420,DUO_CARRY,13,1560735989422 +51,3068424983,BOTTOM,NA1,420,DUO_CARRY,13,1560732865855 +15,3068385505,BOTTOM,NA1,420,DUO_CARRY,13,1560730199393 +89,3068362716,TOP,NA1,420,SOLO,13,1560727121456 +89,3068326152,TOP,NA1,420,SOLO,13,1560724915600 +222,3068282806,BOTTOM,NA1,420,DUO_CARRY,13,1560720761907 +15,3068254274,BOTTOM,NA1,420,DUO_CARRY,13,1560718119529 +22,3068246509,BOTTOM,NA1,420,DUO_CARRY,13,1560716164162 +15,3068229960,BOTTOM,NA1,420,DUO_CARRY,13,1560713746758 +103,3068214548,NONE,NA1,420,DUO_SUPPORT,13,1560712126573 +103,3068189099,MID,NA1,420,SOLO,13,1560710186529 +103,3068184415,MID,NA1,420,SOLO,13,1560708429953 +103,3067748245,MID,NA1,420,SOLO,13,1560662697217 +103,3067665985,MID,NA1,420,SOLO,13,1560659930701 +103,3067570762,MID,NA1,420,SOLO,13,1560654125986 +103,3067529858,MID,NA1,420,SOLO,13,1560651577109 +103,3067489056,MID,NA1,420,SOLO,13,1560648924900 +103,3067482482,MID,NA1,420,SOLO,13,1560647200839 +25,3067434415,MID,NA1,420,SOLO,13,1560644731795 +15,3067406475,BOTTOM,NA1,420,DUO_CARRY,13,1560642435097 +15,3067389324,BOTTOM,NA1,420,DUO_CARRY,13,1560640430520 +15,3067371998,BOTTOM,NA1,420,DUO_CARRY,13,1560637974820 +15,3067366133,BOTTOM,NA1,420,SOLO,13,1560636274946 +15,3067327677,BOTTOM,NA1,420,DUO_CARRY,13,1560633479216 +51,3067297215,BOTTOM,NA1,420,DUO_CARRY,13,1560630070572 +15,3066444988,BOTTOM,NA1,420,DUO_CARRY,13,1560499403656 +22,3066460502,BOTTOM,NA1,420,DUO_CARRY,13,1560497437144 +15,3066435340,BOTTOM,NA1,420,DUO_CARRY,13,1560495114892 +99,3066410845,BOTTOM,NA1,420,DUO_SUPPORT,13,1560493276769 +99,3066408583,NONE,NA1,420,DUO,13,1560492657276 +43,3066380200,BOTTOM,NA1,420,DUO_SUPPORT,13,1560490037040 +43,3066352675,BOTTOM,NA1,420,DUO_SUPPORT,13,1560488082439 +111,3066345794,NONE,NA1,420,DUO_SUPPORT,13,1560486525608 +53,3066305746,BOTTOM,NA1,420,DUO_SUPPORT,13,1560484105673 +15,3066275805,BOTTOM,NA1,420,DUO_CARRY,13,1560481580097 +15,3066260783,NONE,NA1,420,DUO_SUPPORT,13,1560480218740 +15,3065837396,BOTTOM,NA1,420,DUO_CARRY,13,1560469710178 +15,3065855203,NONE,NA1,420,DUO,13,1560469173572 +51,3065818577,BOTTOM,NA1,420,DUO_CARRY,13,1560467361187 diff --git a/your-code/queue final.csv b/your-code/queue final.csv new file mode 100644 index 0000000..2d9030e --- /dev/null +++ b/your-code/queue final.csv @@ -0,0 +1,48 @@ +queue,Map,Description +0,Custom games, +72,Howling Abyss,1v1 Snowdown Showdown games +73,Howling Abyss,2v2 Snowdown Showdown games +75,Summoner's Rift,6v6 Hexakill games +76,Summoner's Rift,Ultra Rapid Fire games +78,Howling Abyss,One For All: Mirror Mode games +83,Summoner's Rift,Co-op vs AI Ultra Rapid Fire games +98,Twisted Treeline,6v6 Hexakill games +100,Butcher's Bridge,5v5 ARAM games +310,Summoner's Rift,Nemesis games +313,Summoner's Rift,Black Market Brawlers games +317,Crystal Scar,Definitely Not Dominion games +325,Summoner's Rift,All Random games +400,Summoner's Rift,5v5 Draft Pick games +420,Summoner's Rift,5v5 Ranked Solo games +430,Summoner's Rift,5v5 Blind Pick games +440,Summoner's Rift,5v5 Ranked Flex games +450,Howling Abyss,5v5 ARAM games +460,Twisted Treeline,3v3 Blind Pick games +470,Twisted Treeline,3v3 Ranked Flex games +600,Summoner's Rift,Blood Hunt Assassin games +610,Cosmic Ruins,Dark Star: Singularity games +700,Summoner's Rift,Clash games +800,Twisted Treeline,Co-op vs. AI Intermediate Bot games +810,Twisted Treeline,Co-op vs. AI Intro Bot games +820,Twisted Treeline,Co-op vs. AI Beginner Bot games +830,Summoner's Rift,Co-op vs. AI Intro Bot games +840,Summoner's Rift,Co-op vs. AI Beginner Bot games +850,Summoner's Rift,Co-op vs. AI Intermediate Bot games +900,Summoner's Rift,ARURF games +910,Crystal Scar,Ascension games +920,Howling Abyss,Legend of the Poro King games +940,Summoner's Rift,Nexus Siege games +950,Summoner's Rift,Doom Bots Voting games +960,Summoner's Rift,Doom Bots Standard games +980,Valoran City Park,Star Guardian Invasion: Normal games +990,Valoran City Park,Star Guardian Invasion: Onslaught games +1000,Overcharge,PROJECT: Hunters games +1010,Summoner's Rift,Snow ARURF games +1020,Summoner's Rift,One for All games +1030,Crash Site,Odyssey Extraction: Intro games +1040,Crash Site,Odyssey Extraction: Cadet games +1050,Crash Site,Odyssey Extraction: Crewmember games +1060,Crash Site,Odyssey Extraction: Captain games +1070,Crash Site,Odyssey Extraction: Onslaught games +1090,Convergence,Teamfight Tactics games +1100,Convergence,Ranked Teamfight Tactics games diff --git a/your-code/queue webscraping.csv b/your-code/queue webscraping.csv new file mode 100644 index 0000000..0f19392 --- /dev/null +++ b/your-code/queue webscraping.csv @@ -0,0 +1,77 @@ +Id,Map,Description,Notes +0,Custom games,, +2,Summoner's Rift,5v5 Blind Pick games,Deprecated in patch 7.19 in favor of queueId 430 +4,Summoner's Rift,5v5 Ranked Solo games,Deprecated in favor of queueId 420 +6,Summoner's Rift,5v5 Ranked Premade games,Game mode deprecated +7,Summoner's Rift,Co-op vs AI games,Deprecated in favor of queueId 32 and 33 +8,Twisted Treeline,3v3 Normal games,Deprecated in patch 7.19 in favor of queueId 460 +9,Twisted Treeline,3v3 Ranked Flex games,Deprecated in patch 7.19 in favor of queueId 470 +14,Summoner's Rift,5v5 Draft Pick games,Deprecated in favor of queueId 400 +16,Crystal Scar,5v5 Dominion Blind Pick games,Game mode deprecated +17,Crystal Scar,5v5 Dominion Draft Pick games,Game mode deprecated +25,Crystal Scar,Dominion Co-op vs AI games,Game mode deprecated +31,Summoner's Rift,Co-op vs AI Intro Bot games,Deprecated in patch 7.19 in favor of queueId 830 +32,Summoner's Rift,Co-op vs AI Beginner Bot games,Deprecated in patch 7.19 in favor of queueId 840 +33,Summoner's Rift,Co-op vs AI Intermediate Bot games,Deprecated in patch 7.19 in favor of queueId 850 +41,Twisted Treeline,3v3 Ranked Team games,Game mode deprecated +42,Summoner's Rift,5v5 Ranked Team games,Game mode deprecated +52,Twisted Treeline,Co-op vs AI games,Deprecated in patch 7.19 in favor of queueId 800 +61,Summoner's Rift,5v5 Team Builder games,Game mode deprecated +65,Howling Abyss,5v5 ARAM games,Deprecated in patch 7.19 in favor of queueId 450 +67,Howling Abyss,ARAM Co-op vs AI games,Game mode deprecated +70,Summoner's Rift,One for All games,Deprecated in patch 8.6 in favor of queueId 1020 +72,Howling Abyss,1v1 Snowdown Showdown games, +73,Howling Abyss,2v2 Snowdown Showdown games, +75,Summoner's Rift,6v6 Hexakill games, +76,Summoner's Rift,Ultra Rapid Fire games, +78,Howling Abyss,One For All: Mirror Mode games, +83,Summoner's Rift,Co-op vs AI Ultra Rapid Fire games, +91,Summoner's Rift,Doom Bots Rank 1 games,Deprecated in patch 7.19 in favor of queueId 950 +92,Summoner's Rift,Doom Bots Rank 2 games,Deprecated in patch 7.19 in favor of queueId 950 +93,Summoner's Rift,Doom Bots Rank 5 games,Deprecated in patch 7.19 in favor of queueId 950 +96,Crystal Scar,Ascension games,Deprecated in patch 7.19 in favor of queueId 910 +98,Twisted Treeline,6v6 Hexakill games, +100,Butcher's Bridge,5v5 ARAM games, +300,Howling Abyss,Legend of the Poro King games,Deprecated in patch 7.19 in favor of queueId 920 +310,Summoner's Rift,Nemesis games, +313,Summoner's Rift,Black Market Brawlers games, +315,Summoner's Rift,Nexus Siege games,Deprecated in patch 7.19 in favor of queueId 940 +317,Crystal Scar,Definitely Not Dominion games, +318,Summoner's Rift,ARURF games,Deprecated in patch 7.19 in favor of queueId 900 +325,Summoner's Rift,All Random games, +400,Summoner's Rift,5v5 Draft Pick games, +410,Summoner's Rift,5v5 Ranked Dynamic games,Game mode deprecated in patch 6.22 +420,Summoner's Rift,5v5 Ranked Solo games, +430,Summoner's Rift,5v5 Blind Pick games, +440,Summoner's Rift,5v5 Ranked Flex games, +450,Howling Abyss,5v5 ARAM games, +460,Twisted Treeline,3v3 Blind Pick games, +470,Twisted Treeline,3v3 Ranked Flex games, +600,Summoner's Rift,Blood Hunt Assassin games, +610,Cosmic Ruins,Dark Star: Singularity games, +700,Summoner's Rift,Clash games, +800,Twisted Treeline,Co-op vs. AI Intermediate Bot games, +810,Twisted Treeline,Co-op vs. AI Intro Bot games, +820,Twisted Treeline,Co-op vs. AI Beginner Bot games, +830,Summoner's Rift,Co-op vs. AI Intro Bot games, +840,Summoner's Rift,Co-op vs. AI Beginner Bot games, +850,Summoner's Rift,Co-op vs. AI Intermediate Bot games, +900,Summoner's Rift,ARURF games, +910,Crystal Scar,Ascension games, +920,Howling Abyss,Legend of the Poro King games, +940,Summoner's Rift,Nexus Siege games, +950,Summoner's Rift,Doom Bots Voting games, +960,Summoner's Rift,Doom Bots Standard games, +980,Valoran City Park,Star Guardian Invasion: Normal games, +990,Valoran City Park,Star Guardian Invasion: Onslaught games, +1000,Overcharge,PROJECT: Hunters games, +1010,Summoner's Rift,Snow ARURF games, +1020,Summoner's Rift,One for All games, +1030,Crash Site,Odyssey Extraction: Intro games, +1040,Crash Site,Odyssey Extraction: Cadet games, +1050,Crash Site,Odyssey Extraction: Crewmember games, +1060,Crash Site,Odyssey Extraction: Captain games, +1070,Crash Site,Odyssey Extraction: Onslaught games, +1090,Convergence,Teamfight Tactics games, +1100,Convergence,Ranked Teamfight Tactics games, +1200,Nexus Blitz,Nexus Blitz games,Deprecated in patch 9.2 diff --git a/your-code/season final.csv b/your-code/season final.csv new file mode 100644 index 0000000..36d840a --- /dev/null +++ b/your-code/season final.csv @@ -0,0 +1,15 @@ +season,Name +0,PRESEASON 3 +1,SEASON 3 +2,PRESEASON 2014 +3,SEASON 2014 +4,PRESEASON 2015 +5,SEASON 2015 +6,PRESEASON 2016 +7,SEASON 2016 +8,PRESEASON 2017 +9,SEASON 2017 +10,PRESEASON 2018 +11,SEASON 2018 +12,PRESEASON 2019 +13,SEASON 2019 diff --git a/your-code/season webscraping.csv b/your-code/season webscraping.csv new file mode 100644 index 0000000..7faf5a6 --- /dev/null +++ b/your-code/season webscraping.csv @@ -0,0 +1,13 @@ +ID,Name +0,PRESEASON 3 +1,SEASON 3 +2,PRESEASON 2014 +3,SEASON 2014 +4,PRESEASON 2015 +5,SEASON 2015 +6,PRESEASON 2016 +7,SEASON 2016 +8,PRESEASON 2017 +9,SEASON 2017 +10,PRESEASON 2018 +11,SEASON 2018