--- jupyter: jupytext: notebook_metadata_filter: all text_representation: extension: .md format_name: markdown format_version: '1.1' jupytext_version: 1.1.7 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.6.5 plotly: description: How to use multiple transforms (filter, group by, and aggregates) in Python with Plotly. display_as: transforms language: python layout: base name: Multiple Transforms order: 4 page_type: example_index permalink: python/multiple-transforms/ thumbnail: thumbnail/multiple-transforms.jpg --- #### Filter and Group By ```python import plotly.io as pio import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv") colors = ['blue', 'orange', 'green', 'red', 'purple'] opt = [] opts = [] for i in range(0, len(colors)): opt = dict( target = df['continent'][[i]].unique(), value = dict(marker = dict(color = colors[i])) ) opts.append(opt) data = [dict( type = 'scatter', mode = 'markers', x = df['lifeExp'], y = df['gdpPercap'], text = df['continent'], hoverinfo = 'text', opacity = 0.8, marker = dict( size = df['pop'], sizemode = 'area', sizeref = 200000 ), transforms = [ dict( type = 'filter', target = df['year'], orientation = '=', value = 2007 ), dict( type = 'groupby', groups = df['continent'], styles = opts )] )] layout = dict( yaxis = dict( type = 'log' ) ) fig_dict = dict(data=data, layout=layout) pio.show(fig_dict, validate=False) ``` #### Filter and Aggregate ```python import plotly.io as pio import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv") data = [dict( type = 'scatter', mode = 'markers', x = df['lifeExp'], y = df['gdpPercap'], text = df['continent'], hoverinfo = 'text', opacity = 0.8, marker = dict( size = df['pop'], sizemode = 'area', sizeref = 200000 ), transforms = [ dict( type = 'filter', target = df['year'], orientation = '=', value = 2007 ), dict( type = 'aggregate', groups = df['continent'], aggregations = [ dict(target = 'x', func = 'avg'), dict(target = 'y', func = 'avg'), dict(target = 'marker.size', func = 'sum') ] )] )] layout = dict( yaxis = dict( type = 'log' ) ) fig_dict = dict(data=data, layout=layout) pio.show(fig_dict, validate=False) ``` #### All Transforms ```python import plotly.io as pio import pandas as pd df = pd.read_csv("https://raw.githubusercontent.com/plotly/datasets/master/gapminderDataFiveYear.csv") colors = ['blue', 'orange', 'green', 'red', 'purple'] opt = [] opts = [] for i in range(0, len(colors)): opt = dict( target = df['continent'][[i]].unique(), value = dict(marker = dict(color = colors[i])) ) opts.append(opt) data = [dict( type = 'scatter', mode = 'markers', x = df['lifeExp'], y = df['gdpPercap'], text = df['continent'], hoverinfo = 'text', opacity = 0.8, marker = dict( size = df['pop'], sizemode = 'area', sizeref = 200000 ), transforms = [ dict( type = 'filter', target = df['year'], orientation = '=', value = 2007 ), dict( type = 'groupby', groups = df['continent'], styles = opts ), dict( type = 'aggregate', groups = df['continent'], aggregations = [ dict(target = 'x', func = 'avg'), dict(target = 'y', func = 'avg'), dict(target = 'marker.size', func = 'sum') ] )] )] layout = dict( title = 'Gapminder
2007 Average GDP Per Cap & Life Exp. by Continent', yaxis = dict( type = 'log' ) ) fig_dict = dict(data=data, layout=layout) pio.show(fig_dict, validate=False) ``` #### Reference See https://plotly.com/python/reference/ for more information and chart attribute options!