christopher/facets-overview
5
1{2 "cells": [3 {4 "cell_type": "code",5 "execution_count": 1,6 "id": "d5d0ea64",7 "metadata": {},8 "outputs": [9 {10 "data": {11 "text/html": [12 "<style>.container { width:95% !important; }</style>"13 ],14 "text/plain": [15 "<IPython.core.display.HTML object>"16 ]17 },18 "metadata": {},19 "output_type": "display_data"20 }21 ],22 "source": [23 "from IPython.core.display import display, HTML, Image\n",24 "display(HTML(\"<style>.container { width:95% !important; }</style>\"))\n",25 "%config IPCompleter.use_jedi=False"26 ]27 },28 {29 "cell_type": "code",30 "execution_count": 2,31 "id": "403c4b8a",32 "metadata": {},33 "outputs": [],34 "source": [35 "import pandas as pd\n",36 "from IPython.display import Markdown, display, HTML, IFrame\n",37 "from facets_overview.generic_feature_statistics_generator import GenericFeatureStatisticsGenerator\n",38 "import base64"39 ]40 },41 {42 "cell_type": "code",43 "execution_count": 3,44 "id": "1c48706a",45 "metadata": {},46 "outputs": [],47 "source": [48 "df = pd.read_csv('./adult.csv')"49 ]50 },51 {52 "cell_type": "code",53 "execution_count": 5,54 "id": "b512f166",55 "metadata": {},56 "outputs": [57 {58 "name": "stdout",59 "output_type": "stream",60 "text": [61 "<class 'pandas.core.frame.DataFrame'>\n",62 "RangeIndex: 32561 entries, 0 to 32560\n",63 "Data columns (total 15 columns):\n",64 " # Column Non-Null Count Dtype \n",65 "--- ------ -------------- ----- \n",66 " 0 age 32561 non-null int64 \n",67 " 1 workclass 32561 non-null object\n",68 " 2 fnlwgt 32561 non-null int64 \n",69 " 3 education 32561 non-null object\n",70 " 4 education.num 32561 non-null int64 \n",71 " 5 marital.status 32561 non-null object\n",72 " 6 occupation 32561 non-null object\n",73 " 7 relationship 32561 non-null object\n",74 " 8 race 32561 non-null object\n",75 " 9 sex 32561 non-null object\n",76 " 10 capital.gain 32561 non-null int64 \n",77 " 11 capital.loss 32561 non-null int64 \n",78 " 12 hours.per.week 32561 non-null int64 \n",79 " 13 native.country 32561 non-null object\n",80 " 14 income 32561 non-null object\n",81 "dtypes: int64(6), object(9)\n",82 "memory usage: 3.7+ MB\n"83 ]84 }85 ],86 "source": [87 "df.info()"88 ]89 },90 {91 "cell_type": "code",92 "execution_count": 4,93 "id": "fce8e9f4",94 "metadata": {},95 "outputs": [96 {97 "ename": "TypeError",98 "evalue": "string indices must be integers",99 "output_type": "error",100 "traceback": [101 "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m",102 "\u001b[0;31mTypeError\u001b[0m Traceback (most recent call last)",103 "\u001b[0;32m/tmp/ipykernel_28/1621212634.py\u001b[0m in \u001b[0;36m<module>\u001b[0;34m\u001b[0m\n\u001b[0;32m----> 1\u001b[0;31m \u001b[0mproto\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mGenericFeatureStatisticsGenerator\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mProtoFromDataFrames\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mdf\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 2\u001b[0m \u001b[0mprotostr\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mbase64\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mb64encode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0mproto\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mSerializeToString\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m.\u001b[0m\u001b[0mdecode\u001b[0m\u001b[0;34m(\u001b[0m\u001b[0;34m\"utf-8\"\u001b[0m\u001b[0;34m)\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 3\u001b[0m HTML_TEMPLATE = \"\"\"\n\u001b[1;32m 4\u001b[0m \u001b[0;34m<\u001b[0m\u001b[0mscript\u001b[0m \u001b[0msrc\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.3.3/webcomponents-lite.js\"\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0;34m<\u001b[0m\u001b[0;34m/\u001b[0m\u001b[0mscript\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 5\u001b[0m \u001b[0;34m<\u001b[0m\u001b[0mlink\u001b[0m \u001b[0mrel\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"import\"\u001b[0m \u001b[0mhref\u001b[0m\u001b[0;34m=\u001b[0m\u001b[0;34m\"https://raw.githubusercontent.com/PAIR-code/facets/1.0.0/facets-dist/facets-jupyter.html\"\u001b[0m\u001b[0;34m>\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",104 "\u001b[0;32m/opt/conda/lib/python3.9/site-packages/facets_overview/base_generic_feature_statistics_generator.py\u001b[0m in \u001b[0;36mProtoFromDataFrames\u001b[0;34m(self, dataframes, histogram_categorical_levels_count)\u001b[0m\n\u001b[1;32m 49\u001b[0m \u001b[0mdatasets\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m[\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 50\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mdataframe\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mdataframes\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0;32m---> 51\u001b[0;31m \u001b[0mtable\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0mdataframe\u001b[0m\u001b[0;34m[\u001b[0m\u001b[0;34m'table'\u001b[0m\u001b[0;34m]\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[0m\u001b[1;32m 52\u001b[0m \u001b[0mtable_entries\u001b[0m \u001b[0;34m=\u001b[0m \u001b[0;34m{\u001b[0m\u001b[0;34m}\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n\u001b[1;32m 53\u001b[0m \u001b[0;32mfor\u001b[0m \u001b[0mcol\u001b[0m \u001b[0;32min\u001b[0m \u001b[0mtable\u001b[0m\u001b[0;34m:\u001b[0m\u001b[0;34m\u001b[0m\u001b[0;34m\u001b[0m\u001b[0m\n",105 "\u001b[0;31mTypeError\u001b[0m: string indices must be integers"106 ]107 }108 ],109 "source": [110 "proto = GenericFeatureStatisticsGenerator().ProtoFromDataFrames(df)\n",111 "protostr = base64.b64encode(proto.SerializeToString()).decode(\"utf-8\")\n",112 "HTML_TEMPLATE = \"\"\"\n",113 " <script src=\"https://cdnjs.cloudflare.com/ajax/libs/webcomponentsjs/1.3.3/webcomponents-lite.js\"></script>\n",114 " <link rel=\"import\" href=\"https://raw.githubusercontent.com/PAIR-code/facets/1.0.0/facets-dist/facets-jupyter.html\">\n",115 " <facets-overview id=\"elem\"></facets-overview>\n",116 " <script>\n",117 " document.querySelector(\"#elem\").protoInput = \"{protostr}\";\n",118 " </script>\"\"\"\n",119 "html_str = HTML_TEMPLATE.format(protostr=protostr)\n",120 "with open(\"index.html\",'w') as fo:\n",121 " fo.write(html_str)"122 ]123 },124 {125 "cell_type": "code",126 "execution_count": null,127 "id": "c0a817dc",128 "metadata": {},129 "outputs": [],130 "source": []131 }132 ],133 "metadata": {134 "kernelspec": {135 "display_name": "Python 3 (ipykernel)",136 "language": "python",137 "name": "python3"138 },139 "language_info": {140 "codemirror_mode": {141 "name": "ipython",142 "version": 3143 },144 "file_extension": ".py",145 "mimetype": "text/x-python",146 "name": "python",147 "nbconvert_exporter": "python",148 "pygments_lexer": "ipython3",149 "version": "3.9.7"150 }151 },152 "nbformat": 4,153 "nbformat_minor": 5154}155 