前々処理（序説）：サクサク使うSQL(エクセルだけから卒業)

## **背景（前々処理の重要性）-> [次の記事（インストール）](http://qiita.com/zanjibar/items/acb7f5c1d06fe800b963)**
データマイニングからはじまって、データに関するブームはなんどもおこっています。そして、いつの間にかブームはさっていきます。データマイニングの頃からデータに関わってきたものとしては、なんだか寂しい気がしていました。でも、今（２０１７年）は、少し状況が違っている気がします。エクセルで扱えない大きなＣＳＶデータが簡単に入手可能になってきたのです。単純集計レベルでもサクサクと扱いたいことはしばしばあります。もちろんエクセルではあつかえません。エクセルだけの状態から卒業し、本格的に大きなデータを扱う時代になりました。実際に、データを扱い始めると、まず、データの前処理を行う必要がでててきます。データが実際にどんな構造をしているのか？　項目は？　総数は？　を検証して、想定されるデータになっていない場合には、想定されるデータ（正しいデータ）にする必要があります。この処理を前処理といいます。この前処理は非常に手間がかかる作業です。ですが、実際にデータを扱ったことがない人には、重要性はほとんど理解されません。データを入手してから、分析するまでの工程の８割が前処理に費やされると言われています。実際に作業したことがない人には、前処理の大変さは、理解の範囲外です。ただ、本格的にデータを扱うようになると、前処理が大きな課題になります。そこで、従来、軽視されている前処理の重要性の理解を少しでもわかってもらおうと思ってこの記事を書き始めました。実際の内容は、前処理というより、前処理をするための前処理とでも言うべき非常に基本的な内容です。それで、前々処理を学ぶという主題を設定しました。



## **どうするのがいいか**

1. 大きなＣＳＶ（データエクセルで扱えないデータ）を扱う
2. 何を使う？
3. 具体的には？

## **大きなＣＳＶデータを扱う**

エクセルで扱うことができない大きなデータ（100Mくらいのcsvデータ）は今は、よくあります。政府の統計データ[貿易統計](http://www.customs.go.jp/toukei/info/)でも、１０年分くらいで簡単に、100メガ超えます。エクセルしかつかえないと単純集計すらできません。そこで、１００メガくらいのデータを扱うソフトとしては、[nysol](http://www.nysol.jp/)がおすすめです。[100MB超えたらnysolが良さそう](http://qiita.com/gg_hatano/items/7a11e3a203a7646f05bf)という記事もあります。Macや、linux も使っていて、shell も少し使える人なら、nysol はおすすめです。メモリを食いませんから、５ＧくらいのＣＳＶファイルも８Ｇ程度のメモリでもなんとか対応できます。でも、windows で使うのは結構面倒です.ここで、大切なことは、データはすでに存在しているということです。目の前にデータがあるのに、処理できない状態を解消したいと思う人は多々いるのではないでしょうか


## **何を使う？ やっぱりSQL**
多くの人がつかっている、windowsでは、どうするのがいいのでしょうか？

* プログラミングも覚えるか？
 * GUI でやりたいなら、無料（実質）のでは、microsoft の[PowerBI](https://powerbi.microsoft.com/ja-jp/),[talend](https://jp.talend.com/products/talend-open-studio),[rapidminer](https://www.rapidminer.jp/) などがあります。
 * どのアプリがいいのかは、まだ、混沌としていると思っています。細かいデータ処理が簡単にできるのもあれば、簡単なことでも、どうしたらいいのがわからないことがあります。
* プログラミング(的なもの)も覚えるとすると何がいいか
  * sql (シーケルもしくは、エスキューエルと読みます)がおすすめだと思います。
  * プログラミングとは言いがたいですが、データベース問い合わせ言語のsql はおすすめです。こんな記事[非エンジニア職こそSQLを学ぶべき](http://paiza.hatenablog.com/entry/2016/11/02/%E3%83%87%E3%82%A3%E3%83%AC%E3%82%AF%E3%82%BF%E3%83%BC%E3%82%82%E5%96%B6%E6%A5%AD%E3%82%82%E2%80%A6%E9%9D%9E%E3%82%A8%E3%83%B3%E3%82%B8%E3%83%8B%E3%82%A2%E8%81%B7%E3%81%93%E3%81%9DSQL%E3%82%92%E5%AD%A6)があります
  * sqlが使えるデータベースにいろいろな種類がありますが、無料で手軽なsqlite3 がおすすめです。
  * さらに、正規表現わかるとなおよし
    * 実際のデータは、ゴミがまざっていたりして、文字列の削除、置換が必要になります。そういったときに、柔軟な文字列処理ができる正規表現が使えると便利です。[参考記事](https://webnaut.jp/markup/606.html)
    * 正規表現は、テキストエディターならなんでも通常つかえます。おすすめは、[vistual studio code](https://www.microsoft.com/ja-jp/dev/products/code-vs.aspx)
  

## **具体的には？(sqlitebrowser,visual studio code)**
sqlite3,visual studo code について軽く説明です。

* [sqlite3](https://sqlite.org/cli.html)とは
  * ファイルとそれを読むクライアントだけで使えます。
  * sqlの仕組みは、通常は、サーバとクライアントが必要で、使うのには少し手間がかかりますが、sqlite3 は、単なるファイルなので、クライアントアプリがあれば、すぐに簡単に使えます。ＣＳＶと同列のデータフォーマットだと思うのがいいでしょう。[データエンジニアのコミュニティサイト kaggle でも、sqliteのデータフォーマットでのデータ配布が推奨されています。](https://www.kaggle.com/about/datasets/publish)
  
 * sqlite3 を扱うアプリはいろいろありますが、[DB Browser for SQLite](http://sqlitebrowser.org/)がいまのところおすすめ。理由はインストールが簡単だからです。

* [visual studio code](https://code.visualstudio.com/)
  * 無料の高機能のテキストエディタです。すでに、正規表現使えるエディタに慣れている人には、おすすめはしません。
  * メモ帳よりは便利なテキストエディタがつかいたいと思っていて何にしようかと迷っている人におすすめです。
  * [似たソフトはいっぱいあります。](https://alternativeto.net/software/visual-studio-code/)　なぜ、おすすめかというと、マイクロソフト（寄らば大樹）がつくっているからと、機能があるわりには、軽快に動くように思えたからです。

次は、まず、[インストール](http://qiita.com/zanjibar/items/acb7f5c1d06fe800b963)