親です。

読んだ本とかについて書いてます

【キャリア・転職】データ分析系企業5社面談して分かったこと。

おつです。分かったことだよ。

データ分析企業と面談して分かったこと

データ分析企業の分類

①事業(データ)を持ってる会社
自社でやれるので開発環境を整えやすい。特定の分野のデータ分析に限られるが、深くはやれる。
②研究所

③受託系の会社
いろんな会社を相手にするのでいろんなデータ分析スキルが身につく。開発環境は銀行相手とかだと制限を受けることも。

データ分析で強い会社

データ分析企業で強いのは下記2つのどちらか。
①データを持っている会社
データあってのデータ分析なので。また、一度分析した内容を他社に売るとかもできる。(受託だと、相手の会社に合わせてデータをいじって初めて価値が出る。)
②人材を囲える会社
良い人材は良い人材のいる会社にくる。

最終的には①が強い。データ持ってる会社がエンジニアを囲ったら、その時点で受託系は全部不必要になる。受託系でゴリゴリやってた会社がデータ持ってる会社と合併するケースもあるくらい。

データ分析の3つのスキル

①ビジネス
データ分析はコンサルチックになるので相手のトップと話すスキルも必要。
②コーディング
実装できるか。これはJavaとかCやれてればよい。逆にPython半年とかは実力が測れないらしい。
③統計
統計の知識。統計検定準一級レベルが望ましい。大学の講義だと二級レベルとのこと。

転職の際はこれらに加えて実務経験があれば加点されるかも。ただし、どれくらいのビックデータを扱ったかによる。あと、文系出身だとどの程度数学がやれるのか心配されるケースもあるのでそこは押さえた方がよさそう。

データ分析から進めるキャリア

①データサイエンティスト
機械学習エンジニア

データ分析のレベル、それぞれ必要なスキル

①データ抽出・加工
必要スキルは
SQL、tableau、エクセルパワポ

②統計・モデリング
必要スキルは
統計、R、SPSS、Mdeler、kaggle

機械学習・AI
必要スキルは
機械学習Python、AIプラットフォーム

勉強法

これは色々記事あるからそれ読んだ。 データサイエンティスト&機械学習(人工知能)エンジニアのスキル要件と、過熱する人工知能ブームが生み出す狂騒曲と(2018年2月版:追記あり) - 六本木で働くデータサイエンティストのブログ

以上!!!

【Python】データ分析 - データ分析って、つまり、どういうことなのか考える

おつです。かく。

データ分析とはつまりどゆこと

今データ分析の勉強をしており、Pythonのデータ分析ライブラリ群の使い方をちまちま覚えている。ふーんこんなもんかと思うんだが、ただ、使い方がわかったところでどうしようもない面はある。なので、データ分析するとき、どんなフェーズがあるのかとか、それぞれ何を目的に行う処理なのかなどまとめときたい。

データ分析全体の意味

データ分析データ分析言い過ぎてなんかよくわからんくなってきたが、データ分析ってつまりデータから意味を取り出すことだよな?

データ分析の作業フロー

データから意味を取り出すために、以下のようなことをすると聞いている。

分析目的の把握 DBからのデータ抽出
データ加工
分析試行錯誤
何か見立て
現場で実証
実装

それぞれまだチャンクダウンできそうなので、考える。

分析目的の把握

.
.
.
.
.
.

DBからのデータ抽出

どんなデータから意味を取り出すか。

.
.
.
.
.
.

データ加工

ここがPythonならpandasとかで処理するところ。分析が次にあるので、まあ分析できるような状態にしなきゃならんのよな。何があると分析できねえよってなるの .
.
.
.
.
.

分析試行錯誤

.
.
.
.
.
.

何か見立て

.
.
.
.
.
.

現場で

.
.
.
.
.
.

【キャリア・転職】退職(するかどうかわからんけど)理由とか

おつです。かく。

退職(するかどうかわからんけど)理由

・なんとなくSEやってた前職

俺は新卒でSIerに入ってるけど、正直エンジニアになろうって感じで就職したわけでもないし、金融行きたいなってわけでもなかった。単に内定もらえて、配属ガチャで金融に行っただけ。ただ、配属されてみて、まあCOBOLのコーディングが刺激的だったかと言われると微妙だし、ソコソコ重労働でもあったけど、楽しくやって、開発の基礎は学べた。まあそんな感じで、フワーッとエンジニアやってた。

・転機は育休

転機になったのが育児休暇に入ったこと。Pythonに触れて個人開発をして、初めてプログラミングって楽しいなと思えた。いろんな言語を学ぶことが楽しいと感じた。HTML, CSS, JavaScript, PHP, SQLとやってみて、できること増えたし、それぞれ言語設計の違いとかがすごく面白い。

・同時に悩みが

同時に、こうなって初めて「どんなエンジニアになりたいか」「どの業界ドメインで働きたいか」について悩んだ。これ、自分はあんまり狙ってIT入ってないから、エンジニアとしてのアイデンティティのなさとかバックグラウンドのなさに不安になる。こういう悩みを持つと、俺はやっぱ技術職向いてないのかな? って思ってしまう。

・なぜ今更悩んだ? - 覚悟が決まったから

ただ、そう思う一方で、面白いのは、俺はこれまでそんなこと悩んだことは無かった。今になって急に悩み始めた。これなんでなんだろ? って思ったんだけど、多分それは、俺自身がエンジニアとして行きていくことに覚悟ができたってことなんだと思う。

・覚悟の理由 - 理由なきエンジニアと理由が求められる現在

なんとなく内定もらって、なんとなく金融で働いていた頃、それは単に流れでそこに行き着いたってだけだったから、別にエンジニアをやってる理由はなくって、けど辞める理由もなかったからそこにいた。エンジニアやってることに理由なんていらなかった。
けど、今になってみると、俺はエンジニアやりたいから、なんでやりたいのか理由がいるんだよな。だからどうなりたいとか、そういうのが必要になった。つまり、俺はここにきて初めてエンジニアとして行きていくことに覚悟がついたってこと。

・今後どうなりたいのか?

んでそうなった時、今の金融でCOBOLを書き続けたいかっていうとそうは思わない。もっと俺のやりたいエンジニアリングがあるなーと。卒論で「坊ちゃん」をグラフ使って解説したなあと思って、データ分析みたいなのやってみたら面白いかも知れんなと。前職でもコーダーチームのリーダーやってた時みんなの成績管理して降ってたのは楽しかったし。
データ分析弊社にあるならいいけどなさそうだから、まあ転職するか〜〜と思ってる。

将来像

データアナリストとしてスキルを身につけたのちは、マネジメント方面へ進むというよりはWebなど別領域のスキルを身につけたり、データ分析の更なる技術研鑽を行ったり、現場でのキャリアを重ねて行きたいと考えております。 あとコンサル方面もあんまりで、どっちかっつーと延々エンジニアで、データをどう取ってくるかみたいな面からハードにいったりwebにいったりしてみたい。

以上!!!

【SQL】SQLの基本的な書き方についてまとめ

おつです。SQLのについてまとめる。

SQLの三つの言語

SQLには三種類の言語がある。

  1. データ定義言語(Data Definition Language)
  2. データ操作言語(Data Manipulation Language)
  3. データ制御言語(Data Control Language)

が、書いていく時にはそーんなに意識するところもないと思うのでここではまとめて扱うことにする。

基本的な書き方

SELECTで取得したいカラムを指定してFROMでどのテーブルから取得するのか指定するやつ。

SELECT カラム名
FROM テーブル名
WHERE 条件文
ORDER BY カラム名 ASC(または DESC)
LIMIT 件数;

エクセルみたいな表を想像して欲しいんだが、カラム名ってのは列の名前のことで、テーブル名ってのが表についた名前のことだ。
条件文についてはいろんな書き方があって、WHERE カラム名 = 'やくざ';とかWHERE カラム名 >= 100;とかWHERE カラム名 LIKE '$¥%なまはげ%';とか書ける。WHERE NOT カラム名 = 100;WHERE カラム名 IS NOT NULLみたいにNOTを使うこともできる。
条件文で出てくるLIKEってのは、カラム名のうち特定の文字列を含むデータを取ってきてねという命令。%を使ってワイルドカード指定もできる。
ORDER BY は並び替え。ASCが昇順、DESCが降順だ。
LIMITは件数。5とかって書けば5件だけ出てくる。
ちな、文末の';'は絶対に忘れると思うので気をつけたい。

もうちょい発展系

重複を消す

SELECT DISTINCT(カラム名)
FROM テーブル名;

取得したデータに足したり引いたり関数かけたり

SELECT カラム名 + 1
FROM テーブル名;

こんな感じでカラム名書くところに計算式を入れられる。また、SUM(カラム名みたいな感じに組み込み関数を埋め込んだりもできる。まあでもSELECT文がめっちゃ長くなったりしたら困るから、多分個々に埋め込まなくっても良いみたいな書き方がそのうち出てくるんだと思う。

ちな、関数は他にもあって、AVGMINMAXCOUNTなどがある。

GROUP BY

また、ちょっと難しいもので、GROUP BYってのがある。

SELECT MAX(price), date
FROM table
WHERE category = 'ごま'
GROUP BY date
HAVING MAX(price) > 200;

こんな感じ。これは、tableってテーブルからcategoryがごまのもので、dateでグループ化して、priceの最大値とdateを表示したのち、MAX(price)が200を超過したものだけ表示するってこと。
新しく出てきたものについて解説すると、GROUP BYってのは文字通りグループ化するもので、これを使う時SELECTにはGROUP BYで使われたカラム名と集計関数としか書けない。
また、HAVINGWHEREと同じく条件文なのだが、違うのは条件をかけるタイミングだ。こいつはGROUP BYされたあと、条件文を適用する。ので、集計結果に対して条件をかけられたりする。

ちな、SQLのコマンドには実行の優先度があって、下記のような順番らしい。

検索:WHERE
グループ化:GROUP BY
関数:MAXなど
HAVING:HAVING

ほーん。

JOIN - テーブルの結合

JOINを使うとテーブルの結合ができる。

SELECT カラム名
FROM テーブルA
JOIN テーブルB
ON テーブルA.カラム名 = テーブルB.カラム名

こんなもん。

以上!!!

【SQL】SQLの基本的なところ

おつです。かく。

SQLとは

SQLってのは、RDBMSリレーショナルデータベース管理システム)をいじる言語。 詳しいところはこの最高に分かりやすいサイトでお勉強してくれと思う。重要な点については下記にまとめる。

宣言型言語である

SQLは他のプログラミング言語PythonとかJavaとか)とはちょっとノリが違う。具体的にいうとSQLは宣言型言語(アウトプットの形を記述する言語)であり、他の手続き型言語(どうやってアウトプットを取得するかを記述する言語)とは異なる。 また、プログラミング言語と違って良いところは、SQLはISOで規格化されており、これさえできればもうほとんどあらゆるDBでSQLが使える。DB言語はマスターしたも同然ということだ。

三つの言語から構成される

ここはもう引用元からまるまる引用しちゃうけど、

SQLは、大きく分けて3種類の言語から構成されています。データベースを制御したり操作したりする際に使い分けられ、すべて命令文で動詞と目的語を組み合わせた構文です。
●データ定義言語(Data Definition Language)
データ定義言語はDDLと略され、RDBMSで扱うオブジェクト(テーブルやインデックスなど)の構造や、オブジェクト同士の関係を定義する構文です。
DDLの命令文>
CREATE:新しいデータベースやテーブルなどのオブジェクトを定義する
JOIN:テーブル同士を結合する
DROP:定義したオブジェクトを削除する
ALTER:定義したオブジェクトの内容を変更する
TRUNCATE:データをすべて削除する
●データ操作言語(Data Manipulation Language)
データ操作言語はDMLと略され、データベースを操作するための構文です。目的語やさまざまな条件を示すキーワードと組み合わせて使われ、多くのパターンがあります。目的語には「~以上」「~以下」などの条件をつけることもでき、SQL関数と呼ばれる関数を使用することもできます。
DMLの命令文>
SELECT:データベースを検索する
INSERT:データを挿入する
DELETE:データを削除する
UPDATE:データを更新する
●データ制御言語(Data Control Language)
データ制御言語はDCLと略され、データへのアクセスを制御する構文です。トランザクションやシステムを管理したり、ユーザーのアクセス権を制御したりするために使われます。
DMLの命令文>
GRANT:ユーザー権限を付与する
REVOKE:ユーザー権限を削除する
BEGIN:トランザクションを開始する
COMMIT:トランザクションを確定する
ROLLBACK:トランザクションを取り消す

SQLとは?データベース言語の基礎知識をわかりやすく解説!|発注成功のための知識が身に付く【発注ラウンジ】

だそうだ。個々に説明していくと案外量があったので、ひとつひとつの言語については別記事を作って紹介する。

以上!!!