{ "cells": [ { "cell_type": "markdown", "id": "a0e367b4", "metadata": {}, "source": [ "(quickstart-df)=\n", "\n", "# Quickstart: Data Frames\n", "\n", "This quickstart provides a quick walkthrough of the `Meerkat` data frame, which allows users to interact with unstructured data alongside standard tabular data." ] }, { "cell_type": "code", "execution_count": 1, "id": "3cab2328", "metadata": {}, "outputs": [], "source": [ "import os\n", "import meerkat as mk\n", "import numpy as np" ] }, { "cell_type": "markdown", "id": "980b84dc", "metadata": {}, "source": [ "## 💾 Downloading the data\n", "First, we'll download some data to explore. We're going to use the [Imagenette dataset](https://github.com/fastai/imagenette#image%E7%BD%91), a small subset of the original [ImageNet](https://www.image-net.org/update-mar-11-2021.php). This dataset is made up of 10 classes (e.g. \"garbage truck\", \"gas pump\", \"golf ball\").\n", "- Download time: < 1 minute\n", "- Download size: 130M\n", "\n", "In addition to downloading the data, `download_imagnette` prepares a CSV, `imagenette.csv`, with a row for each image." ] }, { "cell_type": "code", "execution_count": 2, "id": "21f2f799", "metadata": {}, "outputs": [ { "data": { "application/vnd.jupyter.widget-view+json": { "model_id": "7e8b2044cad24e29bba79ae8544bbf84", "version_major": 2, "version_minor": 0 }, "text/plain": [ "Downloading: 0%| | 0.00/99.0M [00:00\n", " \n", " \n", " \n", " label\n", " split\n", " img_path\n", " img\n", " \n", " \n", " \n", " \n", " 0\n", " cassette player\n", " train\n", " train/n02979186/n02979186_9036.JPEG\n", " \n", " \n", " \n", " 1\n", " cassette player\n", " train\n", " train/n02979186/n02979186_11957.JPEG\n", " \n", " \n", " \n", " 2\n", " cassette player\n", " train\n", " train/n02979186/n02979186_9715.JPEG\n", " \n", " \n", " \n", " 3\n", " cassette player\n", " train\n", " train/n02979186/n02979186_21736.JPEG\n", " \n", " \n", " \n", " 4\n", " cassette player\n", " train\n", " train/n02979186/ILSVRC2012_val_00046953.JPEG\n", " \n", " \n", " \n", " ...\n", " ...\n", " ...\n", " ...\n", " ...\n", " \n", " \n", " 13389\n", " gas pump\n", " valid\n", " val/n03425413/n03425413_17521.JPEG\n", " \n", " \n", " \n", " 13390\n", " gas pump\n", " valid\n", " val/n03425413/n03425413_20711.JPEG\n", " \n", " \n", " \n", " 13391\n", " gas pump\n", " valid\n", " val/n03425413/n03425413_19050.JPEG\n", " \n", " \n", " \n", " 13392\n", " gas pump\n", " valid\n", " val/n03425413/n03425413_13831.JPEG\n", " \n", " \n", " \n", " 13393\n", " gas pump\n", " valid\n", " val/n03425413/n03425413_1242.JPEG\n", " \n", " \n", " \n", "" ], "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "# Create a `DataFrame`\n", "df = mk.from_csv(\"./downloads/imagenette2-160/imagenette.csv\")\n", "\n", "# Create an `ImageColumn`` and add it to the `DataFrame`\n", "df[\"img\"] = mk.image(\n", " df[\"img_path\"], \n", " base_dir=os.path.join(dataset_dir, \"imagenette2-160\")\n", ")\n", "df" ] }, { "cell_type": "markdown", "id": "75e36222", "metadata": {}, "source": [ "The call to `head` shows the first few rows in the `DataFrame`. You can see that there are a few metadata columns, as well as the \"img\" column we added in.\n", "\n", "## 🗂 Selecting data\n", "*For more information see the user guide section on {ref}`guide/dataframe/selection`.*\n", "\n", "When we create an `ImageColumn` we don't load the images into memory. Instead, `ImageColumn` keeps track of all those filepaths we passed in and only loads the images when they are needed. \n", "\n", "When we select a row of the `ImageColumn`, we get an instance `FileCell` back. A `FileCell` is an object that holds everything we need to materialize the cell (e.g. the filepath to the image and the loading function), but stops just short of doing so." ] }, { "cell_type": "code", "execution_count": 5, "id": "49427d88", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Indexing the `ImageColumn` returns an object of type: .\n" ] } ], "source": [ "img_cell = df[\"img\"][0]\n", "print(f\"Indexing the `ImageColumn` returns an object of type: {type(img_cell)}.\")" ] }, { "cell_type": "markdown", "id": "fa5c4e99", "metadata": {}, "source": [ "To actually materialize the image, we simply call the cell." ] }, { "cell_type": "code", "execution_count": 6, "id": "27cef896", "metadata": {}, "outputs": [ { "data": { "image/png": "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", "text/plain": [ "" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "img = img_cell()\n", "img" ] }, { "cell_type": "markdown", "id": "f83e9ef4", "metadata": {}, "source": [ "We can subselect a **batch** of images by indexing with a slice. Notice that this returns a smaller {class}`~meerkat.DataFrame`." ] }, { "cell_type": "code", "execution_count": 7, "id": "e9c2479e", "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "Indexing a slice of the `ImageColumn` returns a: .\n" ] }, { "data": { "text/html": [ "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
(FileColumn)
0
1
2
" ], "text/plain": [ "column([FileCell(fn=<...7f9ca8184b50>), FileCell(fn=<...7f9ca8184b50>), FileCell(fn=<...7f9ca8184b50>)], backend=FileColumn" ] }, "execution_count": 7, "metadata": {}, "output_type": "execute_result" } ], "source": [ "imgs = df[\"img\"][1:4]\n", "print(f\"Indexing a slice of the `ImageColumn` returns a: {type(imgs)}.\")\n", "imgs" ] }, { "cell_type": "markdown", "id": "c31224e4", "metadata": {}, "source": [ "The whole batch of images can be loaded together by calling the column. \n", "```\n", "imgs();\n", "```\n", "\n", "One can load multiple rows using any one of following indexing schemes:\n", "- **Slice indexing**: _e.g._ `column[4:10]`\n", "- **Integer array indexing**: _e.g._ `column[[0, 4, 6, 11]]`\n", "- **Boolean array indexing**: _e.g._ `column[np.array([True, False, False ..., True, False])]`\n", "\n", "### 📎 _Aside_: `ImageColumn` under the hood, `DeferredColumn`.\n", "\n", "If you check out the implementation of `ImageColumn` (at [meerkat/column/image_column.py](https://github.com/HazyResearch/meerkat/blob/main/meerkat/column/image_column.py)), you'll notice that it's a super simple subclass of `DeferredColumn`. \n", "\n", "_What's a `DeferredColumn`?_\n", "In `meerkat`, high-dimensional data types like images and videos are typically stored in a `DeferredColumn`. A `DeferredColumn` wraps around another column and lazily applies a function to it's content as it is indexed. Consider the following example, where we create a simple `meerkat` column..." ] }, { "cell_type": "code", "execution_count": 8, "id": "fbcdc6f2", "metadata": {}, "outputs": [], "source": [ " col = mk.column([0,1,2])" ] }, { "cell_type": "markdown", "id": "bfe0f28a", "metadata": {}, "source": [ "...and wrap it in a deferred column.\n", "```\n", " dcol = col.defer(fn=lambda x: x + 10)\n", " dcol[1]() # the function is only called at this point!\n", "```\n", "Critically, the function inside a lambda column is only called at the time the column is called! This is very useful for columns with large data types that we don't want to load all into memory at once. For example, we could create a `DeferredColumn` that lazily loads images...\n", "```\n", " >>> filepath_col = mk.PandasSeriesColumn([\"path/to/image0.jpg\", ...])\n", " >>> img_col = filepath.defer(lambda x: load_image(x))\n", "```\n", "An `ImageColumn` is a just a `DeferredColumn` like this one, with a few more bells and whistles!\n", "\n", "## 🛠 Applying operations over the DataFrame.\n", "\n", "When analyzing data, we often perform operations on each example in our dataset (e.g. compute a model's prediction on each example, tokenize each sentence, compute a model's embedding for each example) and store them. The `DataFrame` makes it easy to perform these operations: \n", "- Produce new columns (via `DataFrame.map`)\n", "- Produce new columns and store the columns alongside the original data (via `DataFrame.update`)\n", "- Extract an important subset of the datset (via `DataFrame.filter`). \n", "\n", "Under the hood, dataloading is multiprocessed so that costly I/O doesn't bottleneck our computation.\n", "\n", "Let's start by filtering the `DataFrame` down to the examples in the validation set." ] }, { "cell_type": "code", "execution_count": 9, "id": "55aef16b", "metadata": {}, "outputs": [], "source": [ "valid_df = df[df[\"split\"] == \"valid\"]" ] }, { "cell_type": "markdown", "id": "15bd8702", "metadata": {}, "source": [ "### 🫐 Using `DataFrame.map` to compute average intensity of the blue color channel in the images.\n", "\n", "To demonstrate the utility of the `map` operation, we'll explore the relationship between the \"blueness\" of an image and the class of the image. \n", "\n", "We'll quantify the \"blueness\" of each image by simply computing the mean intensity of the blue color channel. This can be accomplished with a simple `map` operation over the `DataFrame`:" ] }, { "cell_type": "code", "execution_count": 10, "id": "32cd4aa5", "metadata": {}, "outputs": [], "source": [ "blue_col = valid_df.map(\n", " lambda img: np.array(img)[:, :, 2].mean(), \n", " num_workers=2\n", ")\n", "\n", "# Add the intensities as a new column in the `DataFrame` \n", "valid_df[\"avg_blue\"] = blue_col" ] }, { "cell_type": "markdown", "id": "7ef51694", "metadata": {}, "source": [ "### 🪂 vs. ⛳️\n", "Next, we'll explore the relationship between blueness and the class label of the image. To do so, we'll compare the blue intensity distribution of images labeled \"parachute\" to the distribution of of images labeled \"golf ball\".\n", "Using the [`seaborn`](https://seaborn.pydata.org/installing.html) plotting package and our `DataFrame`, this can be accomplished in one line:" ] }, { "cell_type": "code", "execution_count": 11, "id": "a14aea38", "metadata": {}, "outputs": [ { "name": "stderr", "output_type": "stream", "text": [ "/home/runner/work/meerkat/meerkat/meerkat/dataframe.py:901: UserWarning: Could not convert column img of type , it will be dropped from the output.\n", " warnings.warn(\n" ] }, { "data": { "text/plain": [ "" ] }, "execution_count": 11, "metadata": {}, "output_type": "execute_result" }, { "data": { "image/png": "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", "text/plain": [ "
" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "## OPTIONAL: this cell requires the seaborn dependency: https://seaborn.pydata.org/installing.html \n", "import seaborn as sns\n", "\n", "plot_df = valid_df[np.isin(valid_df[\"label\"], [\"golf ball\", \"parachute\"])]\n", "sns.displot(\n", " data=plot_df.to_pandas(), \n", " x=\"avg_blue\", \n", " hue=\"label\", \n", " height=3, \n", " aspect=2\n", ")" ] }, { "cell_type": "code", "execution_count": 12, "id": "6f3dc1f5", "metadata": {}, "outputs": [ { "data": { "text/plain": [ "FileCell(fn=)" ] }, "execution_count": 12, "metadata": {}, "output_type": "execute_result" } ], "source": [ "valid_df[\"img\"][int(np.argmax(valid_df[\"avg_blue\"]))]" ] }, { "cell_type": "markdown", "id": "ef61a0d6", "metadata": {}, "source": [ "## 💾 Writing a `DataFrame` to disk. \n", "Finally, we can write the updated `DataFrame` to disk for later use." ] }, { "cell_type": "code", "execution_count": 13, "id": "61d8705c", "metadata": {}, "outputs": [], "source": [ "valid_df.write(os.path.join(dataset_dir, \"valid_df\"))" ] }, { "cell_type": "code", "execution_count": 14, "id": "97f6a240", "metadata": {}, "outputs": [], "source": [ "valid_df = mk.read(os.path.join(dataset_dir, \"valid_df\"))" ] } ], "metadata": { "file_format": "mystnb", "kernelspec": { "display_name": "python3", "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.9.17" }, "source_map": [ 5, 13, 17, 26, 32, 36, 40, 50, 62, 71, 74, 77, 80, 83, 87, 105, 107, 130, 132, 140, 148, 154, 168, 170, 176, 180 ], "widgets": { "application/vnd.jupyter.widget-state+json": { "state": { "1566be8159bb4cbdac03174484956dd0": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "FloatProgressModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "FloatProgressModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "ProgressView", "bar_style": "success", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_5f647a36bbec417d8f0483ef0eb6610e", "max": 99003388.0, "min": 0.0, "orientation": "horizontal", "style": "IPY_MODEL_31f38e8e764947cab875f55dd82f205e", "tabbable": null, "tooltip": null, "value": 99003388.0 } }, "31f38e8e764947cab875f55dd82f205e": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "ProgressStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "ProgressStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "bar_color": null, "description_width": "" } }, "5769b06e9bed489388896fc01dd0b133": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "594d9864be874976b3f7880b930e4c6c": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "5f647a36bbec417d8f0483ef0eb6610e": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "7660c2f60e0c4341b020fd908a082309": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "7e8b2044cad24e29bba79ae8544bbf84": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HBoxModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HBoxModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HBoxView", "box_style": "", "children": [ "IPY_MODEL_ae22ebc288b0482687930df91bf44385", "IPY_MODEL_1566be8159bb4cbdac03174484956dd0", "IPY_MODEL_e188978339384512b0846af38f1ac5ae" ], "layout": "IPY_MODEL_b352d6a448514850ad67fa5e42410ec2", "tabbable": null, "tooltip": null } }, "a5fd1ffff5b243aeafaf40725bbd28b2": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLStyleModel", "state": { "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLStyleModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "StyleView", "background": null, "description_width": "", "font_size": null, "text_color": null } }, "ae22ebc288b0482687930df91bf44385": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_594d9864be874976b3f7880b930e4c6c", "placeholder": "​", "style": "IPY_MODEL_a5fd1ffff5b243aeafaf40725bbd28b2", "tabbable": null, "tooltip": null, "value": "Downloading: 100%" } }, "b352d6a448514850ad67fa5e42410ec2": { "model_module": "@jupyter-widgets/base", "model_module_version": "2.0.0", "model_name": "LayoutModel", "state": { "_model_module": "@jupyter-widgets/base", "_model_module_version": "2.0.0", "_model_name": "LayoutModel", "_view_count": null, "_view_module": "@jupyter-widgets/base", "_view_module_version": "2.0.0", "_view_name": "LayoutView", "align_content": null, "align_items": null, "align_self": null, "border_bottom": null, "border_left": null, "border_right": null, "border_top": null, "bottom": null, "display": null, "flex": null, "flex_flow": null, "grid_area": null, "grid_auto_columns": null, "grid_auto_flow": null, "grid_auto_rows": null, "grid_column": null, "grid_gap": null, "grid_row": null, "grid_template_areas": null, "grid_template_columns": null, "grid_template_rows": null, "height": null, "justify_content": null, "justify_items": null, "left": null, "margin": null, "max_height": null, "max_width": null, "min_height": null, "min_width": null, "object_fit": null, "object_position": null, "order": null, "overflow": null, "padding": null, "right": null, "top": null, "visibility": null, "width": null } }, "e188978339384512b0846af38f1ac5ae": { "model_module": "@jupyter-widgets/controls", "model_module_version": "2.0.0", "model_name": "HTMLModel", "state": { "_dom_classes": [], "_model_module": "@jupyter-widgets/controls", "_model_module_version": "2.0.0", "_model_name": "HTMLModel", "_view_count": null, "_view_module": "@jupyter-widgets/controls", "_view_module_version": "2.0.0", "_view_name": "HTMLView", "description": "", "description_allow_html": false, "layout": "IPY_MODEL_7660c2f60e0c4341b020fd908a082309", "placeholder": "​", "style": "IPY_MODEL_5769b06e9bed489388896fc01dd0b133", "tabbable": null, "tooltip": null, "value": " 99.0M/99.0M [00:03<00:00, 36.8MB/s]" } } }, "version_major": 2, "version_minor": 0 } } }, "nbformat": 4, "nbformat_minor": 5 }