Python package for loading and transforming data from the Fantasy Premier Leage API.
For getting raw data in JSON form, use the fpl_data.load
module.
For getting enriched data as Pandas DataFrames, use the fpl_data.transform
module.
This module provides a single class: FplApiDataRaw
This class can be used to download all relevant data from the FPL API, including:
- Elements (Players)
- Element types (Positions)
- Teams
- Events (Game weeks)
- Fixtures
To use the FplApiDataRaw
class, first create an instance of the class:
from fpl_data.load import FplApiDataRaw
# make a request to the FPL API
data = FplApiDataRaw()
Then, you can access the data using the following attributes:
elements_json
: A list of all players in the current seasonelement_types_json
: A list of all positions in the FPL gameteams_json
: A list of all teams in the Premier Leagueevents_json
: A list of all game weeks in the current seasonfixtures_json
: A list of all fixtures in the current season
For example, to get the list of all players in the current season, you would do the following:
players = data.elements_json
The get_element_summary
function can be used to get all past gameweek/season info for a given player_id.
To use the get_element_summary
function, you need to pass the player_id
as an argument:
from fpl_data.load import get_element_summary
summary = get_element_summary(player_id)
The summary
object will contain the following information:
history
: all gameweek data for the current seasonhistory_past
: all summary data for past seasonsfixtures
: all upcoming fixtures in current season
For example, to get all past gameweek/season info for the player with ID 1, you would do the following:
summary = get_element_summary(1)
The history
attribute of the summary object will contain a list of dictionaries, each of which representing a gameweek. The dictionaries will contain the following keys:
gameweek
: The gameweek number.points
: The number of points the player scored in the gameweek.minutes
: The number of minutes the player played in the gameweek.goals_scored
: The number of goals the player scored in the gameweek.assists
: The number of assists the player provided in the gameweek.clean_sheets
: The number of clean sheets the player kept in the gameweek.bonus
: The bonus points the player earned in the gameweek.red_card
: A boolean value indicating whether the player was sent off in the gameweek.
The history_past
attribute of the summary object will contain a list of dictionaries, each of which representing a summary from a past season.
This module builds on the load
module, by performing some transformations including:
- Renaming columns to match those shown in the FPL website
- Correcting data types for some columns
- Calculating additional columns such as:
GI
(goal involvements): goals plus assistsPts90
: points scored per 90 minutes
The FplApiDataTransformed
class can be used to download and transform data from the FPL API, which are then returned as Pandas DataFrames:
players_df
: summary of players' season statistics so farpositions_df
: all positions in the FPL gameteams_df
: summary of teams in the Premier Leaguegameweeks_df
: list of all game weeks in the current season
To use the FplApiDataTransformed
class, first create an instance of the class:
from fpl_data.transform import FplApiDataTransformed
# load and transform data
data = FplApiDataTransformed()
Then, you can access the data in DataFrame format using the classes attributes.
For example, to get the main players dataframe, you would do the following:
players = data.players_df
If you would like to contribute to this package, you can set up an environment for local development using the following steps:
https://github.com/James-Leslie/fpl-data
cd fpl-data
conda env create -f environment.yml --prefix ./.env
conda activate ./.env
pip install --editable .