Created
May 11, 2018 09:36
-
-
Save regonn/3f261402f7fdc4ee110b4facb71c294b to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| { | |
| "cells": [ | |
| { | |
| "cell_type": "code", | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "name": "stderr", | |
| "output_type": "stream", | |
| "text": [ | |
| "\n", | |
| "Install the spreadsheet gem version ~>1.1.1 for using spreadsheet functions.\n", | |
| "\n", | |
| "Install the mechanize gem version ~>2.7.5 for using mechanize functions.\n" | |
| ] | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "true" | |
| ] | |
| }, | |
| "execution_count": 1, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "require 'google/cloud/bigquery' # google-cloud-bigquery gem\n", | |
| "require 'daru' # データフレーム\n", | |
| "require 'rbplotly' # いい感じにプロットしてくれるグラフ描画ライブラリ" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "#<Google::Cloud::Bigquery::Project:0x0000559c61223870 @service=Google::Cloud::Bigquery::Service(gcpug-203613)>" | |
| ] | |
| }, | |
| "execution_count": 2, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# 先程データを登録したProjectと参照権限を持つユーザをIAMで作りkeyfileを取得\n", | |
| "bigquery = Google::Cloud::Bigquery.new(project: \"gcpug-203613\", keyfile: \"./gcpug-2cc329f2b739.json\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "#<Google::Cloud::Bigquery::Dataset:0x0000559c61112440 @service=Google::Cloud::Bigquery::Service(gcpug-203613), @gapi=#<Google::Apis::BigqueryV2::Dataset:0x0000559c6114bd58 @access=[#<Google::Apis::BigqueryV2::Dataset::Access:0x0000559c6114a6d8 @role=\"WRITER\", @special_group=\"projectWriters\">, #<Google::Apis::BigqueryV2::Dataset::Access:0x0000559c61148ce8 @role=\"OWNER\", @special_group=\"projectOwners\">, #<Google::Apis::BigqueryV2::Dataset::Access:0x0000559c61147be0 @role=\"OWNER\", @user_by_email=\"regonn@sonicgarden.jp\">, #<Google::Apis::BigqueryV2::Dataset::Access:0x0000559c61146b28 @role=\"READER\", @special_group=\"projectReaders\">], @creation_time=1525875347728, @dataset_reference=#<Google::Apis::BigqueryV2::DatasetReference:0x0000559c61145368 @dataset_id=\"titanic\", @project_id=\"gcpug-203613\">, @etag=\"az+U7xXw1byypxtjLXsZDg==\", @id=\"gcpug-203613:titanic\", @kind=\"bigquery#dataset\", @last_modified_time=1525875347728, @location=\"asia-northeast1\", @self_link=\"https://www.googleapis.com/bigquery/v2/projects/gcpug-203613/datasets/titanic\">, @reference=nil>" | |
| ] | |
| }, | |
| "execution_count": 3, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "titanic = bigquery.dataset(\"titanic\")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "\"SELECT PassengerId, Survived, Pclass, Name, Sex, Age\\nFROM passengers\\nORDER BY PassengerId\\nLIMIT 100\\n\"" | |
| ] | |
| }, | |
| "execution_count": 4, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "sql = <<-EOS\n", | |
| "SELECT PassengerId, Survived, Pclass, Name, Sex, Age\n", | |
| "FROM passengers\n", | |
| "ORDER BY PassengerId\n", | |
| "LIMIT 100\n", | |
| "EOS" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": {}, | |
| "execution_count": 5, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "job = titanic.query_job sql\n", | |
| "job.wait_until_done!\n", | |
| "data = job.data if !job.failed?" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<b> Daru::DataFrame(0x6) </b>\n", | |
| "<table>\n", | |
| " <thead>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th></th>\n", | |
| " \n", | |
| " <th>PassengerId</th>\n", | |
| " \n", | |
| " <th>Survived</th>\n", | |
| " \n", | |
| " <th>Pclass</th>\n", | |
| " \n", | |
| " <th>Name</th>\n", | |
| " \n", | |
| " <th>Sex</th>\n", | |
| " \n", | |
| " <th>Age</th>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| "</thead>\n", | |
| " <tbody>\n", | |
| " \n", | |
| "\n", | |
| " \n", | |
| "</tbody>\n", | |
| "</table>" | |
| ], | |
| "text/plain": [ | |
| "#<Daru::DataFrame(0x6)>\n", | |
| " PassengerI Survived Pclass Name Sex Age" | |
| ] | |
| }, | |
| "execution_count": 6, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df = Daru::DataFrame.new(\n", | |
| " {\n", | |
| " 'PassengerId' => [],\n", | |
| " 'Survived' => [],\n", | |
| " 'Pclass' => [],\n", | |
| " 'Name' => [],\n", | |
| " 'Sex' => [],\n", | |
| " 'Age' => []\n", | |
| " }\n", | |
| ")" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 7, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [ | |
| "# BigQuery Data から df への良さそうな変換方法がなさそうなので考え中\n", | |
| "data.each do |passenger|\n", | |
| " df.add_row passenger.values\n", | |
| "end\n", | |
| "nil" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<b> Daru::DataFrame(100x6) </b>\n", | |
| "<table>\n", | |
| " <thead>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th></th>\n", | |
| " \n", | |
| " <th>PassengerId</th>\n", | |
| " \n", | |
| " <th>Survived</th>\n", | |
| " \n", | |
| " <th>Pclass</th>\n", | |
| " \n", | |
| " <th>Name</th>\n", | |
| " \n", | |
| " <th>Sex</th>\n", | |
| " \n", | |
| " <th>Age</th>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| "</thead>\n", | |
| " <tbody>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Braund, Mr. Owen Harris</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>22.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>2</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>Cumings, Mrs. John Bradley (Florence Briggs Thayer)</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>38.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>2</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Heikkinen, Miss. Laina</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>26.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>4</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>Futrelle, Mrs. Jacques Heath (Lily May Peel)</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>35.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>4</td>\n", | |
| " \n", | |
| " <td>5</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Allen, Mr. William Henry</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>35.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>5</td>\n", | |
| " \n", | |
| " <td>6</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Moran, Mr. James</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td></td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>6</td>\n", | |
| " \n", | |
| " <td>7</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>McCarthy, Mr. Timothy J</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>54.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>7</td>\n", | |
| " \n", | |
| " <td>8</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Palsson, Master. Gosta Leonard</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>2.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>8</td>\n", | |
| " \n", | |
| " <td>9</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Johnson, Mrs. Oscar W (Elisabeth Vilhelmina Berg)</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>27.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>9</td>\n", | |
| " \n", | |
| " <td>10</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>2</td>\n", | |
| " \n", | |
| " <td>Nasser, Mrs. Nicholas (Adele Achem)</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>14.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>10</td>\n", | |
| " \n", | |
| " <td>11</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Sandstrom, Miss. Marguerite Rut</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>4.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>11</td>\n", | |
| " \n", | |
| " <td>12</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>Bonnell, Miss. Elizabeth</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>58.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>12</td>\n", | |
| " \n", | |
| " <td>13</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Saundercock, Mr. William Henry</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>20.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>13</td>\n", | |
| " \n", | |
| " <td>14</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Andersson, Mr. Anders Johan</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>39.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>14</td>\n", | |
| " \n", | |
| " <td>15</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Vestrom, Miss. Hulda Amanda Adolfina</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>14.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>15</td>\n", | |
| " \n", | |
| " <td>16</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>2</td>\n", | |
| " \n", | |
| " <td>Hewlett, Mrs. (Mary D Kingcome) </td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>55.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>16</td>\n", | |
| " \n", | |
| " <td>17</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Rice, Master. Eugene</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>2.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>17</td>\n", | |
| " \n", | |
| " <td>18</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>2</td>\n", | |
| " \n", | |
| " <td>Williams, Mr. Charles Eugene</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td></td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>18</td>\n", | |
| " \n", | |
| " <td>19</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Vander Planke, Mrs. Julius (Emelia Maria Vandemoortele)</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>31.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>19</td>\n", | |
| " \n", | |
| " <td>20</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Masselmani, Mrs. Fatima</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td></td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>20</td>\n", | |
| " \n", | |
| " <td>21</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>2</td>\n", | |
| " \n", | |
| " <td>Fynney, Mr. Joseph J</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>35.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>21</td>\n", | |
| " \n", | |
| " <td>22</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>2</td>\n", | |
| " \n", | |
| " <td>Beesley, Mr. Lawrence</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>34.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>22</td>\n", | |
| " \n", | |
| " <td>23</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>McGowan, Miss. Anna \"Annie\"</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>15.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>23</td>\n", | |
| " \n", | |
| " <td>24</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>Sloper, Mr. William Thompson</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>28.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>24</td>\n", | |
| " \n", | |
| " <td>25</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Palsson, Miss. Torborg Danira</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>8.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>25</td>\n", | |
| " \n", | |
| " <td>26</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Asplund, Mrs. Carl Oscar (Selma Augusta Emilia Johansson)</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td>38.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>26</td>\n", | |
| " \n", | |
| " <td>27</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Emir, Mr. Farred Chehab</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td></td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>27</td>\n", | |
| " \n", | |
| " <td>28</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>Fortune, Mr. Charles Alexander</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>19.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>28</td>\n", | |
| " \n", | |
| " <td>29</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>O'Dwyer, Miss. Ellen \"Nellie\"</td>\n", | |
| " \n", | |
| " <td>female</td>\n", | |
| " \n", | |
| " <td></td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>29</td>\n", | |
| " \n", | |
| " <td>30</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>Todoroff, Mr. Lalio</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td></td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| "\n", | |
| " \n", | |
| " <tr>\n", | |
| " \n", | |
| " <td>...</td>\n", | |
| " \n", | |
| " <td>...</td>\n", | |
| " \n", | |
| " <td>...</td>\n", | |
| " \n", | |
| " <td>...</td>\n", | |
| " \n", | |
| " <td>...</td>\n", | |
| " \n", | |
| " <td>...</td>\n", | |
| " \n", | |
| " <td>...</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| "\n", | |
| " \n", | |
| "\n", | |
| " <tr>\n", | |
| " <td>99</td>\n", | |
| " \n", | |
| " <td>100</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>2</td>\n", | |
| " \n", | |
| " <td>Kantor, Mr. Sinai</td>\n", | |
| " \n", | |
| " <td>male</td>\n", | |
| " \n", | |
| " <td>34.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| "</tbody>\n", | |
| "</table>" | |
| ], | |
| "text/plain": [ | |
| "#<Daru::DataFrame(100x6)>\n", | |
| " PassengerI Survived Pclass Name Sex Age\n", | |
| " 0 1 0 3 Braund, Mr male 22.0\n", | |
| " 1 2 1 1 Cumings, M female 38.0\n", | |
| " 2 3 1 3 Heikkinen, female 26.0\n", | |
| " 3 4 1 1 Futrelle, female 35.0\n", | |
| " 4 5 0 3 Allen, Mr. male 35.0\n", | |
| " 5 6 0 3 Moran, Mr. male nil\n", | |
| " 6 7 0 1 McCarthy, male 54.0\n", | |
| " 7 8 0 3 Palsson, M male 2.0\n", | |
| " 8 9 1 3 Johnson, M female 27.0\n", | |
| " 9 10 1 2 Nasser, Mr female 14.0\n", | |
| " 10 11 1 3 Sandstrom, female 4.0\n", | |
| " 11 12 1 1 Bonnell, M female 58.0\n", | |
| " 12 13 0 3 Saundercoc male 20.0\n", | |
| " 13 14 0 3 Andersson, male 39.0\n", | |
| " 14 15 0 3 Vestrom, M female 14.0\n", | |
| " ... ... ... ... ... ... ..." | |
| ] | |
| }, | |
| "execution_count": 8, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "<b> Daru::DataFrame(5x4) </b>\n", | |
| "<table>\n", | |
| " <thead>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <th></th>\n", | |
| " \n", | |
| " <th>PassengerId</th>\n", | |
| " \n", | |
| " <th>Survived</th>\n", | |
| " \n", | |
| " <th>Pclass</th>\n", | |
| " \n", | |
| " <th>Age</th>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| "</thead>\n", | |
| " <tbody>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>count</td>\n", | |
| " \n", | |
| " <td>100</td>\n", | |
| " \n", | |
| " <td>100</td>\n", | |
| " \n", | |
| " <td>100</td>\n", | |
| " \n", | |
| " <td>78</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>mean</td>\n", | |
| " \n", | |
| " <td>50.5</td>\n", | |
| " \n", | |
| " <td>0.41</td>\n", | |
| " \n", | |
| " <td>2.4</td>\n", | |
| " \n", | |
| " <td>27.46576923076923</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>std</td>\n", | |
| " \n", | |
| " <td>29.011491975882016</td>\n", | |
| " \n", | |
| " <td>0.49431107042371025</td>\n", | |
| " \n", | |
| " <td>0.8164965809277257</td>\n", | |
| " \n", | |
| " <td>15.278878343208756</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>min</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>0</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>0.83</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| " <tr>\n", | |
| " <td>max</td>\n", | |
| " \n", | |
| " <td>100</td>\n", | |
| " \n", | |
| " <td>1</td>\n", | |
| " \n", | |
| " <td>3</td>\n", | |
| " \n", | |
| " <td>71.0</td>\n", | |
| " \n", | |
| " </tr>\n", | |
| " \n", | |
| "\n", | |
| " \n", | |
| "</tbody>\n", | |
| "</table>" | |
| ], | |
| "text/plain": [ | |
| "#<Daru::DataFrame(5x4)>\n", | |
| " PassengerI Survived Pclass Age\n", | |
| " count 100 100 100 78\n", | |
| " mean 50.5 0.41 2.4 27.4657692\n", | |
| " std 29.0114919 0.49431107 0.81649658 15.2788783\n", | |
| " min 1 0 1 0.83\n", | |
| " max 100 1 3 71.0" | |
| ] | |
| }, | |
| "execution_count": 9, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "df.describe" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/plain": [ | |
| ":show_histograms" | |
| ] | |
| }, | |
| "execution_count": 10, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "# rbplotly用にデータ作成\n", | |
| "# ここらへん、まだ Ruby 弱い。\n", | |
| "def show_histograms(dataframe, names, layout: nil)\n", | |
| " layout ||= {}\n", | |
| " raise ArgumentError, \"layout must be a Hash\" unless layout.kind_of? Hash\n", | |
| "\n", | |
| " # each hash in traces specifies the properties of a single chart\n", | |
| " traces = names.map.with_index do |name, i|\n", | |
| " axis_index = i == 0 ? '' : i + 1\n", | |
| " {\n", | |
| " x: dataframe[name].to_a, # specify samples in `x` for histogram\n", | |
| " name: name,\n", | |
| " type: :histogram,\n", | |
| " xaxis: \"x#{axis_index}\",\n", | |
| " yaxis: \"y#{axis_index}\",\n", | |
| " nbinsx: 20\n", | |
| " }\n", | |
| " end\n", | |
| "\n", | |
| " # chart layout calculation\n", | |
| "\n", | |
| " ncol = 2\n", | |
| " nrow = (names.length + 1) / ncol\n", | |
| " grid_width = 1.0 / ncol\n", | |
| " grid_height = 1.0 / nrow\n", | |
| " sep = 0.02\n", | |
| "\n", | |
| " trace_index = 0\n", | |
| " nrow.times do |row|\n", | |
| " ncol.times do |col|\n", | |
| " axis_index = trace_index == 0 ? '' : trace_index + 1\n", | |
| " # build the layout hash for allocating each chat\n", | |
| " layout[:\"xaxis#{axis_index}\"] = {\n", | |
| " domain: [col * grid_width + sep, (col + 1) * grid_width - sep],\n", | |
| " anchor: \"y#{axis_index}\"\n", | |
| " }\n", | |
| " layout[:\"yaxis#{axis_index}\"] = {\n", | |
| " domain: [row * grid_height + sep, (row + 1) * grid_height - sep],\n", | |
| " anchor: \"x#{axis_index}\"\n", | |
| " }\n", | |
| " trace_index += 1\n", | |
| " end\n", | |
| " end\n", | |
| " Plotly::Plot.new(data: traces, layout: layout).show\n", | |
| "end\n", | |
| "\n" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "outputs": [ | |
| { | |
| "data": { | |
| "text/html": [ | |
| "\n", | |
| " <script>\n", | |
| " requirejs.config({paths: { 'plotly': ['https://cdn.plot.ly/plotly-latest.min'] }})\n", | |
| " </script>\n", | |
| "\n", | |
| "\n", | |
| "<div id=\"337a92eb-83a6-4c61-b2d4-e893a002d766\" style=\"height: 100%; width: 100%;\"></div>\n", | |
| "\n", | |
| "<script>\n", | |
| " require(['plotly'], function(Plotly) { \n", | |
| "Plotly.newPlot(\n", | |
| " '337a92eb-83a6-4c61-b2d4-e893a002d766',\n", | |
| " [{\"x\":[0,1,1,1,0,0,0,0,1,1,1,1,0,0,0,1,0,1,0,1,0,1,1,1,0,1,0,0,1,0,0,1,1,0,0,0,1,0,0,1,0,0,0,1,1,0,0,1,0,0,0,0,1,1,0,1,1,0,1,0,0,1,0,0,0,1,1,0,1,0,0,0,0,0,1,0,0,0,1,1,0,1,1,0,1,1,0,0,1,0,0,0,0,0,0,0,0,1,1,0],\"name\":\"Survived\",\"type\":\"histogram\",\"xaxis\":\"x\",\"yaxis\":\"y\",\"nbinsx\":20},{\"x\":[3,1,3,1,3,3,1,3,3,2,3,1,3,3,3,2,3,2,3,3,2,2,3,1,3,3,3,1,3,3,1,1,3,2,1,1,3,3,3,3,3,2,3,2,3,3,3,3,3,3,3,3,1,2,1,1,2,3,2,3,3,1,1,3,1,3,2,3,3,3,2,3,2,3,3,3,3,3,2,3,3,3,3,1,2,3,3,3,1,3,3,3,1,3,3,3,1,1,2,2],\"name\":\"Pclass\",\"type\":\"histogram\",\"xaxis\":\"x2\",\"yaxis\":\"y2\",\"nbinsx\":20},{\"x\":[\"male\",\"female\",\"female\",\"female\",\"male\",\"male\",\"male\",\"male\",\"female\",\"female\",\"female\",\"female\",\"male\",\"male\",\"female\",\"female\",\"male\",\"male\",\"female\",\"female\",\"male\",\"male\",\"female\",\"male\",\"female\",\"female\",\"male\",\"male\",\"female\",\"male\",\"male\",\"female\",\"female\",\"male\",\"male\",\"male\",\"male\",\"male\",\"female\",\"female\",\"female\",\"female\",\"male\",\"female\",\"female\",\"male\",\"male\",\"female\",\"male\",\"female\",\"male\",\"male\",\"female\",\"female\",\"male\",\"male\",\"female\",\"male\",\"female\",\"male\",\"male\",\"female\",\"male\",\"male\",\"male\",\"male\",\"female\",\"male\",\"female\",\"male\",\"male\",\"female\",\"male\",\"male\",\"male\",\"male\",\"male\",\"male\",\"male\",\"female\",\"male\",\"male\",\"female\",\"male\",\"female\",\"female\",\"male\",\"male\",\"female\",\"male\",\"male\",\"male\",\"male\",\"male\",\"male\",\"male\",\"male\",\"male\",\"female\",\"male\"],\"name\":\"Sex\",\"type\":\"histogram\",\"xaxis\":\"x3\",\"yaxis\":\"y3\",\"nbinsx\":20},{\"x\":[22.0,38.0,26.0,35.0,35.0,null,54.0,2.0,27.0,14.0,4.0,58.0,20.0,39.0,14.0,55.0,2.0,null,31.0,null,35.0,34.0,15.0,28.0,8.0,38.0,null,19.0,null,null,40.0,null,null,66.0,28.0,42.0,null,21.0,18.0,14.0,40.0,27.0,null,3.0,19.0,null,null,null,null,18.0,7.0,21.0,49.0,29.0,65.0,null,21.0,28.5,5.0,11.0,22.0,38.0,45.0,4.0,null,null,29.0,19.0,17.0,26.0,32.0,16.0,21.0,26.0,32.0,25.0,null,null,0.83,30.0,22.0,29.0,null,28.0,17.0,33.0,16.0,null,23.0,24.0,29.0,20.0,46.0,26.0,59.0,null,71.0,23.0,34.0,34.0],\"name\":\"Age\",\"type\":\"histogram\",\"xaxis\":\"x4\",\"yaxis\":\"y4\",\"nbinsx\":20}],\n", | |
| " {\"height\":700,\"xaxis\":{\"domain\":[0.02,0.48],\"anchor\":\"y\"},\"yaxis\":{\"domain\":[0.02,0.48],\"anchor\":\"x\"},\"xaxis2\":{\"domain\":[0.52,0.98],\"anchor\":\"y2\"},\"yaxis2\":{\"domain\":[0.02,0.48],\"anchor\":\"x2\"},\"xaxis3\":{\"domain\":[0.02,0.48],\"anchor\":\"y3\"},\"yaxis3\":{\"domain\":[0.52,0.98],\"anchor\":\"x3\"},\"xaxis4\":{\"domain\":[0.52,0.98],\"anchor\":\"y4\"},\"yaxis4\":{\"domain\":[0.52,0.98],\"anchor\":\"x4\"}},\n", | |
| " {\"linkText\":\"Export to plot.ly\",\"showLink\":true}\n", | |
| ")\n", | |
| "\n", | |
| "window.addEventListener('resize', function() {\n", | |
| " Plotly.Plots.resize(document.getElementById('337a92eb-83a6-4c61-b2d4-e893a002d766'))\n", | |
| "})\n", | |
| " }) \n", | |
| "</script>" | |
| ], | |
| "text/plain": [ | |
| "#<Plotly::Offline::HTML:0x0000559c60d7e568 @id=\"337a92eb-83a6-4c61-b2d4-e893a002d766\", @data=[{:x=>[0, 1, 1, 1, 0, 0, 0, 0, 1, 1, 1, 1, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 1, 1, 0, 1, 0, 0, 1, 0, 0, 1, 1, 0, 0, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 1, 0, 1, 1, 0, 1, 1, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0], :name=>\"Survived\", :type=>:histogram, :xaxis=>\"x\", :yaxis=>\"y\", :nbinsx=>20}, {:x=>[3, 1, 3, 1, 3, 3, 1, 3, 3, 2, 3, 1, 3, 3, 3, 2, 3, 2, 3, 3, 2, 2, 3, 1, 3, 3, 3, 1, 3, 3, 1, 1, 3, 2, 1, 1, 3, 3, 3, 3, 3, 2, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 1, 2, 1, 1, 2, 3, 2, 3, 3, 1, 1, 3, 1, 3, 2, 3, 3, 3, 2, 3, 2, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 1, 2, 3, 3, 3, 1, 3, 3, 3, 1, 3, 3, 3, 1, 1, 2, 2], :name=>\"Pclass\", :type=>:histogram, :xaxis=>\"x2\", :yaxis=>\"y2\", :nbinsx=>20}, {:x=>[\"male\", \"female\", \"female\", \"female\", \"male\", \"male\", \"male\", \"male\", \"female\", \"female\", \"female\", \"female\", \"male\", \"male\", \"female\", \"female\", \"male\", \"male\", \"female\", \"female\", \"male\", \"male\", \"female\", \"male\", \"female\", \"female\", \"male\", \"male\", \"female\", \"male\", \"male\", \"female\", \"female\", \"male\", \"male\", \"male\", \"male\", \"male\", \"female\", \"female\", \"female\", \"female\", \"male\", \"female\", \"female\", \"male\", \"male\", \"female\", \"male\", \"female\", \"male\", \"male\", \"female\", \"female\", \"male\", \"male\", \"female\", \"male\", \"female\", \"male\", \"male\", \"female\", \"male\", \"male\", \"male\", \"male\", \"female\", \"male\", \"female\", \"male\", \"male\", \"female\", \"male\", \"male\", \"male\", \"male\", \"male\", \"male\", \"male\", \"female\", \"male\", \"male\", \"female\", \"male\", \"female\", \"female\", \"male\", \"male\", \"female\", \"male\", \"male\", \"male\", \"male\", \"male\", \"male\", \"male\", \"male\", \"male\", \"female\", \"male\"], :name=>\"Sex\", :type=>:histogram, :xaxis=>\"x3\", :yaxis=>\"y3\", :nbinsx=>20}, {:x=>[22.0, 38.0, 26.0, 35.0, 35.0, nil, 54.0, 2.0, 27.0, 14.0, 4.0, 58.0, 20.0, 39.0, 14.0, 55.0, 2.0, nil, 31.0, nil, 35.0, 34.0, 15.0, 28.0, 8.0, 38.0, nil, 19.0, nil, nil, 40.0, nil, nil, 66.0, 28.0, 42.0, nil, 21.0, 18.0, 14.0, 40.0, 27.0, nil, 3.0, 19.0, nil, nil, nil, nil, 18.0, 7.0, 21.0, 49.0, 29.0, 65.0, nil, 21.0, 28.5, 5.0, 11.0, 22.0, 38.0, 45.0, 4.0, nil, nil, 29.0, 19.0, 17.0, 26.0, 32.0, 16.0, 21.0, 26.0, 32.0, 25.0, nil, nil, 0.83, 30.0, 22.0, 29.0, nil, 28.0, 17.0, 33.0, 16.0, nil, 23.0, 24.0, 29.0, 20.0, 46.0, 26.0, 59.0, nil, 71.0, 23.0, 34.0, 34.0], :name=>\"Age\", :type=>:histogram, :xaxis=>\"x4\", :yaxis=>\"y4\", :nbinsx=>20}], @layout={:height=>700, :xaxis=>{:domain=>[0.02, 0.48], :anchor=>\"y\"}, :yaxis=>{:domain=>[0.02, 0.48], :anchor=>\"x\"}, :xaxis2=>{:domain=>[0.52, 0.98], :anchor=>\"y2\"}, :yaxis2=>{:domain=>[0.02, 0.48], :anchor=>\"x2\"}, :xaxis3=>{:domain=>[0.02, 0.48], :anchor=>\"y3\"}, :yaxis3=>{:domain=>[0.52, 0.98], :anchor=>\"x3\"}, :xaxis4=>{:domain=>[0.52, 0.98], :anchor=>\"y4\"}, :yaxis4=>{:domain=>[0.52, 0.98], :anchor=>\"x4\"}}, @config={:linkText=>\"Export to plot.ly\", :showLink=>true}, @embedded=true>" | |
| ] | |
| }, | |
| "metadata": {}, | |
| "output_type": "display_data" | |
| }, | |
| { | |
| "data": { | |
| "text/plain": [ | |
| "#<CZTop::Socket::PUB:0x559c5f882dd0 last_endpoint=\"tcp://127.0.0.1:56273\">" | |
| ] | |
| }, | |
| "execution_count": 11, | |
| "metadata": {}, | |
| "output_type": "execute_result" | |
| } | |
| ], | |
| "source": [ | |
| "num_column_names = %w[Survived Pclass Sex Age]\n", | |
| "show_histograms(df, num_column_names, layout: { height: 700 })" | |
| ] | |
| }, | |
| { | |
| "cell_type": "code", | |
| "execution_count": null, | |
| "metadata": {}, | |
| "outputs": [], | |
| "source": [] | |
| } | |
| ], | |
| "metadata": { | |
| "kernelspec": { | |
| "display_name": "Ruby 2.5.1", | |
| "language": "ruby", | |
| "name": "ruby" | |
| }, | |
| "language_info": { | |
| "file_extension": ".rb", | |
| "mimetype": "application/x-ruby", | |
| "name": "ruby", | |
| "version": "2.5.1" | |
| } | |
| }, | |
| "nbformat": 4, | |
| "nbformat_minor": 2 | |
| } |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment