{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Tidy Data\n", "\n", "[tidy data]\n", "\n", "[tidy data]: https://vita.had.co.nz/papers/tidy-data.pdf" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "> [...], a stack of elements is a common abstract data type used in computing. We would not think ‘to add’ two stacks as we would two integers.\n", ">> Jeanette Wing - [Computational thinking and thinking about computing][computational thinking]\n", "\n", "\n", "[computational thinking]: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2696102/" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "> [...], a stack of elements is a common abstract data type used in computing. We would not think ‘to add’ two stacks as we would two integers.\n", ">> Jeanette Wing - [Computational thinking and thinking about computing][computational thinking]\n", "\n", "\n", "[computational thinking]: https://www.ncbi.nlm.nih.gov/pmc/articles/PMC2696102/\n" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "A modernist style of notebook programming persists where documents are written as if programs are\n", "starting for nothing. Meanwhile, authors of R programming language tend to begin with the assumption\n", "that data exists and so does code. Notebook are a powerful substrate for working with data and\n", "describing the logic behind different permutations.\n", "\n", "pidgy was designed to weave projections of tabular into a computational documentation. Specifically, \n", "we are concerned with the DataFrame, a popular tidy data abstraction that serves as a first\n", "class data structure in scientific computing." ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "A modernist style of notebook programming persists where documents are written as if programs are\n", "starting for nothing. Meanwhile, authors of R programming language tend to begin with the assumption\n", "that data exists and so does code. Notebook are a powerful substrate for working with data and\n", "describing the logic behind different permutations.\n", "\n", "pidgy was designed to weave projections of tabular into a computational documentation. Specifically, \n", "we are concerned with the DataFrame, a popular tidy data abstraction that serves as a first\n", "class data structure in scientific computing." ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ " import pandas as 🐼" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ " import pandas as 🐼" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "
" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "image/png": "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\n", "text/plain": [ "
" ] }, "metadata": { "needs_background": "light" }, "output_type": "display_data" }, { "data": { "text/markdown": [ "The figure above illustrates the information in `df`.\n", "\n", "A high level numeric project of this data's statistics are:\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
abcd
count10.0000010.0000010.0000010.00000
mean4.500005.500006.500007.50000
std3.027653.027653.027653.02765
min0.000001.000002.000003.00000
25%2.250003.250004.250005.25000
50%4.500005.500006.500007.50000
75%6.750007.750008.750009.75000
max9.0000010.0000011.0000012.00000
\n", "\n", "The statistics were created using measurements that look like the following data:\n", "\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
abcd
00123
11234
\n", " \n", " df = 🐼.DataFrame([range(i, i+4) for i in range(10)], columns=list('abcd'))\n", " df.plot();" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "The figure above illustrates the information in `df`.\n", "\n", "A high level numeric project of this data's statistics are:\n", "\n", "{{df.describe().to_html()}}\n", "\n", "The statistics were created using measurements that look like the following data:\n", "\n", "{{df.head(2).to_html()}}\n", " \n", " df = 🐼.DataFrame([range(i, i+4) for i in range(10)], columns=list('abcd'))\n", " df.plot();" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "
" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "
" ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "In technical writing we need to consider existing conventions like:\n", "* Figures above captions\n", "* Table below captions\n", "\n", "It still remains to be seen where code canonically fits in reference to figures and tables.\n", "\n", "[Why should a table caption be placed above the table?]\n", "\n", "[Why should a table caption be placed above the table?]: https://tex.stackexchange.com/questions/3243/why-should-a-table-caption-be-placed-above-the-table" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "In technical writing we need to consider existing conventions like:\n", "* Figures above captions\n", "* Table below captions\n", "\n", "It still remains to be seen where code canonically fits in reference to figures and tables.\n", "\n", "[Why should a table caption be placed above the table?]\n", "\n", "[Why should a table caption be placed above the table?]: https://tex.stackexchange.com/questions/3243/why-should-a-table-caption-be-placed-above-the-table" ] }, { "cell_type": "code", "execution_count": 9, "metadata": {}, "outputs": [ { "data": { "text/markdown": [ "[notebook war]\n", "\n", "[notebook war]: https://yihui.org/en/2018/09/notebook-war/" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "[notebook war]\n", "\n", "[notebook war]: https://yihui.org/en/2018/09/notebook-war/" ] } ], "metadata": { "kernelspec": { "display_name": "pidgy 3", "language": "python", "name": "pidgy" }, "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": 4 }