概要
ほぼ初心者の私がデータ分析できるまでの記録を書き留めています.
ここでは分析するにあたり,データを正しく整理するための前処理となるデータベースに,扱うデータを取り込むところから始めます.DBeaver内のPostgreSQLをデータベース処理として使っていきます.
はじめに
よく分かってなくて,それでも差支えのない部分はそのままにしていることがあります.
ちゃんと書けていないことがあるかもしれませんが,ご了承ください.
何かお気づきの点があれば,お気軽にコメントくださるとうれしいです.
きっかけ
大学にてある企業の方からスーパーでの購買に関するデータを預かり,そのデータを基にデータ分析を行う機会があったのが,一つのきっかけです.
今まで授業では少し触れたもののそんなに自分の身になっていない感がどうしてもあったため,せっかくだからちゃんとデータを扱えるようになりたいと思い,やっています.
元データはどんなデータ?
ファイル形式
- Microsoft Access Database(.accdb)形式のデータ
- .accdb形式からExcel(.xlsx)形式に変換されたデータ
この2種類の形式のデータが用意されている.
データ内容
- ある年の3か月分のスーパーでの購買に関するデータ
(企業さんから預かったデータのため詳しいことは言えない) - データ量は(私的には今まで扱ったことがない)250万行前後が3か月分
1. ファイル形式を.csvに変換
MicrosoftのAccess Databaseは使ったことが無いので,今回は大学の授業で少し使ったことのあるDBeaverをデータベースとして使用する.元データをDBeaverにインポートしたいので,csvファイルを作成する.
Access Databaseからcsvファイルをつくる
Access Database内の上のタブにおいて 外部データ > テキストファイル でエキスポートできる仕組み(GUI)が整っているので,csvファイルだがテキストファイルとして保存し,ファイル名の最後の.txtを.csvに打ち変えて完了すれば変換できる.
Excelからcsvファイルを作る
Excelでは名前を付けて保存で拡張子(ファイル形式)を.csvに変更して保存することでcsvファイルができあがる.
2. DBeaverにインポート
ここからDBeaverでの操作となる.※ DBeaverでPostgreSQLに接続する方法は省略しています.
スキーマ内に複数のテーブルを作りたいので,スキーマ > テーブル を新しく作成していき,テーブルを右クリックして データのインポート を行う.
作成したcsvファイルをファイルから選んで実行していくと,csvファイルに問題が無ければカラム名,各列の型も含んだがテーブルが作成され,データベースへの取り込みは完了となる.
しかし,私が取り込んだデータの場合,
DBeaverにインポートする際あるエラーが出て行き詰った...
エラー内容
integer out of range
ある行に対するエラーメッセージであり,整数型の列において扱えない範囲の数値(大きすぎる数)があるよーとのことだった.
ここで該当のデータを見ると,その数値はラベルとしての値で,その値を使って計算したり昇順に並べ替えたりという操作は必要なかったため,この値を数値型としてではなく文字列型として扱うようにすることでエラーに対処できた.
私の場合,DBeaverに取り込む前にExcelで該当する列に対して 数値 > 文字列 に変更した.
ただし,あまりにも大きい値の場合数値から文字列に変換する際,指数表記になることがあるので注意が必要.
これだと,DBeaverでインポートする際に再び違うエラーが出ることになる.
3. DBeaverを扱う際の注意点
SQL文でテキストを打ち込んで実行する際は別だが,DBeaverに読み込んだデータに対して何か変更を行う場合,実行を行わないと変更されていないことがある.
例えば...
- テーブル名の変更
- データをインポートした
など,この際 Ctrl
+ S
でその都度更新しなければエラーが出る原因になる.
SQL文で実行する代わりに,簡単なボタン操作をするだけでは完全に変更できていないのでセーブして実行までするよう注意が必要.
(ただ面倒で忘れてしまう...何か知っている方いたら教えてください)
終わりに
無事データベースにデータを取り込めたので,次はデータ分析に移りたいところ...
(主キーとかの設定がまだ良く分かってないので,そのうちまたやります)
現時点で,データベースからこれから分析していくRにそもそも接続できるのか全く分からない.まずデータベースってどこにデータが保存されてるのか,そこからよく分かっていません.
とりあえずデータベースに取り込めたので,空白のデータとか不要なデータとかそういうのを整理していく方針です.