{"cells":[{"block_group":"05301af52179473fa5d894f0d2cf565f","cell_type":"markdown","execution_count":null,"metadata":{"deepnote_cell_height":271.125,"tags":[],"cell_id":"05301af52179473fa5d894f0d2cf565f","deepnote_block_group":"05301af52179473fa5d894f0d2cf565f","deepnote_cell_type":"markdown","deepnote_sorting_key":"0","deepnote_source":"![](./template-cover.jpg)"},"source":"![](./template-cover.jpg)"},{"block_group":"bf3b460953254cdf8cf7b731a8873dda","cell_type":"markdown","execution_count":null,"metadata":{"deepnote_cell_height":201.59375,"tags":[],"cell_id":"bf3b460953254cdf8cf7b731a8873dda","deepnote_block_group":"bf3b460953254cdf8cf7b731a8873dda","deepnote_cell_type":"markdown","deepnote_sorting_key":"1","deepnote_source":"# Fetch OneDrive files in Deepnote\n\nThis template shows you how to fetch, analyze and visualize files from OneDrive. The easiest way to do this is to share the file to be publicly accessible with a link. We're using this As an example, we're using [this sales pipeline generated with dummy data](https://1drv.ms/x/s!AjP7y6eiYDDSafV7BusEaDHrI0o?e=cL0Fqi). Click \"Run notebook\" at the top of this window to see it in action.\n\n_Want to fetch your own files?_ Follow the next steps at the end of the notebook 👇"},"source":"# Fetch OneDrive files in Deepnote\n\nThis template shows you how to fetch, analyze and visualize files from OneDrive. The easiest way to do this is to share the file to be publicly accessible with a link. We're using this As an example, we're using [this sales pipeline generated with dummy data](https://1drv.ms/x/s!AjP7y6eiYDDSafV7BusEaDHrI0o?e=cL0Fqi). Click \"Run notebook\" at the top of this window to see it in action.\n\n_Want to fetch your own files?_ Follow the next steps at the end of the notebook 👇"},{"block_group":"8762f7cad5b945daa453d2de8e02ab51","cell_type":"code","execution_count":null,"metadata":{"execution_start":1656705227834,"execution_millis":0,"source_hash":"1b603cf0","tags":[],"cell_id":"8762f7cad5b945daa453d2de8e02ab51","deepnote_to_be_reexecuted":false,"deepnote_block_group":"8762f7cad5b945daa453d2de8e02ab51","deepnote_cell_type":"code","deepnote_sorting_key":"2","deepnote_content_hash":"1b603cf0","deepnote_execution_started_at":"2022-07-01T19:53:47.834Z","deepnote_execution_finished_at":"2022-07-01T19:53:47.834Z","deepnote_source":"import pandas as pd\nimport base64"},"outputs":[],"source":"import pandas as pd\nimport base64"},{"block_group":"c3dc4cbdf295441ab959791c87776f70","cell_type":"markdown","execution_count":null,"metadata":{"deepnote_cell_height":130.796875,"tags":[],"cell_id":"c3dc4cbdf295441ab959791c87776f70","deepnote_block_group":"c3dc4cbdf295441ab959791c87776f70","deepnote_cell_type":"markdown","deepnote_sorting_key":"3","deepnote_source":"## Fetch a file from OneDrive\n\nOneDrive allows us to fetch publicly shared files by taking a share URL and passing it to the [`shares_get` OneDrive API](https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/shares_get). The function `get_onedrive_download` creates the URL to download any shared file."},"source":"## Fetch a file from OneDrive\n\nOneDrive allows us to fetch publicly shared files by taking a share URL and passing it to the [`shares_get` OneDrive API](https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/shares_get). The function `get_onedrive_download` creates the URL to download any shared file."},{"block_group":"3cab40c03c894fcd9af4b90e983bbcee","cell_type":"code","execution_count":null,"metadata":{"execution_start":1656705227835,"execution_millis":2,"source_hash":"f25fe75e","tags":[],"cell_id":"3cab40c03c894fcd9af4b90e983bbcee","deepnote_to_be_reexecuted":false,"deepnote_block_group":"3cab40c03c894fcd9af4b90e983bbcee","deepnote_cell_type":"code","deepnote_sorting_key":"4","deepnote_content_hash":"f25fe75e","deepnote_execution_started_at":"2022-07-01T19:53:47.835Z","deepnote_execution_finished_at":"2022-07-01T19:53:47.837Z","deepnote_source":"# Convert a share link to a direct download\n# See https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/shares_get\ndef get_onedrive_download(share_link):\n base64_link_bytes = base64.b64encode(bytes(share_link, 'utf-8'))\n base64_link_string = base64_link_bytes.decode('utf-8').replace('/','_').replace('+','-').rstrip(\"=\")\n return f\"https://api.onedrive.com/v1.0/shares/u!{base64_link_string}/root/content\"\n\nONEDRIVE_SHARE_LINK = \"https://1drv.ms/x/s!AjP7y6eiYDDSafV7BusEaDHrI0o?e=cL0Fqi\"\n\nget_onedrive_download(ONEDRIVE_SHARE_LINK)"},"outputs":[{"output_type":"execute_result","execution_count":2,"data":{"text/plain":"'https://api.onedrive.com/v1.0/shares/u!aHR0cHM6Ly8xZHJ2Lm1zL3gvcyFBalA3eTZlaVlERFNhZlY3QnVzRWFESHJJMG8_ZT1jTDBGcWk/root/content'"},"metadata":{}}],"source":"# Convert a share link to a direct download\n# See https://docs.microsoft.com/en-us/onedrive/developer/rest-api/api/shares_get\ndef get_onedrive_download(share_link):\n base64_link_bytes = base64.b64encode(bytes(share_link, 'utf-8'))\n base64_link_string = base64_link_bytes.decode('utf-8').replace('/','_').replace('+','-').rstrip(\"=\")\n return f\"https://api.onedrive.com/v1.0/shares/u!{base64_link_string}/root/content\"\n\nONEDRIVE_SHARE_LINK = \"https://1drv.ms/x/s!AjP7y6eiYDDSafV7BusEaDHrI0o?e=cL0Fqi\"\n\nget_onedrive_download(ONEDRIVE_SHARE_LINK)"},{"block_group":"3695ddd6234a4a1a868d60e7bed6d7a7","cell_type":"markdown","execution_count":null,"metadata":{"deepnote_cell_height":74.796875,"tags":[],"cell_id":"3695ddd6234a4a1a868d60e7bed6d7a7","deepnote_block_group":"3695ddd6234a4a1a868d60e7bed6d7a7","deepnote_cell_type":"markdown","deepnote_sorting_key":"5","deepnote_source":"We then use pandas to read the URL into a dataframe directly. Deepnote summarizes and paginates dataframes automatically. You can filter and sort each column to drill into the data."},"source":"We then use pandas to read the URL into a dataframe directly. Deepnote summarizes and paginates dataframes automatically. You can filter and sort each column to drill into the data."},{"block_group":"abdca7ab56004ae7ae7863240ed784c4","cell_type":"code","execution_count":null,"metadata":{"allow_embed":"output","execution_start":1656705227835,"execution_millis":1937,"source_hash":"5a58390f","tags":[],"cell_id":"abdca7ab56004ae7ae7863240ed784c4","owner_user_id":"fb4d863f-e14b-4cec-a271-8335944bc775","deepnote_to_be_reexecuted":false,"deepnote_block_group":"abdca7ab56004ae7ae7863240ed784c4","deepnote_cell_type":"code","deepnote_sorting_key":"6","deepnote_content_hash":"5a58390f","deepnote_execution_started_at":"2022-07-01T19:53:47.835Z","deepnote_execution_finished_at":"2022-07-01T19:53:49.772Z","deepnote_source":"df = pd.read_excel(get_onedrive_download(ONEDRIVE_SHARE_LINK))\ndf"},"outputs":[{"output_type":"execute_result","execution_count":3,"data":{"application/vnd.deepnote.dataframe.v3+json":{"column_count":4,"row_count":1658,"columns":[{"name":"Name","dtype":"object","stats":{"unique_count":1658,"nan_count":0,"categories":[{"name":"Victor Larson","count":1},{"name":"Consuela Lowery","count":1},{"name":"1656 others","count":1656}]}},{"name":"Status","dtype":"object","stats":{"unique_count":6,"nan_count":0,"categories":[{"name":"Closed","count":445},{"name":"Lead","count":367},{"name":"4 others","count":846}]}},{"name":"Priority","dtype":"object","stats":{"unique_count":3,"nan_count":0,"categories":[{"name":"Medium","count":849},{"name":"Low","count":504},{"name":"High","count":305}]}},{"name":"Estimated Value","dtype":"int64","stats":{"unique_count":73,"nan_count":0,"min":"300","max":"8100","histogram":[{"bin_start":300,"bin_end":1080,"count":483},{"bin_start":1080,"bin_end":1860,"count":346},{"bin_start":1860,"bin_end":2640,"count":446},{"bin_start":2640,"bin_end":3420,"count":88},{"bin_start":3420,"bin_end":4200,"count":53},{"bin_start":4200,"bin_end":4980,"count":67},{"bin_start":4980,"bin_end":5760,"count":93},{"bin_start":5760,"bin_end":6540,"count":65},{"bin_start":6540,"bin_end":7320,"count":11},{"bin_start":7320,"bin_end":8100,"count":6}]}},{"name":"_deepnote_index_column","dtype":"int64"}],"rows":[{"Name":"Victor Larson","Status":"Closed","Priority":"Low","Estimated Value":900,"_deepnote_index_column":0},{"Name":"Consuela Lowery","Status":"Lead","Priority":"Medium","Estimated Value":2500,"_deepnote_index_column":1},{"Name":"Chanelle Klein","Status":"Proposal","Priority":"Medium","Estimated Value":1800,"_deepnote_index_column":2},{"Name":"Gregg Harper","Status":"Closed","Priority":"High","Estimated Value":3500,"_deepnote_index_column":3},{"Name":"Walter Hobbs","Status":"Lead","Priority":"Low","Estimated Value":800,"_deepnote_index_column":4},{"Name":"Zada Cohen","Status":"Lead","Priority":"Medium","Estimated Value":1700,"_deepnote_index_column":5},{"Name":"Gary Ford","Status":"Qualified","Priority":"Low","Estimated Value":600,"_deepnote_index_column":6},{"Name":"Hunter Becker","Status":"Qualified","Priority":"Medium","Estimated Value":2800,"_deepnote_index_column":7},{"Name":"Shelton Bender","Status":"Lead","Priority":"Low","Estimated Value":800,"_deepnote_index_column":8},{"Name":"Billie Bauer","Status":"Qualified","Priority":"Low","Estimated Value":600,"_deepnote_index_column":9}]},"text/plain":" Name Status Priority Estimated Value\n0 Victor Larson Closed Low 900\n1 Consuela Lowery Lead Medium 2500\n2 Chanelle Klein Proposal Medium 1800\n3 Gregg Harper Closed High 3500\n4 Walter Hobbs Lead Low 800\n... ... ... ... ...\n1653 Darron Buckley Lead Medium 2100\n1654 Hunter Robertson Closed Medium 1800\n1655 Clint Foley Closed Medium 1600\n1656 Jonathan Best Qualified Medium 2200\n1657 Emile Kramer Qualified Low 1100\n\n[1658 rows x 4 columns]","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
NameStatusPriorityEstimated Value
0Victor LarsonClosedLow900
1Consuela LoweryLeadMedium2500
2Chanelle KleinProposalMedium1800
3Gregg HarperClosedHigh3500
4Walter HobbsLeadLow800
...............
1653Darron BuckleyLeadMedium2100
1654Hunter RobertsonClosedMedium1800
1655Clint FoleyClosedMedium1600
1656Jonathan BestQualifiedMedium2200
1657Emile KramerQualifiedLow1100
\n

1658 rows × 4 columns

\n
"},"metadata":{}}],"source":"df = pd.read_excel(get_onedrive_download(ONEDRIVE_SHARE_LINK))\ndf"},{"block_group":"83d98685e4734b61a9308011e2966e60","cell_type":"markdown","execution_count":null,"metadata":{"deepnote_cell_height":130.796875,"tags":[],"cell_id":"83d98685e4734b61a9308011e2966e60","deepnote_block_group":"83d98685e4734b61a9308011e2966e60","deepnote_cell_type":"markdown","deepnote_sorting_key":"7","deepnote_source":"## Analyze data with SQL\n\nWe can run queries against our dataframe using Deepnote's built-in SQL. [You can learn more about SQL blocks on our docs](https://docs.deepnote.com/features/sql-cells)."},"source":"## Analyze data with SQL\n\nWe can run queries against our dataframe using Deepnote's built-in SQL. [You can learn more about SQL blocks on our docs](https://docs.deepnote.com/features/sql-cells)."},{"block_group":"f0c9102e2ad94570ab3e02b9a9f9af6e","cell_type":"code","execution_count":null,"metadata":{"execution_start":1656705229593,"execution_millis":666,"source_hash":"9af2ada8","deepnote_variable_name":"filtered_df","sql_integration_id":"deepnote-dataframe-sql","tags":[],"cell_id":"f0c9102e2ad94570ab3e02b9a9f9af6e","deepnote_sql_source":"SELECT \n \"Estimated Value\",\n \"Priority\",\n \"Status\"\nFROM \n df\nWHERE\n NOT (\"Status\" = 'Closed' OR \"Status\" = 'Lost')","deepnote_to_be_reexecuted":false,"deepnote_block_group":"f0c9102e2ad94570ab3e02b9a9f9af6e","deepnote_cell_type":"sql","deepnote_sorting_key":"8","deepnote_content_hash":"9af2ada8","deepnote_execution_started_at":"2022-07-01T19:53:49.593Z","deepnote_execution_finished_at":"2022-07-01T19:53:50.259Z","deepnote_source":"SELECT \n \"Estimated Value\",\n \"Priority\",\n \"Status\"\nFROM \n df\nWHERE\n NOT (\"Status\" = 'Closed' OR \"Status\" = 'Lost')"},"outputs":[{"output_type":"execute_result","execution_count":4,"data":{"application/vnd.deepnote.dataframe.v3+json":{"column_count":3,"row_count":1053,"columns":[{"name":"Estimated Value","dtype":"int64","stats":{"unique_count":69,"nan_count":0,"min":"300","max":"8100","histogram":[{"bin_start":300,"bin_end":1080,"count":386},{"bin_start":1080,"bin_end":1860,"count":208},{"bin_start":1860,"bin_end":2640,"count":266},{"bin_start":2640,"bin_end":3420,"count":45},{"bin_start":3420,"bin_end":4200,"count":31},{"bin_start":4200,"bin_end":4980,"count":34},{"bin_start":4980,"bin_end":5760,"count":46},{"bin_start":5760,"bin_end":6540,"count":26},{"bin_start":6540,"bin_end":7320,"count":7},{"bin_start":7320,"bin_end":8100,"count":4}]}},{"name":"Priority","dtype":"object","stats":{"unique_count":3,"nan_count":0,"categories":[{"name":"Medium","count":497},{"name":"Low","count":406},{"name":"High","count":150}]}},{"name":"Status","dtype":"object","stats":{"unique_count":4,"nan_count":0,"categories":[{"name":"Lead","count":367},{"name":"Qualified","count":291},{"name":"2 others","count":395}]}},{"name":"_deepnote_index_column","dtype":"int64"}],"rows":[{"Estimated Value":2500,"Priority":"Medium","Status":"Lead","_deepnote_index_column":0},{"Estimated Value":1800,"Priority":"Medium","Status":"Proposal","_deepnote_index_column":1},{"Estimated Value":800,"Priority":"Low","Status":"Lead","_deepnote_index_column":2},{"Estimated Value":1700,"Priority":"Medium","Status":"Lead","_deepnote_index_column":3},{"Estimated Value":600,"Priority":"Low","Status":"Qualified","_deepnote_index_column":4},{"Estimated Value":2800,"Priority":"Medium","Status":"Qualified","_deepnote_index_column":5},{"Estimated Value":800,"Priority":"Low","Status":"Lead","_deepnote_index_column":6},{"Estimated Value":600,"Priority":"Low","Status":"Qualified","_deepnote_index_column":7},{"Estimated Value":1100,"Priority":"Low","Status":"Lead","_deepnote_index_column":8},{"Estimated Value":900,"Priority":"Low","Status":"Proposal","_deepnote_index_column":9}]},"text/plain":" Estimated Value Priority Status\n0 2500 Medium Lead\n1 1800 Medium Proposal\n2 800 Low Lead\n3 1700 Medium Lead\n4 600 Low Qualified\n... ... ... ...\n1048 2200 Medium Qualified\n1049 2200 Medium Negotiation\n1050 2100 Medium Lead\n1051 2200 Medium Qualified\n1052 1100 Low Qualified\n\n[1053 rows x 3 columns]","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
Estimated ValuePriorityStatus
02500MediumLead
11800MediumProposal
2800LowLead
31700MediumLead
4600LowQualified
............
10482200MediumQualified
10492200MediumNegotiation
10502100MediumLead
10512200MediumQualified
10521100LowQualified
\n

1053 rows × 3 columns

\n
"},"metadata":{}}],"source":"if '_dntk' in globals():\n _dntk.dataframe_utils.configure_dataframe_formatter('{}')\nelse:\n _deepnote_current_table_attrs = '{}'\n\nfiltered_df = _dntk.execute_sql(\n 'SELECT \\n \"Estimated Value\",\\n \"Priority\",\\n \"Status\"\\nFROM \\n df\\nWHERE\\n NOT (\"Status\" = \\'Closed\\' OR \"Status\" = \\'Lost\\')',\n 'SQL_DEEPNOTE_DATAFRAME_SQL',\n audit_sql_comment='',\n sql_cache_mode='cache_disabled',\n return_variable_type='dataframe'\n)\nfiltered_df"},{"block_group":"4a381d93bd0d43b399215b0bc9b40ad8","cell_type":"markdown","execution_count":null,"metadata":{"deepnote_cell_height":144.796875,"tags":[],"cell_id":"4a381d93bd0d43b399215b0bc9b40ad8","deepnote_block_group":"4a381d93bd0d43b399215b0bc9b40ad8","deepnote_cell_type":"markdown","deepnote_sorting_key":"9","deepnote_source":"## Visualize data\n\nDeepnote can visualize dataframes out-of-the-box. [You can learn more about chart blocks on our docs](https://docs.deepnote.com/features/chart-blocks).\n\nIf you want to do something more sophisticated, you can use visualization libraries like [Altair](https://deepnote.com/@allan-campopiano/Altair-42-8dafcd3e-bdad-45e9-b2ab-3572581ed41b) or [Plotly](https://deepnote.com/@deepnote/3D-network-visualisations-using-plotly-a18c5e37-a517-4b27-bfde-1fee94a5760f)."},"source":"## Visualize data\n\nDeepnote can visualize dataframes out-of-the-box. [You can learn more about chart blocks on our docs](https://docs.deepnote.com/features/chart-blocks).\n\nIf you want to do something more sophisticated, you can use visualization libraries like [Altair](https://deepnote.com/@allan-campopiano/Altair-42-8dafcd3e-bdad-45e9-b2ab-3572581ed41b) or [Plotly](https://deepnote.com/@deepnote/3D-network-visualisations-using-plotly-a18c5e37-a517-4b27-bfde-1fee94a5760f)."},{"block_group":"e5314e4571624d608d43b893d51510b0","cell_type":"code","execution_count":null,"metadata":{"execution_start":1656705229943,"execution_millis":348,"source_hash":"c5482e00","deepnote_variable_name":"filtered_df","deepnote_visualization_spec":{"data":{"name":"placeholder"},"mark":{"type":"bar","tooltip":true},"height":220,"$schema":"https://vega.github.io/schema/vega-lite/v4.json","autosize":{"type":"fit"},"encoding":{"x":{"bin":true,"sort":null,"type":"quantitative","field":"Estimated Value","scale":{"type":"linear","zero":false}},"y":{"sort":null,"type":"quantitative","field":"COUNT(*)","scale":{"type":"linear","zero":true},"aggregate":"count"},"color":{"sort":null,"type":"nominal","field":"Priority","scale":{"type":"linear","zero":false}}}},"cell_id":"e5314e4571624d608d43b893d51510b0","deepnote_to_be_reexecuted":false,"deepnote_block_group":"e5314e4571624d608d43b893d51510b0","deepnote_cell_type":"visualization","deepnote_sorting_key":"10","deepnote_content_hash":"c5482e00","deepnote_execution_started_at":"2022-07-01T19:53:49.943Z","deepnote_execution_finished_at":"2022-07-01T19:53:50.291Z","deepnote_source":""},"outputs":[{"output_type":"execute_result","execution_count":5,"data":{"text/html":"\n
\n","text/plain":"alt.Chart(...)"},"metadata":{}}],"source":"_dntk.DeepnoteChart(filtered_df, '{\"data\":{\"name\":\"placeholder\"},\"mark\":{\"type\":\"bar\",\"tooltip\":true},\"height\":220,\"$schema\":\"https://vega.github.io/schema/vega-lite/v4.json\",\"autosize\":{\"type\":\"fit\"},\"encoding\":{\"x\":{\"bin\":true,\"sort\":null,\"type\":\"quantitative\",\"field\":\"Estimated Value\",\"scale\":{\"type\":\"linear\",\"zero\":false}},\"y\":{\"sort\":null,\"type\":\"quantitative\",\"field\":\"COUNT(*)\",\"scale\":{\"type\":\"linear\",\"zero\":true},\"aggregate\":\"count\"},\"color\":{\"sort\":null,\"type\":\"nominal\",\"field\":\"Priority\",\"scale\":{\"type\":\"linear\",\"zero\":false}}}}', filters='[]')"},{"block_group":"9c7121d8eeb64ae4aeaefc727bef4d87","cell_type":"markdown","execution_count":null,"metadata":{"deepnote_cell_height":285.78125,"tags":[],"cell_id":"9c7121d8eeb64ae4aeaefc727bef4d87","deepnote_block_group":"9c7121d8eeb64ae4aeaefc727bef4d87","deepnote_cell_type":"markdown","deepnote_sorting_key":"11","deepnote_source":"### Next steps\n\nRather than use our data, you can fetch your own.\n\n1. **Create a share link to your file**. [Follow these instructions](https://support.microsoft.com/en-us/office/create-a-shareable-link-8257f6da-d5db-4207-a654-925644e3f35c) and make sure anyone with the link can at least **read** the file.\n1. **Change `ONEDRIVE_SHARE_LINK` to your share link**.\n1. **Click the \"Run notebook\" button at the top of this window**. All of your new code will run from top to bottom.\n1. **Share your notebook with your team**. You can even turn your charts [into a shareable dashboard](https://docs.deepnote.com/collaboration/publishing-a-notebook).\n\n_Want to know more about using Deepnote?_ [Check out or docs](https://docs.deepnote.com/).\n\nYou can safely delete this block (and any text block) once you're done with it."},"source":"### Next steps\n\nRather than use our data, you can fetch your own.\n\n1. **Create a share link to your file**. [Follow these instructions](https://support.microsoft.com/en-us/office/create-a-shareable-link-8257f6da-d5db-4207-a654-925644e3f35c) and make sure anyone with the link can at least **read** the file.\n1. **Change `ONEDRIVE_SHARE_LINK` to your share link**.\n1. **Click the \"Run notebook\" button at the top of this window**. All of your new code will run from top to bottom.\n1. **Share your notebook with your team**. You can even turn your charts [into a shareable dashboard](https://docs.deepnote.com/collaboration/publishing-a-notebook).\n\n_Want to know more about using Deepnote?_ [Check out or docs](https://docs.deepnote.com/).\n\nYou can safely delete this block (and any text block) once you're done with it."},{"block_group":"5e56f132b8284c408a24bde121f7546c","cell_type":"markdown","execution_count":null,"metadata":{"deepnote_cell_height":46,"tags":[],"cell_id":"5e56f132b8284c408a24bde121f7546c","owner_user_id":"865d966b-ed7a-4cb4-ba8d-890b4f98aa7e","deepnote_block_group":"5e56f132b8284c408a24bde121f7546c","deepnote_cell_type":"markdown","deepnote_sorting_key":"12","deepnote_source":""},"source":""},{"cell_type":"markdown","source":"\nCreated in deepnote.com\nCreated in Deepnote","metadata":{"created_in_deepnote_cell":true,"deepnote_cell_type":"markdown"}}],"metadata":{"deepnote_notebook_id":"858a28af459b43a4a736faf3e326ea35","deepnote_notebook_name":"notebook"},"nbformat":4,"nbformat_minor":0}