アメリカ就職で大事なデータ分析スキルの話(その1)
データ分析力、というのは帰国子女などでなく、英語が厳しい日本人留学生にとって、アメリカでの就職戦線で戦うための大きな武器になる(注: 2020年現在)。実際に自分が採用を担当するときも、ポジションがジュニアであればあるほど、こういったデータ分析のためのスキルセットを持っているか、というのが重要になってくる。ネイティブスピーカーのよう会議を上手にしきったり、格式の高い文章を書いたり、ということが難しい日本人留学生にとって、データが扱える、というのは大きな武器になるはずだ。
どの程度のスキルがあればよいのか、という質問をたまに受けるのだが、答えは、"凄ければ凄いに越したことはない"、という当たり前のものになってしまう。航空会社から、同じ値段でどこにでも座ってよい、と言われて、エコノミーを選ぶ人はいないだろう(中にはそういった奇特な諸子もいるかもしれないが、私は大手を振ってファーストクラスにどかっと座るタイプである)。従って、正しい問いは、"書類選考を突破するにあたってレジュメに書いておくべきスキルは何か"、"インタビューを突破するにあたって、最低どれくらいのスキル・実務経験が必要か"、という極めて具体的なものである必要がある。これからこのトピックについて数回に分けて掘り下げたい(気合が続けば)と思うのだが、本稿では一回目として、僕の独断と偏見に拠る、そもそもこのデータ分析スキルとは何ぞや、というところからスタートしたい。以下、少し長くなるので結論からのべると、今からスタートする人はとりあえずSQLとPythonをやるべきだ。
まずデータを分析するにはデータを引っ張ってこなければならない。コンサルや投資銀行出身の諸子におかれては、Due Diligenceの時に出てくるビジネスプランにくっついてくる、整理されていない元データを思いだしてみよう(トラウマがよみがえらないことを祈る)。僕も昔、データルームに上がっていた解読不能なデータ(おそらくPOSデータ)をみてため息をもらし、ストレスのあまりファミチキを爆食いした記憶がある。データの出し直しをお願いしたことがある人も多いはずだ。ここでのよいニュースは、自分でデータをデータベースから引っ張ってくることにより、(1) 何度も他の人にお願いしてデータを出しなおしてもらわなくてすむ、(2) 仮説検証に必要な粒度にデータを整形して出せる、という点である。
多くの場合、データはRelational Database、通称RDBなるものに保存されている(こういったデータベースにデータが保存されていないことを不幸にも発見された場合、当社に残るか否かを再考することをお勧めする)。そしてこれに対して、こういうデータをください、というお願いをするための言語が、Standard Query Language、通称SQLである。因みに日本人は、エスキューエル、と発音するようだが、アメリカではシークゥォル、的な発音になる。細かい技術的な話は省く(というかデータベースの理論を本格的に学んだことがないからできない)が、ざくっと説明すると、RDBというのは、(1) 無茶苦茶大きなテーブルでとてつもない容量のデータを保存しておける、(2) 列でデータの種類を定義して(部署名、名前、社員番号、入社年数、給料)、レコードを一行一行保存していく、(3) 一つの列には同じタイプのデータしか入れられない(社員番号が数字、と定義されているところに、A1000、みたいなものを入れようとするとエラーになる)、というところだ。これに対して、こいうデータをください、ということを投げかけるのがSQLだ。以下のような感じで書ける。
SELECT 部署名, sum(給料) as 総給料
FROM Jinji_Table
WHERE 入社年数 < 3
GROUP BY 部署名
そうすると、こんな感じのものが返ってくる。
部署名 総給料
マーケティング 100,000,000
セールス 200,000,000
SELECT(何を)、FROM(どこから)、WHERE(どういう条件で)、GROUP BY(どの粒度で)、だけ書けばいいのだ。int main(void)みたいなお経もいらない!どうでしょう、簡単ではないですか?留意点としては、大きすぎるレコードを取ろうとするとデータベースに負担をかけ、Data Engineerから鬼詰めに会うこと間違いなしなので、WHEREで使用すべきパーティション(データベースの切り分け条件に使用する列)などを事前にデータに詳しい人に聞いておくことだ。あとはじゃんじゃんデータを引っ張ってみるに限る。これでデータを引っ張ってくる、という部分は完璧である。
次はデータを分析する、というステップに入る。一部の賢明な諸子におかれては、RなのかPythonなのかJuliaなのかやっぱりCで書くべきか、などといった点に日々頭を悩ませているに違いない。断言しよう、あなたが実際にモデルをDeployするような職種につかないのであれば、Pythonで十分である。Pythonの優れているところは三つある。(1) とてもシンプルに直感的に書ける(ほぼ機械に英語で指示している感覚)、(2) NumpyとPandasというとてつもなくデータ分析に有用なパッケージが提供されている、(3) 学習者の数が半端じゃないのでだいたいなんでもStack Overflowで見つかる。個人的には特に(3)が大きい。涙が出そうになる。本当に拝み倒したいくらい有難い。勿論、プログラムを書くという観点で見ると、Pythonは数ある中の一言語でしかないのだが、データ分析、という観点では2020年現在、今から始める言語としてはほぼ一択では、と思う(尚、僕はRをはじめに使ってその後Pythonに移行している派)。
またトラウマをよみがえらせてしまったら大変申し訳ないのだが、一部の諸子におかれては、まったく整理されていないデータをエクセルでなんとか結合しようとし、VLOOKUPやHLOOKUPなどを組み合わせ、最後の最後にエクセルがクラッシュした思い出をお持ちではないだろうか。私は思い返せないくらいあるし、このエクセルクラッシュが、キリマンジャロに氷河期から残る氷のように、私の腹の下に沈殿する皮下脂肪の理由の一つであることは想像に難くない。Pythonを使う限りにおいては、このリスクは極めて小さい。まずコードを書いて実行するので、仮に処理の部分でもたついたとしても書いたコードは無駄にならない。そして、デスクトップで実行したとしても、エクセルよりはるかに効率的にはるかに大きなレコードを処理できるのだ。今のご時世、低コストでクラウドにインスタンスを立てておくことだってできる。エクセルクラッシュのリスクは極めて低いのだ。
どうやって始めるかわからない場合、とりあえずAnacondaをインストールしておけばよい。インストールや設定に関しては、諸先輩方が有用な記事を(なんと有難いことに日本語ベースのものも)残してくださっている。そしてJupyter Notebookを開こう。最初のセルに、
import pandas as pd
import numpy as np
と打つ。これでPandasとNumpyはインポートされた。簡単すぎる。デスクトップに置いたデータは、
path = r'\home\sizmax\desktop\book.csv'
(rについては、これがあることで特殊な文字をエスケープできるのだがとりあえずつけておく、と覚えておけばよいと思う)
df =pd.read_csv(path)
としておけば、もうdfというデータフレームの中にすべて入ってしまっている。実際に試してみると、アンティークPCを愛する諸子を除き、相当大きなファイルでも難なく読み込むことがお分かりになると思う。データの中身は、
df.head()
とすれば、最初の5行が見える。あとは同じ要領でもう一つデータフレームを作って(df2と呼ぶ)二つのデータをMergeしてみよう。ここでは仮に、dfには社員番号順の社員名が載っていて(社員番号、社員名、というラベルで管理されていると仮定)、df2には社員番号と給与が載っているとしよう(社員番号リスト、給与、というラベルで管理されていると仮定)。
df_fin= pd.merge(df, df2, left_on = '社員番号', right_on = '社員番号リスト').drop(columns = '社員番号リスト')
とすれば、社員番号毎の名前と給与がのったデータフレームが出来上がった。隣の席の杉本(仮)がいくらもらっているのかわかる、垂涎もののデータである。欠損値がいらなければ、df_fin = df_fin.dropna(how = 'any')、とすればエクセルのiferrorでゼロで埋める時の代わりになろう。(尚、これは社員番号が固有値として管理されているという前提に基づいている)
見て頂いてわかる通り、特に何も難しいことはしていない。英語が読める人ならプログラミングの経験がなくても、なんとなく意味が分かるはずだ。しかもインターネットを使えば、必要な殆どの情報は見つかる。この手軽さ、とっつきやすさ、がSQLとPythonの魅力であり、お勧めする理由である。そして、SQLとPythonができるようになると、他者への依存度が劇的に下がる。何故ならデータ取り放題、分析し放題だからだ。ビジネス職として就職するにあたって、こんな便利なスキルはないと個人的には思う。
この夏から米国にMBA留学するものです。
返信削除興味深く読ませて頂きました。お勧めの書籍や学習方法等ありましたら、是非ご紹介頂けないでしょうか。宜しくお願い致します。
コメントありがとうございます!お勧めの書籍等についてはまた徐々に書いていきたいと思います。
削除