{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Plotly Express" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Background\n", "\n", "Plotly was founded in 2012, by Canadian software engineers, burst into the scene at PyCon in 2013. The original differentiator was \n", "\n", "Plotly is very popular among new python users." ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Data\n", "\n", "Weekly Retail Food Sales from USDA. \n", "\n", "I picked this dataset because it was the first dataset I found on Google. It's an Excel file, but we'll get to explore some Polars `read_excel()` functions\n", "\n", "https://www.ers.usda.gov/data-products/weekly-retail-food-sales/" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "import polars as pl\n", "\n", "df = pl.read_excel(\n", " \"data/NationalTotalAndSubcategory.xlsx\",\n", " read_csv_options={\n", " \"skip_rows\": 1,\n", " \"null_values\": \"NA\"\n", " }\n", ")" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## When reading Excel files:\n", "Always check head() and tail()" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [ { "data": { "text/html": [ "
\n", "shape: (193, 17)
DateDollarsDollars last yearDollars 3 years agoUnit salesUnit sales last yearUnit sales 3 years agoPercent change dollars 1 yearPercent change units 1 yearPercent change dollars 3 yearsPercent change units 3 years_duplicated_0_duplicated_1_duplicated_2_duplicated_3_duplicated_4
stri64i64stri64i64strf64f64strstrstrstrstrstrstrstr
"2019-10-06"1304327474712832064544null44733210144502907925null1.6-0.7nullnullnullnullnullnullnullnull
"2019-10-13"1309169608712739265424null45015262264476085741null2.80.6nullnullnullnullnullnullnullnull
"2019-10-20"1281797372212432656011null43686047654336490063null3.10.7nullnullnullnullnullnullnullnull
"2019-10-27"1271841076812368178414null43266352824288580030null2.80.9nullnullnullnullnullnullnullnull
"2019-11-03"1305301849312752512115null43943715594398657676null2.4-0.1nullnullnullnullnullnullnullnull
"2019-11-10"1293070687312700012879null44560773664466802183null1.8-0.2nullnullnullnullnullnullnullnull
"2019-11-17"1292154318713797643275null44292411114795929252null-6.3-7.6nullnullnullnullnullnullnullnull
"2019-11-24"1398832277713486661480null47551635004603055976null3.73.3nullnullnullnullnullnullnullnull
"2019-12-01"1384010637511816453042null46212733844129599448null17.111.9nullnullnullnullnullnullnullnull
"2019-12-08"1259588438612985481234null43044725094518769338null-3.0-4.7nullnullnullnullnullnullnullnull
"2019-12-15"1335833180113037915930null45076436054471273642null2.50.8nullnullnullnullnullnullnullnull
"2019-12-22"1518604281414987301886null49479770964966518760null1.3-0.4nullnullnullnullnullnullnullnull
"2023-03-26"1627461384015253549272"14372804780"42794151184375869923"4662786695"6.7-2.2"13.2""-8.19999999999…nullnullnullnullnullnull
"2023-04-02"1654977388915448566490"15545074300"43496952134422104047"4995525953"7.1-1.6"6.5""-12.9"nullnullnullnullnullnull
"2023-04-09"1861353178416043007156"15808110159"48716897014577588527"5066490184"16.06.4"17.7""-3.8"nullnullnullnullnullnull
"2023-04-16"1629879899917292495342"14915492824"42876833744902751831"4748699131"-5.7-12.5"9.300000000000…"-9.69999999999…nullnullnullnullnullnull
"2023-04-23"1632230506915067292480"15002171687"42756874574285501343"4747494044"8.3-0.2"8.800000000000…"-9.9"nullnullnullnullnullnull
"2023-04-30"1619122695115390616073"15560426999"42381264604348846639"4878708893"5.2-2.5"4.099999999999…"-13.1"nullnullnullnullnullnull
"2023-05-07"1691580663816244713690"15825035903"44163633884520591185"4934237181"4.1-2.3"6.9""-10.5"nullnullnullnullnullnull
"NA = data are …nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
"Note: The seri…nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
"Source: USDA, …nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
"Data as of May…nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
"Errata: On Jul…nullnullnullnullnullnullnullnullnullnullnullnullnullnullnullnull
" ], "text/plain": [ "shape: (193, 17)\n", "┌───────────┬───────────┬───────────┬───────────┬───┬───────────┬───────────┬───────────┬──────────┐\n", "│ Date ┆ Dollars ┆ Dollars ┆ Dollars 3 ┆ … ┆ _duplicat ┆ _duplicat ┆ _duplicat ┆ _duplica │\n", "│ --- ┆ --- ┆ last year ┆ years ago ┆ ┆ ed_1 ┆ ed_2 ┆ ed_3 ┆ ted_4 │\n", "│ str ┆ i64 ┆ --- ┆ --- ┆ ┆ --- ┆ --- ┆ --- ┆ --- │\n", "│ ┆ ┆ i64 ┆ str ┆ ┆ str ┆ str ┆ str ┆ str │\n", "╞═══════════╪═══════════╪═══════════╪═══════════╪═══╪═══════════╪═══════════╪═══════════╪══════════╡\n", "│ 2019-10-0 ┆ 130432747 ┆ 128320645 ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null │\n", "│ 6 ┆ 47 ┆ 44 ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ 2019-10-1 ┆ 130916960 ┆ 127392654 ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null │\n", "│ 3 ┆ 87 ┆ 24 ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ 2019-10-2 ┆ 128179737 ┆ 124326560 ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null │\n", "│ 0 ┆ 22 ┆ 11 ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ 2019-10-2 ┆ 127184107 ┆ 123681784 ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null │\n", "│ 7 ┆ 68 ┆ 14 ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … ┆ … │\n", "│ Note: The ┆ null ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null │\n", "│ series is ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ subject ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ to r… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ Source: ┆ null ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null │\n", "│ USDA, ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ Economic ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ Research  ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ … ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ Data as ┆ null ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null │\n", "│ of May 7, ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ 2023. ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ Errata: ┆ null ┆ null ┆ null ┆ … ┆ null ┆ null ┆ null ┆ null │\n", "│ On July ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ 7, 2023, ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "│ the vol… ┆ ┆ ┆ ┆ ┆ ┆ ┆ ┆ │\n", "└───────────┴───────────┴───────────┴───────────┴───┴───────────┴───────────┴───────────┴──────────┘" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df" ] }, { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import plotly.express as px" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Bar Graph" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/html": [ " \n", " " ] }, "metadata": {}, "output_type": "display_data" }, { "data": { "application/vnd.plotly.v1+json": { "config": { "plotlyServerURL": "https://plot.ly" }, "data": [ { "alignmentgroup": "True", "bingroup": "x", "hovertemplate": "total_bill=%{x}
count=%{y}", "legendgroup": "", "marker": { "color": "#636efa", "pattern": { "shape": "" } }, "name": "", "offsetgroup": "", "orientation": "v", "showlegend": false, "type": "histogram", "x": [ 16.99, 10.34, 21.01, 23.68, 24.59, 25.29, 8.77, 26.88, 15.04, 14.78, 10.27, 35.26, 15.42, 18.43, 14.83, 21.58, 10.33, 16.29, 16.97, 20.65, 17.92, 20.29, 15.77, 39.42, 19.82, 17.81, 13.37, 12.69, 21.7, 19.65, 9.55, 18.35, 15.06, 20.69, 17.78, 24.06, 16.31, 16.93, 18.69, 31.27, 16.04, 17.46, 13.94, 9.68, 30.4, 18.29, 22.23, 32.4, 28.55, 18.04, 12.54, 10.29, 34.81, 9.94, 25.56, 19.49, 38.01, 26.41, 11.24, 48.27, 20.29, 13.81, 11.02, 18.29, 17.59, 20.08, 16.45, 3.07, 20.23, 15.01, 12.02, 17.07, 26.86, 25.28, 14.73, 10.51, 17.92, 27.2, 22.76, 17.29, 19.44, 16.66, 10.07, 32.68, 15.98, 34.83, 13.03, 18.28, 24.71, 21.16, 28.97, 22.49, 5.75, 16.32, 22.75, 40.17, 27.28, 12.03, 21.01, 12.46, 11.35, 15.38, 44.3, 22.42, 20.92, 15.36, 20.49, 25.21, 18.24, 14.31, 14, 7.25, 38.07, 23.95, 25.71, 17.31, 29.93, 10.65, 12.43, 24.08, 11.69, 13.42, 14.26, 15.95, 12.48, 29.8, 8.52, 14.52, 11.38, 22.82, 19.08, 20.27, 11.17, 12.26, 18.26, 8.51, 10.33, 14.15, 16, 13.16, 17.47, 34.3, 41.19, 27.05, 16.43, 8.35, 18.64, 11.87, 9.78, 7.51, 14.07, 13.13, 17.26, 24.55, 19.77, 29.85, 48.17, 25, 13.39, 16.49, 21.5, 12.66, 16.21, 13.81, 17.51, 24.52, 20.76, 31.71, 10.59, 10.63, 50.81, 15.81, 7.25, 31.85, 16.82, 32.9, 17.89, 14.48, 9.6, 34.63, 34.65, 23.33, 45.35, 23.17, 40.55, 20.69, 20.9, 30.46, 18.15, 23.1, 15.69, 19.81, 28.44, 15.48, 16.58, 7.56, 10.34, 43.11, 13, 13.51, 18.71, 12.74, 13, 16.4, 20.53, 16.47, 26.59, 38.73, 24.27, 12.76, 30.06, 25.89, 48.33, 13.27, 28.17, 12.9, 28.15, 11.59, 7.74, 30.14, 12.16, 13.42, 8.58, 15.98, 13.42, 16.27, 10.09, 20.45, 13.28, 22.12, 24.01, 15.69, 11.61, 10.77, 15.53, 10.07, 12.6, 32.83, 35.83, 29.03, 27.18, 22.67, 17.82, 18.78 ], "xaxis": "x", "yaxis": "y" } ], "layout": { "barmode": "relative", "legend": { "tracegroupgap": 0 }, "margin": { "t": 60 }, "template": { "data": { "bar": [ { "error_x": { "color": "#2a3f5f" }, "error_y": { "color": "#2a3f5f" }, "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "bar" } ], "barpolar": [ { "marker": { "line": { "color": "#E5ECF6", "width": 0.5 }, "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "barpolar" } ], "carpet": [ { "aaxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "baxis": { "endlinecolor": "#2a3f5f", "gridcolor": "white", "linecolor": "white", "minorgridcolor": "white", "startlinecolor": "#2a3f5f" }, "type": "carpet" } ], "choropleth": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "choropleth" } ], "contour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "contour" } ], "contourcarpet": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "contourcarpet" } ], "heatmap": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmap" } ], "heatmapgl": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "heatmapgl" } ], "histogram": [ { "marker": { "pattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 } }, "type": "histogram" } ], "histogram2d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2d" } ], "histogram2dcontour": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "histogram2dcontour" } ], "mesh3d": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "type": "mesh3d" } ], "parcoords": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "parcoords" } ], "pie": [ { "automargin": true, "type": "pie" } ], "scatter": [ { "fillpattern": { "fillmode": "overlay", "size": 10, "solidity": 0.2 }, "type": "scatter" } ], "scatter3d": [ { "line": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatter3d" } ], "scattercarpet": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattercarpet" } ], "scattergeo": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergeo" } ], "scattergl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattergl" } ], "scattermapbox": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scattermapbox" } ], "scatterpolar": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolar" } ], "scatterpolargl": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterpolargl" } ], "scatterternary": [ { "marker": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "type": "scatterternary" } ], "surface": [ { "colorbar": { "outlinewidth": 0, "ticks": "" }, "colorscale": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "type": "surface" } ], "table": [ { "cells": { "fill": { "color": "#EBF0F8" }, "line": { "color": "white" } }, "header": { "fill": { "color": "#C8D4E3" }, "line": { "color": "white" } }, "type": "table" } ] }, "layout": { "annotationdefaults": { "arrowcolor": "#2a3f5f", "arrowhead": 0, "arrowwidth": 1 }, "autotypenumbers": "strict", "coloraxis": { "colorbar": { "outlinewidth": 0, "ticks": "" } }, "colorscale": { "diverging": [ [ 0, "#8e0152" ], [ 0.1, "#c51b7d" ], [ 0.2, "#de77ae" ], [ 0.3, "#f1b6da" ], [ 0.4, "#fde0ef" ], [ 0.5, "#f7f7f7" ], [ 0.6, "#e6f5d0" ], [ 0.7, "#b8e186" ], [ 0.8, "#7fbc41" ], [ 0.9, "#4d9221" ], [ 1, "#276419" ] ], "sequential": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ], "sequentialminus": [ [ 0, "#0d0887" ], [ 0.1111111111111111, "#46039f" ], [ 0.2222222222222222, "#7201a8" ], [ 0.3333333333333333, "#9c179e" ], [ 0.4444444444444444, "#bd3786" ], [ 0.5555555555555556, "#d8576b" ], [ 0.6666666666666666, "#ed7953" ], [ 0.7777777777777778, "#fb9f3a" ], [ 0.8888888888888888, "#fdca26" ], [ 1, "#f0f921" ] ] }, "colorway": [ "#636efa", "#EF553B", "#00cc96", "#ab63fa", "#FFA15A", "#19d3f3", "#FF6692", "#B6E880", "#FF97FF", "#FECB52" ], "font": { "color": "#2a3f5f" }, "geo": { "bgcolor": "white", "lakecolor": "white", "landcolor": "#E5ECF6", "showlakes": true, "showland": true, "subunitcolor": "white" }, "hoverlabel": { "align": "left" }, "hovermode": "closest", "mapbox": { "style": "light" }, "paper_bgcolor": "white", "plot_bgcolor": "#E5ECF6", "polar": { "angularaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "radialaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "scene": { "xaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "yaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" }, "zaxis": { "backgroundcolor": "#E5ECF6", "gridcolor": "white", "gridwidth": 2, "linecolor": "white", "showbackground": true, "ticks": "", "zerolinecolor": "white" } }, "shapedefaults": { "line": { "color": "#2a3f5f" } }, "ternary": { "aaxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "baxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" }, "bgcolor": "#E5ECF6", "caxis": { "gridcolor": "white", "linecolor": "white", "ticks": "" } }, "title": { "x": 0.05 }, "xaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 }, "yaxis": { "automargin": true, "gridcolor": "white", "linecolor": "white", "ticks": "", "title": { "standoff": 15 }, "zerolinecolor": "white", "zerolinewidth": 2 } } }, "xaxis": { "anchor": "y", "domain": [ 0, 1 ], "title": { "text": "total_bill" } }, "yaxis": { "anchor": "x", "domain": [ 0, 1 ], "title": { "text": "count" } } } }, "text/html": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df = px.data.tips()\n", "fig = px.histogram(df, x=\"total_bill\")\n", "fig.show()" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] } ], "metadata": { "kernelspec": { "display_name": "data-expressions-XOHyUNvQ-py3.10", "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.10.8" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }