pyarrowを試してみた

pyarrowでのparquetの読み込みとDataFrameへの変換のパフォーマンスを確認してみた。

parquetは読み込みは当然csvよりも早いけど。DataFrameへの変換が遅いのでpandasの壁は越えられない…

内容はGetting Startedそのまま

データセット: Uber Pickups in New York City

パターン

  • CSVを読み込んでDataFrameへ変換
  • Parquetを読み込み
  • Parquetを読み込んでDataFrameへ変換
import pyarrow as pa
import pandas as pd
import pyarrow.parquet as pq

CSV = 'uber-raw-data-janjune-15.csv'
PARQUET = 'uber-raw-data-janjune-15.parquet'

df = pd.read_csv(CSV)
pq.write_table(pa.Table.from_pandas(df), PARQUET)
!ls -lh uber-raw-data-janjune-15.*

    -rwxr-xr-x@ 1 kazup0n  staff   526M 11 13 19:30 [31muber-raw-data-janjune-15.csv[m[m
    -rw-r--r--  1 kazup0n  staff    69M  2 19 01:57 uber-raw-data-janjune-15.parquet
from time import time

def bench(proc, label):
    start = time()    
    proc()
    end = time()
    print('{}@{}'.format(label, end-start))

def read_and_to_df():
    table = pq.read_table(PARQUET)
    table.to_pandas()
                       
    

bench(lambda : pd.read_csv(CSV), 'csv')
bench(lambda : pq.read_table(PARQUET), 'parquet')
bench(read_and_to_df, 'read_and_to_df')

csv@10.470412969589233
parquet@5.245838642120361
read_and_to_df@10.890496969223022

データサイエンスチームをどのように作るのか?

前回の記事を書いている時に見つけたQuoraの質問がその時ちょうど考えていたことにぴったりだったので、内容をまとめておこうと思います。

How do I build a data science team?

Ricardo Vladimiro氏 は回答の中で、チームを作るための手順を3つにまとめています。

Step 1 - Defining exactly why I wanted a data science team.

Step 2 - Defining hiring needs.

Step 3 - Develop, develop, develop!

特にStep2の内容が採用に関することだったので興味を持ちました。

続きを読む

面接官「何故弊社でなければならないの?」

ちょうど、採用について考えている時、次のまとめをタイムラインで見つけた。

togetter.com

コメントの多くは求職側は待遇と仕事の内容が条件と合うならどこでもいいと思っているでしょ?そんなこと聞くなよ という趣旨のものだが、

採用側からすると採用後のミスマッチを防ぐために下記のようなことを聞きたいのだと思う。

  • 転職で求めるものを実現できるのか?
  • この会社でどういうことをしたいのか?
  • どういう点に興味を持ったのか、やりがいがありそうか

それなら、それで直接聞けばいいのにね。

あと面接官 って言葉に採用する側とされる側の力関係が対等でないって考え方が滲んでくるのが少し違和感あります。

データドリブンな企業活動を推進するためにはどのようにチームを作るのか?

ビッグデータ、データサイエンスへの注目は2013年ごろをピークに減退し、話題の中心は機械学習やAI、企業のデジタルトランスフォーメーションに移っています。 とはいえ、これらの言葉は同一の概念つまりデータの収集、モデリング、仮説検証、などといったデータドリブンな企業活動に関わる事柄に違いありません。

f:id:dustytrombone:20170124000335p:plain Google トレンド

データサイエンス、ビッグデータの活用という言葉で特別視されてきた活動が、3年、5年くらいの時間を経て、 今日、表計算ソフトでデータの集計をしたり、ミーティングでプレゼンテーションツールを使って発表するのと、 同じレベルで日常化する時が来るだろうと、という予想はそれほど的外れでないように思えます。

データに基づく企業活動に必要なスキルセット

大量データをハンドリングする技術や、機械学習の手法は日々進化していますが、技術を使ってどのような活動をするのか、 そのような活動を行う人たちにどんなスキルが必要なのでしょうか?

一般社団法人日本データサイエンティスト法人は、データサイエンティストに求めるスキルセットを下記のように定義しています。

1.ビジネス 力(business problem solving):課題背景を理解した上で、ビジネス 課題を整理し、解決する力
2.データサイエンス 力(data science):情報処理、人工知能、統計学などの情報 科学系の知恵を理解し、使う力
3.データエンジニアリング 力(data engineering):データサイエンスを意味のある 形に使えるようにし、実装、運用できるようにする力

データサイエンティスト協会、データサイエンティストのミッション、スキルセット、定義、スキルレベルを発表

技術やアルゴリズムの発展とともに、全ての企業に必要な数のデータサイエンティストが揃うのかというと、それは難しいと思います。 現在一般的に言われているデータサイエンティストに必要なスキルセットを全て備える人材は現在も、将来も希少なものであるからです。

データドリブンチームの作り方

私は全ての企業に上記のスキルを備えた人材を揃えることができないなら、上記のスキルの一部を持った複数の人材を集めて、チームとしてまとめ上げることで、 数少ない優秀なデータサイエンティストと同等か、それ以上の成果を上げられると思っています。 また、中小企業が多い日本ではこのやり方でチームビルディングする方法が向いているのではと思います。

これをどのように実現するのかは、一部の大手企業やスタートアップが現在進行形で取り組んでいる問題ですが、 次のような切り口で考えていく必要があると考えています。

  • 人材確保が難しくなっていく中で、必要とするコンピテンシーを持つ人材にどのようにアプローチして採用活動を行うのか?(採用とマーケティングの問題)
  • チームを構成するメンバーにどのようなコンピテンシーが必要で、どれくらいの割合で配置したらいいのか? (人材ポートフォリオの問題)
  • チームにどのようなプラクティスや規範、環境を与えれば最大限の成果を上げられるのか?(マネジメントや文化の問題)

ということを、最近少し考えた