kaggleで戦うならMongoDBは必須!csvファイルを5分以内でimport(インポート)できる

この記事を読むとわかること

・CSVファイルをmongoDBにインポートする方法がわかる

・インポートにかかる時間が5分以内であることが分かる

・なぜ、kaggleで戦うのにmongoDBを使うと良いのかわかる

 

なぜkaggleを戦うのにDBを用意するの?

kaggleで提供されるCSVデータは、10M以上あり、エクセルで開こうとするとかなり重くなります。

重いときは1Gを超えることもザラです。

その結果、データを調べることが相当手間になってしまいます。

 

kaggleのカーネル内でpandasつかってデータ分析する方法もありますが、pythonなどのコードを書かなければいけないため、手間がかかります。

「ちょっと調べたいな~、この条件のときの値はどうなっているんだろう?」というノリで調べるには、DBの検索機能を使って、データの中身を検索(find)すると非常に楽になります。

DBなら複数行のデータの比較にかかる時間が大幅に減らすことができます。

DBの中でもkaggleから提供されているデータを調査するならmongoDBがオススメです。

 

理由は、次の通りです!

なぜmongoDBがオススメなの?

理由1:テーブル定義の必要が無い

mongoDBを勧める一番の理由はテーブル定義をしなくても良いことです。

CSVデータがあれば、importコマンドを入力するだけで、DBにデータを格納してくれます。

 

MysqlやOracleDBでもcsvをインポートしてデータを見ることは可能です。

しかし、これらのDBは、テーブル定義が必要です。

列数が少なければ、テーブル定義してcsvをインポートしても良いのですが、kaggleには50列を超えるデータも存在します。50列分をテーブル定義を作るのは以外に面倒です。

 

MongoDBは、テーブル定義の必要が無いので、(データを確認できるまでの)時間をかけずにデータ分析が可能です。

 

理由2:条件を設定すれば該当データのみ抽出できる

たとえば、条件「int型変数 > 10」のデータを取得したいとします。

そんなときは、以下のような条件文を書いて検索します。

 

{answer_helpful: 1}

{“answer_helpful”:{$gte: 0.7}}

 

データの量にもよりますが、6000行ほどのデータの場合は、1秒以内に結果を返してくれました。

データを絞り込んで、短時間で調査できるので重宝しています。

 

理由3:簡単なデータの解析を自動的に実施する

MongoDB Compassというソフトを使う必要がありますが、それを使うと簡単なデータの分析をやってくれます。

 

この例では、値がどのような割合で分布しているのか分かります。

その結果、データの特性を調べるのに役立ちます。

 

実際にkaggleのデータをMongoDBでみる

前提条件として、MongoDBがインストールされているものとして解説します。

 

MongoDBの起動

まず、MongoDBのインストールです。

インストール方法は、以下のサイトが詳しいので、参考にしてください!

 

MongoDBのインストール

インストールが終わったら、以下のコマンドを入力してMongoDBを起動します。

 

MongoDB本体の起動

$mongod -dbpath /usr/local/var/mongodb

CSVをMongoDBにインポートする

CSVをMongoDBにインポートします。

インポート方法は、以下のようなコマンドで実行できます。

セパレーターは、「,」を使っています。

 

Mongo dbにcsv入れる

$mongoimport --db=test --collection=google-quest-qa --type=csv --headerline --file=train.csv

--db・・・DB(スキーマー)を指定する
--collection・・・コレクション(MySqlのテーブルに当たるもの)
--type・・・csv
--file・・・ファイル名

 

mongoimportコマンドの詳細は以下の通り

https://docs.mongodb.com/manual/reference/program/mongoimport/

 

MongoDB Compassを起動する

MongoDB Compassは、MongoDB内のデータを可視化したり、データの検索を簡単に実施できます。

検索(クエリ)してみる

データのクエリは以下のようなコマンドで可能です。

 

データのクエリ(findコマンド)は以下の通り。

{answer_helpful:  1}
{"answer_helpful":{$gte:  0.7}}

$gteは「以上」、$lteは「以下」の検索ができます。

 

クエリについては以下の資料を参考に!

https://docs.mongodb.com/manual/reference/command/find/#dbcmd.find

 

まとめ

今回は、mongoDBにcsvデータをインポートする方法を解説しました。

面倒なことは、できるかぎり省きたい。

そんなことを常に思います。

 

機械学習の入門から学べるスクールは、”挫折しないこと”で有名な

「TECH:CAMP(テックキャンプ)」

地方に住んでいる方は、オンライン説明会もあり!

\副業始めるのに年齢は関係なし!/

テックキャンプ
今すぐ無料カウンセリングを申し込む!

無理な勧誘もなしで安心!

最新情報をチェックしよう!