俺のOneNote

俺のOneNote

データ分析が仕事な人のOneNote愛とか、分析小話とか。

同ディレクトリ内データ結合はExcelで超簡単にできることが全世界に広まってほしい

今日のお悩み

あるディレクトリ内に、同じようなCSV・xlsxをたくさんつくって、後で結合しなきゃいけない

とか

100個レイアウトが同じデータがあるんだけど結合作業が死ぬ

とかで困ったことがある人は絶対いると思うんですが、

Excelで一発ですよ。

というお話です。

Power Queryを知らなくても簡単

機能的には Power Queryという機能なんですが、知らなくても大丈夫。 クリックだけでできちゃう。

こんなデータ構造はお仕事でよく見る話

f:id:kopaprin:20210204224410j:plain

ちなみに中に入っているのは全部同じテーブル構成。

サンプルはちょっとだけですが、100ファイル・100ディレクトリあったらうんざりです。

Excelデータタブ > データの取得 > ファイルから > フォルダーから

f:id:kopaprin:20210204224550j:plain

たくさんデータファイルが入っているディレクトリのパスをコピペすると・・・

f:id:kopaprin:20210204224730j:plain

勝手に一覧で読み込んでくれました

あとは結合を押して読み込むと。

f:id:kopaprin:20210204224830j:plain

ちゃんとテーブルにしてくれましたー!

ちなみにSource.Nameでファイル名もカラム化してくれるので大変に良き。

Excel Power Queryに詳しくなれば、 多少カラム内容が違うものでも処理できるようにプログラムできます。

support.microsoft.com

データが100個あってもあきらめないでくださいませ。

OneNoteのリンクを共有する時の注意点

表題のとおり、OneNoteのリンクを共有するときにちょっとハマったので覚書。

特定のページを誰かと共有したいときは多くありそうな気がしますが、上側の共有ボタンは「ページ」の共有には不適切。 f:id:kopaprin:20201216142926j:plain

f:id:kopaprin:20201216142940j:plain

f:id:kopaprin:20201216142952j:plain

ここで生成されたリンクを開くと、上記のとおりノートブックのトップに飛んでしまう。 あくまで「ノート」を共有したいときの機能。

「ページ」を共有したいときは、該当ページから右クリック→「ページへのリンクをコピー」を使う。 f:id:kopaprin:20201216143010j:plain

自動的にタイトルがハイパーリンクになって大変に良き。 f:id:kopaprin:20201216143029j:plain

だれかにメモ書きを共有したいときは忘れずこのページリンクを使いましょう。

TableauでUnitChartを作る

先般 Tableau Makeover Monday 2020/W36に参加しました。

そこでUnit Chartを使いたかったので少しお勉強した結果を備忘録します。

Unit Chart

ピクトグラム(Pictorial Fraction Chart)とか呼ばれたりもします。

Pictorial Fraction Chart | Data Viz Project

Viz作品では以下のような感じで、砂糖&食物繊維がどれくらい含まれているかを一目で理解できるようにするために用いました。

Tableau Public

f:id:kopaprin:20200923160338j:plain

作成方法は先駆者がすでに色々発信してくれていますので、こちらも参照するといいと思います。

Creating A Unit Chart in Tableau - The Data School

https://vizartpandey.com/unit-chart-in-tableau/

ここで紹介するのは、上記例よりかなり稚拙ですが、 簡素に実装した例です。

データ準備

まずはUnit Chartで表したい集計値を用意します。

f:id:kopaprin:20200923160354j:plain

以下紹介する実装内容は、集計済みテーブルがある場合にのみ対応しているので、
トランザクションデータからメジャーで集計・可視化する場合は別途他の方法をご検討いただけるとよいです。

つづいて、ピクトグラムの位置情報となる座標テーブルを用意します。

f:id:kopaprin:20200923160404j:plain

colピクトグラムのX座標、rowはY座標になります。
この例では1行10列のピクトグラムになることが分かります。
compareは色分け時に利用するものです。

先ほどの集計データは10が最大値でした。
そのため、ピクトグラムの最大も10にしています。
ここの数は、手持ちのデータを踏まえて最大値を決める必要があります。

データモデル設計

先ほど用意した集計データを読み込みます。

f:id:kopaprin:20200923160418j:plain

つづいて、作成した座標データをjoinします。 f:id:kopaprin:20200923160434j:plain が、もちろん結合キーが無いのでエラーになります。

ここで、集計データすべてに対して、ピクトグラムの座標情報を与えたいので、
Full Outer Joinできるよう関係式として1を作成します。

f:id:kopaprin:20200923160448j:plain

これで狙い通り、全組み合わせをJoinしたデータモデルを用意できます。

f:id:kopaprin:20200923160513j:plain

Vizの準備

col , row をそれぞれ列・行に配置します。
メジャーだと集計されてしまうので、ディメンションに変換するのを忘れずに。

f:id:kopaprin:20200923160537j:plain

以下色分け用のBooleanを用意します。

MAX([Value]) >= MAX([Compare])

これは、集計値(Value)よりも比較値(Compare)が大きければTrue,
小さければFalseを返します。

f:id:kopaprin:20200923160651j:plain

これを「色」マークに配置すれば、各Classごとの色分け条件を評価するため、集計値以下のマークと以上のマークの色分けができるようになります。

f:id:kopaprin:20200923160709j:plain

あとは適当に補助線を消したり、
アイコンを以下のようなサイトで選んで変更して完成です。

アイコン素材ダウンロードサイト「icooon-mono」 | 商用利用可能なアイコン素材が無料(フリー)ダウンロードできるサイト | 6000個以上のアイコン素材を無料でダウンロードできるサイト ICOOON MONO

f:id:kopaprin:20200923160936g:plain

Appendix

ちなみに最大値10のデータを1行10列で表現しましたが、 2行5列ではどんな感じになるでしょうか??

その場合は以下のような座標情報を用意してあげればOKです。

f:id:kopaprin:20200923173932j:plain

結果は以下のようなイメージ。

f:id:kopaprin:20200923161115g:plain

集計済みデータにしか対応していないので、中々使い勝手が悪いですが、
スポットの可視化に対しては手軽にできるので便利でした。

レビュー:効果検証入門〜正しい比較のための因果推論/計量経済学の基礎

通読・写経終わったので備忘レビュー。

統計的因果推論を実務的に利用できるようまとめられた一冊でした。

私個人は、RCT・有意差検定や傾向スコアなど、断片的にしか理解しておらず、その利点・欠点なども明確に説明できない状態でした。 そんな自分にはピッタリの本でした。

RCTが実現できた場合の解析例、実現できない場合のバイアスの影響や取り除くための探索的な解析例、傾向スコアマッチング・重み付き推定、介入時期前後を解析するためのDIDなど、 実務家が直面しやすい施策検証・効果検証の場面のベストプラクティスを提供してくれます。

Rに習熟していなくても、処理内容を丁寧に解説してくれているので、仮にコードの読解ができなくとも内容は理解できるようになっています。 Pythonによる書き起こしをしているユーザーの方もいらっしゃいますので、Pythonしかわからない場合はそちらも参考にするといいかもしれません。

「効果検証入門」をPythonで書いた - Qiita

昨今は分析というと機械学習ディープラーニングによる推論精度あたりにフォーカスされることが多いですが、 こいうった仮説設定と探索的な因果推論、効果検証こそデータ分析の本質ではないかな、と思ったりします。

R と Python よく出るテーブル処理対応表

RとPythonのよくやるテーブル処理の操作覚書。

#python
import pandas as pd
pd.__version__
# '1.0.3'
#R
library("tidyverse")
packageVersion("tidyverse")
#  ‘1.3.0’
  • 厳密にはアウトプットの内容が完全に一致するものを並べているわけではありません。
  • 単純な関数・メソッドで、似たような目的の処理ができるものの対比です。
  • 同じ目的で並べてる関数・メソッドで、返り値や型が一致しないものもあります。
  • R, Pythonともに不自由なので、他にもっとよい関数等が存在すると思います。ご容赦ください。
  • 自分自身の覚書なので随時更新するかもです。

テーブルデータ(csv)の読み込み

内容 R Python
csv読み込み(ヘッダー付き) read.csv("hoge.csv") pd.read_csv("hoge.csv")
csv読み込み(ヘッダー無し) read.csv("hoge.csv", header = F ) pd.read_csv("hoge.csv", header=None)

テーブルデータの概略確認

内容 R Python
行列数の確認 dim(df) df.shape
データ型の確認 str(df) df.dtypes
先頭行の確認 head(df) df.head()
要約統計量の確認 summary(df)  df.describe(include="all")

行列の抽出

内容 R Python
カラム名を指定 df$hoge
df[,"hoge"]
df["hoge"]
df.loc[:,"hoge"]
カラム番号を指定 select(df, c(1:3))
df.iloc[:,range(0,3)]
条件指定行を抽出 filter(df, hoge == "abc" ) df[df["hoge"]=="abc"]

新規列挿入

内容 R Python
新しい列を挿入 mutate(df, hoge = 10) df["hoge"] = 10

集計

内容 R Python
groupbyで集計 group_by(df, col) %>% summarise(hoge = sum(values)) df.groupby("col").sum()["values"]

Merge

内容 R Python
inner join inner_join(df1 , df2 ,by="hoge") pd.merge(df1, df2, on='hoge', how='inner')
left outer join left_join(df1 , df2 ,by="hoge") pd.merge(df1, df2, on='hoge', how='inner')

データアナリストを目指したい人のために個人的な道案内をしてみる

コロナ影響による陰りがありつつ、データサイエンス人気は依然として高そうです。

僕自身も、データサイエンス・データアナリティクスは引き続きビジネスにあたって、なくてはならない技術でありつづける気はしています。
(コレだけでは食っていけなくなる危機感もある)

データアナリストを名乗る底辺な私ではありますが、これから目指したいと思っている学生やキャリアチェンジ組の方、新卒でデータアナリストになってこれから頑張ろうとしている人に、自分の経験を元にした至極私的な道案内をしてみます。

※なんかamazonリンクばっかで大変アフィリエイトっぽい感じですが、一切リンクないので安心してご閲覧ください!爆

私はどんな人?

そもそも私はこんな感じです。

・10年ぐらいコンサル兼データアナリスト、転職後2年ぐらいデータアナリスト専業
・R、Python等のプログラミング言語ちょっと。Power BI , TableauなどBIツールちょっと
機械学習ディープラーニング実装できるけど教科書レベル(kaggleとかは勝てない)

上記のとおり、今をときめくkagglerとは程遠く、機械学習エンジニア寄りではありません。
どちらかといえばコンサルティングマーケティング寄りのデータアナリストだと思います。
なので、データサイエンティスト(機械学習エンジニア寄り)になりたいって方は戻るボタンを押すのが賢明です。
あくまでフロントに立ちつつ、現場で必要になるデータ分析をするような人間になるため に何が必要になるか(というか、自分がこんなこと大事にしていきたい)ということを書きます。

フロント意識を鍛える

これは職場環境やポジションによるのかもしれませんが、ビジネスの先にいるお客様のことを考えることが何より大事なんだろうな、と思っています。
「バックオフィス」みたいな意識を持ってしまうと、どうしても「お客様」ではなく、対峙する営業の人や上司が「どう考えるか?」を前提にしてしまいます。
「お客様」と接することができる立場にある場合は積極的にフロントに出ること。
フロントに出れない場合でも、分析・提供した結果、「お客様」にどんなメリットがあるかを考えたアウトプットを心がけることが大切であると感じております。

コンサルティング力・論理的思考力を鍛える

論理的思考力はデータ分析以上に重要で価値創出につながる基礎になります。
超先進的で高度なデータ分析技法を利用したとしても、論理的な課題選定と仮説立案・結論のためのExcel集計に勝てないケースもあるのではないでしょうか?
昨今、データサイエンスブームと演算速度の向上やクラウド技術の発達にあわせて技術的な要素が非常に重視されていますが*1、 そもそもの論理的思考能力をおろそかにしてはいけません。 データアナリストとして、論理的思考が崩壊してると、たぶんビジネスのテーブルに乗りづらくなると思います。
幸いにもいろんな良書があるので、自身のビジネス分野も踏まえつつ、一つは読んでみることをお勧めします。

コンサル一年目が学ぶこと

コンサル一年目が学ぶこと

マッキンゼー流 入社1年目問題解決の教科書

マッキンゼー流 入社1年目問題解決の教科書

統計的思考力を鍛える

論理的思考力と合わせ、統計データの読み方、導き出し方、統計指標の利点・欠点など必要最低限のことを叩き込みましょう。
記述・推測統計や確率分布、統計的仮説検定、基本的な多変量解析など、全く触れずにPythonとか、kaggleとかに走るのもどうかなー・・・と感じる次第です*2

僕自身、数えるのも無意味なほど恐ろしい大きさのデータを扱う毎日ですが、 意外と古典的な統計学的知見が必要なケースが多いです。(サンプリングとかABテストとか)

また、統計学を”ある程度”理解するためには基礎的な数学力もある程度必要です*3
特にディープラーニングベイズ推定などを理論面から理解しようとすると、解析学線形代数学は避けて通れません。
数学的教養がある方なら問題ないですが、数学を避けてきた方は必要性を見極めつつ、学ぶ必要があります。

統計学のための数学教室

統計学のための数学教室

  • 作者:永野 裕之
  • 発売日: 2015/09/11
  • メディア: 単行本(ソフトカバー)

技術者のための確率統計学 大学の基礎数学を本気で学ぶ

技術者のための確率統計学 大学の基礎数学を本気で学ぶ

  • 作者:中井 悦司
  • 発売日: 2018/09/18
  • メディア: 単行本(ソフトカバー)

表現力・プレゼンテーション力を鍛える

次に示す「実装力」とどっちを重視するか迷いましたが、より本質的なほう、ということでこちらを先に紹介。
論理的思考力とやや被る概念です。

データ分析結果は必ず誰かに見せることが必要になるはずです。
同じチームメンバー?上司?顧客?
分析結果はその分析が必要となっている「文脈」を見極め、それに合うように最適な形*4でアウトプットすることに善処することが必要になります。

僕はデータ分析の5W1Hと呼んでおりますが、その思想は会社公式ブログに書いたのでもし時間があればこちらもよろしくお願いします(宣伝!)

techblog.cccmk.co.jp

分析した結果を最大限活用してもらえるよう、効果的に伝える技術は学ばないといけません。

Google流資料作成術

Google流資料作成術

実装力を鍛える

さて、やっとたどり着いた実装力。
プログラミング言語とか、BIツールとか、SQL等の話です。

正直昨今のデータサイエンスブームにより、僕なんかよりも技術・経験が上な人がいっぱいな気がするのであんま偉そうなこと言えないですが・・・。

・RとPythonを学ぶ

RかPythonか?みたいな記事や、RなんかよりPython一択!みたいな言動もよく見られます。
が、どっちもやるべきです。
RにはPythonにはない豊富な統計ライブラリとアウトプットの潤沢さがあります。
一方のPythonはアプリケーション実装への汎用性の高さや主要な機械学習ライブラリがある程度画一化されておりシンプルであることが魅力です。
データアナリストを名乗る以上、どっちもある程度書けるようにしといたほうが仕事の幅が広がります。*5

Pythonで動かして学ぶ!あたらしい機械学習の教科書 第2版 (AI & TECHNOLOGY)

Pythonで動かして学ぶ!あたらしい機械学習の教科書 第2版 (AI & TECHNOLOGY)

  • 作者:伊藤 真
  • 発売日: 2019/07/18
  • メディア: 単行本(ソフトカバー)

Rではじめるビジネス統計分析

Rではじめるビジネス統計分析

  • 発売日: 2014/07/17
  • メディア: Kindle

Kaggleで勝つデータ分析の技術

Kaggleで勝つデータ分析の技術

・BIを学ぶ

BIツールはここ数年でかなりの会社に浸透してきているのではないかと思います。 Power BI , Tableau , Google Data Portal , Domoなど、多くのツールがあふれています。
どれを学ぶか?は職場に応じて決まるはずです。
アナリストである以上、機械学習の精度を突き詰めることもいいかもしれないですが、可視化によって多くの人がインサイトを得ることを支援することも大事でしょう。

もし、職場でBIなんて導入していない!という場合は、 無料で始められる Power BI , Tableau Public ,Google Data Portalなどを私的に利用・学習すると良いと思います。
それぞれ、得意・不得意などがありますが、BIによるデータ集計&可視化の概念はどれも似たり寄ったりです。
BIの集計・可視化概念はどれで遊んでも習得できます。

SQLを学ぶ

R・Pythonのようなプログラミング言語、BIのような可視化ツール、これとともに学ぶべきは、データ抽出・集計の基礎になるSQLでしょう。

Python, Rで分析する以前に、データを必要な形で抽出できるようSQLを書く場面は必ずあります。
BIにおいてもSQLやデータベースの概念を理解しておくと集計が大変理解しやすい場面もあります。
ほんとにシンプルなjoinや, サブクエリが書けるだけでもいいと思います。*6
ER図も理解できるようにしておきましょう。

+αを鍛える

あとは仕事内容や自信の興味関心に沿って、スキルを得ていく感じになるでしょう。
分析だけじゃなくて環境から作らないといけない場合はVMとかコンテナ技術が必要になるかと思われます。

Google Cloud Platformではじめる機械学習と深層学習

Google Cloud Platformではじめる機械学習と深層学習

  • 作者:吉川 隼人
  • 発売日: 2017/12/12
  • メディア: 単行本(ソフトカバー)

データエンジニア的な立ち回りも必要な場合はデータベース関連技術でしょうか。*7

ソーシャル分析とかWEB解析が必要ならWEB, クローリングや自然言語処理まわりの技術。

Rによるテキストマイニング入門

Rによるテキストマイニング入門

学ぶことに終わりはないのです・・・涙目。

appendix

大変私的かつ支離滅裂な内容になりましたが、
ここに書いてあることは僕も誇れるほどできてないし、まだまだ修行中です。
でも、ある程度仕事上の必要性を加味してさらっと学ぶことができれば、ビジネスの前線で貢献できるデータアナリストとして胸を張ることができると思います。

すべてはデータを利用して社会に価値提供できるようになるため、日々がんばっていきましょう。

*1:もちろん技術的に高度なことを覚えるのは重要だし、個人的にも一番頑張っているところ

*2:実装重視の機械学習エンジニア寄りの仕事なら無視してもいいのかもしれないですが

*3:統計検定1級に落ちた僕は”ある程度”も理解できていないのかもしれない・・・

*4:結果を捻じ曲げる、とかの意味ではありません

*5:それでも、どちらかに偏るのは仕方ないことですし、僕自身もPython偏重です

*6:いや、ダメかも・・・。僕も苦手なのでごめんなさい

*7:ここは読んだことある本がないので、これ良さそうだな~的なものだけpickup

レビュー:Pythonで学ぶネットワーク分析(オーム社 )

読了&写経が終わったので復習レビュー。

先般記事化した以下がやりたいために、ネットワーク分析に初めて手を出しました。

kopaprin.hatenadiary.jp

  • networkxを使うのが初めて
  • 数式・線形代数に抵抗がない

という場合に最適な本であり、僕自身もネットワーク理論初心者でありながら、
ネットワークで何が表現できるか?を俯瞰的に理解し、基本的なコードは実装できるようにはなったと思います。

数式・線形代数の知識が多少無いとつらい点もありますが、基本的に実装コードを用意いただいているため、
数式が理解できなくともやりたいことがコードで再現できるように配慮されています。

こちらの本はネットワーク分析で何ができるかがテーマであるため、
自分がやりたいことをnetworkxを使ってどうやって実装する?みたいなことはリファレンスで補完する必要もあります。

networkx.github.io

第6章のグループ分割の話や第8章の頂点類似度は商品購買アソシエーションや口コミ分析等で使ってみたいと思いました。 うまくいったらいずれ記事化したいです。

書籍後半は膨大なアルゴリズムや理論があるであろうテーマをさらっと内容とコードを紹介いただいている感じなので、 ネットワーク理論に既に精通されている方には不要なのかもしれません。

以上、私のようなネットワーク分析初心者にとっては大変価値の高い本でありました。