SlideShare une entreprise Scribd logo
1  sur  64
Télécharger pour lire hors ligne
Perl for
Visualization
YAPCASIA:2013 9/21
113年9月21日土曜日
print Dumper $me
{
twitter => “@muddydixon”,
organization => “NIFTY”,
job => “low spec full stack engineer”,
skill => [
“data collecting”,
“data cleansing”,
“visualization”,
]
}
213年9月21日土曜日
Today’s Topic
313年9月21日土曜日
Today’s Topic
413年9月21日土曜日
Key of Visualization
STORIES
are main concept of visualization
are buried in data
enhance your business
513年9月21日土曜日
Visualization
Two purposes:
1.Explanatory visualization
2.Exploratory visualization
613年9月21日土曜日
Explanatory visualization
communicating information
clearly and effectively
713年9月21日土曜日
813年9月21日土曜日
Can you find
STORIES?
913年9月21日土曜日
1013年9月21日土曜日
1113年9月21日土曜日
1213年9月21日土曜日
加齢による
技術向上
The more use, the higher skill
1313年9月21日土曜日
1413年9月21日土曜日
ひとりで
できない
10年選手は
いなかったEverybody who touch perl 10 years use perl :)
1513年9月21日土曜日
1613年9月21日土曜日
7-9年目に
がんばろう
7-10 years users practice more!
1713年9月21日土曜日
1813年9月21日土曜日
ここから
読み取る
のはムリ
We cannot find STORIES from text log
1913年9月21日土曜日
This is the
POWER of
Explanatory
visualization 2013年9月21日土曜日
I / You can
inform STORIES in data
to my / your colleague
to my / your boss
to my / your audiences
2113年9月21日土曜日
Exploratory visualization
Visualization allow you to find
STORIES from data
Data Mining
2213年9月21日土曜日
via(道具としての)データサイエンティストのつかい方
2313年9月21日土曜日
Problems
Data Mining Engineer
a few domain specific knowledge
Domain Specialist
a few mining skill
2413年9月21日土曜日
GOAL
Business
Success
Domain Specific Knowledge
Data Mining Skill
2513年9月21日土曜日
How to apply
Domain Specific Knowledge
to
Data Mining Processes
2613年9月21日土曜日
What is Glue between two?
What is Ladder to Goal?
2713年9月21日土曜日
GOAL
Business
Success
Domain Specific Knowledge
Data Mining Skill
2813年9月21日土曜日
Ans. Visualization
2913年9月21日土曜日
GOAL
Business
Success
Domain Specific Knowledge
Data Mining Skill
Trends
five-number
summary
Co-occurence
Mosaic map
Flow chart
Parallel chart
3013年9月21日土曜日
3113年9月21日土曜日
Domain Specific Expert
Data Mining Engineer
3213年9月21日土曜日
It looks like
communication
to your data and
your collaborators
3313年9月21日土曜日
Exploratory Visualization
for Exploratory Data Analysis
do before model processing or
fitting, testing
with Domain specific knowledge
3413年9月21日土曜日
How to communicate ?
R
S
S-Plus
SYSTAT
SPSS
Pands
3513年9月21日土曜日
We have Perl !!
3613年9月21日土曜日
Perl Data Language
3713年9月21日土曜日
Perl Data Language
standard Perl the ability to compactly store and
speedily manipulate the large N-dimensional
data arrays which are the bread and butter of
scientific computing.
PDL turns Perl into a free, array-oriented,
numerical language similar to (but, we believe,
better than) such commercial packages as IDL
and MatLab. One can write simple perl
3813年9月21日土曜日
Perl Data Language
standard Perl the ability to compactly store and
speedily manipulate the large N-dimensional
data arrays which are the bread and butter of
scientific computing.
PDL turns Perl into a free, array-oriented,
numerical language similar to (but, we believe,
better than) such commercial packages as IDL
and MatLab. One can write simple perl
3913年9月21日土曜日
Perl Data Language
standard Perl the ability to compactly store and
speedily manipulate the large N-dimensional
data arrays which are the bread and butter of
scientific computing.
PDL turns Perl into a free, array-oriented,
numerical language similar to (but, we believe,
better than) such commercial packages as IDL
and MatLab. One can write simple perl
We want
Hash Object
4013年9月21日土曜日
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use PDL;
 
my $obj;
$obj = pdl([[1,2,3],[4,5,6]]);
print $obj;
 
# [
# [1 2 3]
# [4 5 6]
# ]
 
$obj = pdl([{a => 1, b => 2, c => 3}, {a => 4, b => 5, c => 6}]);
# Hash given as a pdl - but not {PDL} key! at Basic/Core/
Core.pm.PL (i.e. PDL::Core.pm) line 1292.
# 工エェ(´Д`)ェエ工
4113年9月21日土曜日
4213年9月21日土曜日
Data::Cube
is an array of multi-dimensional data
has OLAP methods: dice, slice, etc.
4313年9月21日土曜日
Slice Rotate
Dice
Drill-down
4413年9月21日土曜日
4513年9月21日土曜日
4613年9月21日土曜日
4713年9月21日土曜日
え・・・ 4813年9月21日土曜日
Data::Cube released!
processing Array of Hash Object
add / remove rollup measure
add / remove dimension
add / remove hierarchy
4913年9月21日土曜日
Data::Cube 1. Data
Date Country SalesPerson Product Units Unit_Cost Total
3/15/2005 US Sorvino Pencil 56 2.99 167.44
3/7/2006 US Sorvino Binder 7 19.99 139.93
8/24/2006 US Sorvino Desk 3 275.00 825.00
9/27/2006 US Sorvino Pen 76 1.99 151.24
5/22/2005 US Thompson Pencil 32 1.99 63.68
10/14/2006 US Thompson Binder 57 19.99 1139.43
4/18/2005 US Andrews Pencil 75 1.99 149.25
4/10/2006 US Andrews Pencil 66 1.99 131.34
10/31/2006 US Andrews Pencil 114 1.29 147.06
5013年9月21日土曜日
Data::Cube 2. Usage
my $file = shift;
my $data = Text::CSV::Slurp->load(file => $file);
my $cube;
 
say "============================================================";
say "raw data size: ".(scalar @$data)."n";
 
say "n============================================================";
$cube = new Data::Cube("experience");
$cube->put($data);
say Dumper $cube->rollup(noValues => 1);
 
say "n============================================================";
$cube->add_dimension("skill");
say Dumper $cube->rollup(noValues => 1);
5113年9月21日土曜日
Data::Cube 2. Usage
my $file = shift;
my $data = Text::CSV::Slurp->load(file => $file);
my $cube;
 
say "============================================================";
say "raw data size: ".(scalar @$data)."n";
 
say "n============================================================";
$cube = new Data::Cube("experience");
$cube->put($data);
say Dumper $cube->rollup(noValues => 1);
 
say "n============================================================";
$cube->add_dimension("skill");
say Dumper $cube->rollup(noValues => 1);
たったのこれだけ
5213年9月21日土曜日
Data::Cube 3. Results
$VAR1 = [
{ 'count' => 150, 'dim' => 10年以上 },
{ 'count' => 76, 'dim' => 1~3年 },
{ 'count' => 32, 'dim' => 1年未満 },
{ 'count' => 93, 'dim' => 4~6年 },
{ 'count' => 43, 'dim' => 7~9年 }
];
5313年9月21日土曜日
Data::Cube 4. Results$VAR1 = [
{
'dim' => 10年以上, 'values' => [
{ 'count' => 79, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう) },
{ 'count' => 71, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) }]},
{
'dim' => 1~3年, 'values' => [
{ 'count' => 8, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう) },
{ 'count' => 56, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) },
{ 'count' => 12, 'dim' => 初級者(人に聞いたりしないとなかなか書けない) }]},
{
'dim' => 1年未満, 'values' => [
{ 'count' => 11, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) },
{ 'count' => 21, 'dim' => 初級者(人に聞いたりしないとなかなか書けない) }]},
{
'dim' => 4~6年, 'values' => [
{ 'count' => 25, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう) },
{ 'count' => 64, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) },
{ 'count' => 4, 'dim' => 初級者(人に聞いたりしないとなかなか書けない) }]},
{
'dim' => 7~9年, 'values' => [
{ 'count' => 19, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう) },
{ 'count' => 23, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) },
{ 'count' => 1, 'dim' => 初級者(人に聞いたりしないとなかなか書けない) }]}
];
5413年9月21日土曜日
Data::Cube 5. Measure
my $cube = new Data::Cube("Country");
$cube->put($data);
$cube->add_measure("sum", sub {
my $sum = 0;
foreach my $d (@_){ $sum += $d->{Units};}
$sum;});
$cube->add_measure("mean", sub {
my $sum = 0;
foreach my $d (@_){ $sum += $d->{Units};}
$sum / (scalar @_);});
print Dumper $cube->rollup(noValues => 1);
 
$cube->add_dimension("Product");
print Dumper $cube->rollup(noValues => 1);
5513年9月21日土曜日
Data::Cube 5. Measure
my $cube = new Data::Cube("Country");
$cube->put($data);
$cube->add_measure("sum", sub {
my $sum = 0;
foreach my $d (@_){ $sum += $d->{Units};}
$sum;});
$cube->add_measure("mean", sub {
my $sum = 0;
foreach my $d (@_){ $sum += $d->{Units};}
$sum / (scalar @_);});
print Dumper $cube->rollup(noValues => 1);
 
$cube->add_dimension("Product");
print Dumper $cube->rollup(noValues => 1);
たったのこれだけ
5613年9月21日土曜日
Data::Cube 6. Measure$VAR1 = [
{
'count' => 10,
'dim' => 'CA',
'sum' => 687,
'mean' => '68.7'
},
{
'count' => 11,
'dim' => 'UK',
'sum' => 764,
'mean' => '69.4545454545455'
},
{
'count' => 22,
'dim' => 'US',
'sum' => 1103,
'mean' => '50.1363636363636'
}
];
5713年9月21日土曜日
Data::Cube 7. Measure
$VAR1 = [
{
'values' => [
{ 'count' => 5, 'dim' => 'Binder', 'sum' => 288, 'mean' => '57.6'},
{ 'count' => 1, 'dim' => 'Pen', 'sum' => 51, 'mean' => 51},
{ 'count' => 1, 'dim' => 'PenSet', 'sum' => 61, 'mean' => 61},
{ 'count' => 3, 'dim' => 'Pencil', 'sum' => 287, 'mean' => '95.6666666666667'}
],
'dim' => 'CA'
},
{
'values' => [
{ 'count' => 4, 'dim' => 'Binder', 'sum' => 242, 'mean' => '60.5'},
{ 'count' => 1, 'dim' => 'Pen', 'sum' => 12, 'mean' => 12},
{ 'count' => 3, 'dim' => 'PenSet', 'sum' => 205, 'mean' => '68.3333333333333'},
{ 'count' => 3, 'dim' => 'Pencil', 'sum' => 305, 'mean' => '101.666666666667'}
],
'dim' => 'UK'
},
5813年9月21日土曜日
to Visualization
$cube -> HASH ref -> JSON
JSON -> d3.js -> visualization
5913年9月21日土曜日
Summary
6013年9月21日土曜日
Summary
せっかく紹介しまし
たが、僕はこの手の
処理はRでやります
6113年9月21日土曜日
> data = read.csv("./data/perl5census2013.csv")
> summary(data)
address experience
関東地方 :292 1~3年 : 76
近畿地方 : 39 10年以上:150
中部地方 : 23 1年未満 : 32
九州地方・沖縄: 17 4~6年 : 93
北海道地方 : 12 7~9年 : 43
東北地方 : 6
(Other) : 5
skill
初級者(人に聞いたりしないとなかなか書けない) : 38
上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう):131
中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) :225
frequencyatbusiness frequencyatprivate
Min. : 1.000 Min. : 1.000
1st Qu.: 2.000 1st Qu.: 2.000
Median : 6.000 Median : 5.000
Mean : 5.779 Mean : 5.388
3rd Qu.:10.000 3rd Qu.: 8.000
Max. :10.000 Max. :10.000
versionmanager
システム Perl  (rpm, yum, インストール済みのperl等) :136
システム Perl  (rpm, yum, インストール済みのperl等), perlbrew : 92
perlbrew : 76
システム Perl  (rpm, yum, インストール済みのperl等), perlbrew, plenv: 14
perlbrew, plenv : 12
plenv : 9
(Other) : 55
2行6213年9月21日土曜日
Summary: but
継続的な可視化を
専門家に見せるとき
圧倒的な優位性!
6313年9月21日土曜日
Summary: Example
Time Series
sales, repeat rate, DAU, system info, activities
Effects of trial / campaign
attribution, condition, cost, cash back, etc.
6413年9月21日土曜日

Contenu connexe

Tendances

MySQL勉強会 インデックス編.2013 08-02
MySQL勉強会 インデックス編.2013 08-02MySQL勉強会 インデックス編.2013 08-02
MySQL勉強会 インデックス編.2013 08-02CROOZ, inc.
 
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーションD3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーションKohei Kadowaki
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEtsuji Nakai
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類Tetsuya Hasegawa
 
Python for Data Analysis: Chapter 2
Python for Data Analysis: Chapter 2Python for Data Analysis: Chapter 2
Python for Data Analysis: Chapter 2智哉 今西
 
苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4
苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4
苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4Takuya Mukohira
 
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析MapR Technologies Japan
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門だいすけ さとう
 
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...Insight Technology, Inc.
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門Yohei Sasaki
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2Atsuo Yamasaki
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Takashi J OZAKI
 
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くPostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くHiroya Kabata
 
20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmark20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmarkToshi Harada
 
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことPlay2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことdcubeio
 
第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)Wataru Shito
 
はじめてのCouch db
はじめてのCouch dbはじめてのCouch db
はじめてのCouch dbEiji Kuroda
 

Tendances (19)

MySQL勉強会 インデックス編.2013 08-02
MySQL勉強会 インデックス編.2013 08-02MySQL勉強会 インデックス編.2013 08-02
MySQL勉強会 インデックス編.2013 08-02
 
Heroku Postgres
Heroku PostgresHeroku Postgres
Heroku Postgres
 
D3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーションD3.js と SVG によるデータビジュアライゼーション
D3.js と SVG によるデータビジュアライゼーション
 
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみましたEucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
EucalyptusのHadoopクラスタとJaqlでBasket解析をしてHiveとの違いを味わってみました
 
[機械学習]文章のクラス分類
[機械学習]文章のクラス分類[機械学習]文章のクラス分類
[機械学習]文章のクラス分類
 
Python for Data Analysis: Chapter 2
Python for Data Analysis: Chapter 2Python for Data Analysis: Chapter 2
Python for Data Analysis: Chapter 2
 
苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4
苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4
苫小牧高専 ソフトウェアテクノロジー部 enchant.jsでゲーム作り 4
 
Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析Apache Drill で日本語を扱ってみよう + オープンデータ解析
Apache Drill で日本語を扱ってみよう + オープンデータ解析
 
Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門Ruby on Rails on MySQL チューニング入門
Ruby on Rails on MySQL チューニング入門
 
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
[db tech showcase Tokyo 2015] A14:Amazon Redshiftの元となったスケールアウト型カラムナーDB徹底解説 その...
 
BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門BPStudy32 CouchDB 再入門
BPStudy32 CouchDB 再入門
 
[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2[東京] JapanSharePointGroup 勉強会 #2
[東京] JapanSharePointGroup 勉強会 #2
 
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
Deep Learningと他の分類器をRで比べてみよう in Japan.R 2014
 
PostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解くPostgreSQL:行数推定を読み解く
PostgreSQL:行数推定を読み解く
 
20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmark20150530 pgunconf-pgbench-semi-structured-benchmark
20150530 pgunconf-pgbench-semi-structured-benchmark
 
Play2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだことPlay2 scalaを2年やって学んだこと
Play2 scalaを2年やって学んだこと
 
第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)第9回 大規模データを用いたデータフレーム操作実習(3)
第9回 大規模データを用いたデータフレーム操作実習(3)
 
はじめてのCouch db
はじめてのCouch dbはじめてのCouch db
はじめてのCouch db
 
機械学習
機械学習機械学習
機械学習
 

En vedette

20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったことDaichi Morifuji
 
neural network introduction yapc asia tokyo
neural network introduction yapc asia tokyo neural network introduction yapc asia tokyo
neural network introduction yapc asia tokyo Daichi Morifuji
 
BigData Analysis with mongo-hadoop
BigData Analysis with mongo-hadoopBigData Analysis with mongo-hadoop
BigData Analysis with mongo-hadoopDaichi Morifuji
 
ParamTuner 東京Node学園#8
ParamTuner 東京Node学園#8 ParamTuner 東京Node学園#8
ParamTuner 東京Node学園#8 Daichi Morifuji
 
オレオレMultipleInputを作る方法
オレオレMultipleInputを作る方法オレオレMultipleInputを作る方法
オレオレMultipleInputを作る方法Daichi Morifuji
 
Time Series Analysis by JavaScript LL matsuri 2013
Time Series Analysis by JavaScript LL matsuri 2013 Time Series Analysis by JavaScript LL matsuri 2013
Time Series Analysis by JavaScript LL matsuri 2013 Daichi Morifuji
 
MongoDBとHadoopの蜜月関係
MongoDBとHadoopの蜜月関係MongoDBとHadoopの蜜月関係
MongoDBとHadoopの蜜月関係Daichi Morifuji
 
Io t縛りの勉強会 #4
Io t縛りの勉強会 #4Io t縛りの勉強会 #4
Io t縛りの勉強会 #4Daichi Morifuji
 
Html5j data visualization_and_d3
Html5j data visualization_and_d3Html5j data visualization_and_d3
Html5j data visualization_and_d3Daichi Morifuji
 
企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポートDaichi Morifuji
 
データ可視化勉強会
データ可視化勉強会データ可視化勉強会
データ可視化勉強会Daichi Morifuji
 
ビジネスインテリジェンス入門~OSSでBIを始めよう~
ビジネスインテリジェンス入門~OSSでBIを始めよう~ビジネスインテリジェンス入門~OSSでBIを始めよう~
ビジネスインテリジェンス入門~OSSでBIを始めよう~Kensuke SAEKI
 
Open Source ETL vs Commercial ETL
Open Source ETL vs Commercial ETLOpen Source ETL vs Commercial ETL
Open Source ETL vs Commercial ETLJonathan Levin
 

En vedette (17)

20151030 ux sketch vol5
20151030 ux sketch vol520151030 ux sketch vol5
20151030 ux sketch vol5
 
20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと20150726 IoTってなに?ニフティクラウドmqttでやったこと
20150726 IoTってなに?ニフティクラウドmqttでやったこと
 
neural network introduction yapc asia tokyo
neural network introduction yapc asia tokyo neural network introduction yapc asia tokyo
neural network introduction yapc asia tokyo
 
BigData Analysis with mongo-hadoop
BigData Analysis with mongo-hadoopBigData Analysis with mongo-hadoop
BigData Analysis with mongo-hadoop
 
My best grunt
My best gruntMy best grunt
My best grunt
 
ParamTuner 東京Node学園#8
ParamTuner 東京Node学園#8 ParamTuner 東京Node学園#8
ParamTuner 東京Node学園#8
 
オレオレMultipleInputを作る方法
オレオレMultipleInputを作る方法オレオレMultipleInputを作る方法
オレオレMultipleInputを作る方法
 
Time Series Analysis by JavaScript LL matsuri 2013
Time Series Analysis by JavaScript LL matsuri 2013 Time Series Analysis by JavaScript LL matsuri 2013
Time Series Analysis by JavaScript LL matsuri 2013
 
MongoDBとHadoopの蜜月関係
MongoDBとHadoopの蜜月関係MongoDBとHadoopの蜜月関係
MongoDBとHadoopの蜜月関係
 
Jubatus casulatalks2
Jubatus casulatalks2Jubatus casulatalks2
Jubatus casulatalks2
 
Io t縛りの勉強会 #4
Io t縛りの勉強会 #4Io t縛りの勉強会 #4
Io t縛りの勉強会 #4
 
Html5j data visualization_and_d3
Html5j data visualization_and_d3Html5j data visualization_and_d3
Html5j data visualization_and_d3
 
企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート企業と勉強会 @nifty エンジニアサポート
企業と勉強会 @nifty エンジニアサポート
 
20150803 baas meetup
20150803 baas meetup20150803 baas meetup
20150803 baas meetup
 
データ可視化勉強会
データ可視化勉強会データ可視化勉強会
データ可視化勉強会
 
ビジネスインテリジェンス入門~OSSでBIを始めよう~
ビジネスインテリジェンス入門~OSSでBIを始めよう~ビジネスインテリジェンス入門~OSSでBIを始めよう~
ビジネスインテリジェンス入門~OSSでBIを始めよう~
 
Open Source ETL vs Commercial ETL
Open Source ETL vs Commercial ETLOpen Source ETL vs Commercial ETL
Open Source ETL vs Commercial ETL
 

Perl for visualization

  • 2. print Dumper $me { twitter => “@muddydixon”, organization => “NIFTY”, job => “low spec full stack engineer”, skill => [ “data collecting”, “data cleansing”, “visualization”, ] } 213年9月21日土曜日
  • 5. Key of Visualization STORIES are main concept of visualization are buried in data enhance your business 513年9月21日土曜日
  • 7. Explanatory visualization communicating information clearly and effectively 713年9月21日土曜日
  • 13. 加齢による 技術向上 The more use, the higher skill 1313年9月21日土曜日
  • 15. ひとりで できない 10年選手は いなかったEverybody who touch perl 10 years use perl :) 1513年9月21日土曜日
  • 17. 7-9年目に がんばろう 7-10 years users practice more! 1713年9月21日土曜日
  • 19. ここから 読み取る のはムリ We cannot find STORIES from text log 1913年9月21日土曜日
  • 20. This is the POWER of Explanatory visualization 2013年9月21日土曜日
  • 21. I / You can inform STORIES in data to my / your colleague to my / your boss to my / your audiences 2113年9月21日土曜日
  • 22. Exploratory visualization Visualization allow you to find STORIES from data Data Mining 2213年9月21日土曜日
  • 24. Problems Data Mining Engineer a few domain specific knowledge Domain Specialist a few mining skill 2413年9月21日土曜日
  • 25. GOAL Business Success Domain Specific Knowledge Data Mining Skill 2513年9月21日土曜日
  • 26. How to apply Domain Specific Knowledge to Data Mining Processes 2613年9月21日土曜日
  • 27. What is Glue between two? What is Ladder to Goal? 2713年9月21日土曜日
  • 28. GOAL Business Success Domain Specific Knowledge Data Mining Skill 2813年9月21日土曜日
  • 30. GOAL Business Success Domain Specific Knowledge Data Mining Skill Trends five-number summary Co-occurence Mosaic map Flow chart Parallel chart 3013年9月21日土曜日
  • 32. Domain Specific Expert Data Mining Engineer 3213年9月21日土曜日
  • 33. It looks like communication to your data and your collaborators 3313年9月21日土曜日
  • 34. Exploratory Visualization for Exploratory Data Analysis do before model processing or fitting, testing with Domain specific knowledge 3413年9月21日土曜日
  • 35. How to communicate ? R S S-Plus SYSTAT SPSS Pands 3513年9月21日土曜日
  • 36. We have Perl !! 3613年9月21日土曜日
  • 38. Perl Data Language standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays which are the bread and butter of scientific computing. PDL turns Perl into a free, array-oriented, numerical language similar to (but, we believe, better than) such commercial packages as IDL and MatLab. One can write simple perl 3813年9月21日土曜日
  • 39. Perl Data Language standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays which are the bread and butter of scientific computing. PDL turns Perl into a free, array-oriented, numerical language similar to (but, we believe, better than) such commercial packages as IDL and MatLab. One can write simple perl 3913年9月21日土曜日
  • 40. Perl Data Language standard Perl the ability to compactly store and speedily manipulate the large N-dimensional data arrays which are the bread and butter of scientific computing. PDL turns Perl into a free, array-oriented, numerical language similar to (but, we believe, better than) such commercial packages as IDL and MatLab. One can write simple perl We want Hash Object 4013年9月21日土曜日
  • 41. #!/usr/bin/env perl use strict; use warnings; use Data::Dumper; use PDL;   my $obj; $obj = pdl([[1,2,3],[4,5,6]]); print $obj;   # [ # [1 2 3] # [4 5 6] # ]   $obj = pdl([{a => 1, b => 2, c => 3}, {a => 4, b => 5, c => 6}]); # Hash given as a pdl - but not {PDL} key! at Basic/Core/ Core.pm.PL (i.e. PDL::Core.pm) line 1292. # 工エェ(´Д`)ェエ工 4113年9月21日土曜日
  • 43. Data::Cube is an array of multi-dimensional data has OLAP methods: dice, slice, etc. 4313年9月21日土曜日
  • 49. Data::Cube released! processing Array of Hash Object add / remove rollup measure add / remove dimension add / remove hierarchy 4913年9月21日土曜日
  • 50. Data::Cube 1. Data Date Country SalesPerson Product Units Unit_Cost Total 3/15/2005 US Sorvino Pencil 56 2.99 167.44 3/7/2006 US Sorvino Binder 7 19.99 139.93 8/24/2006 US Sorvino Desk 3 275.00 825.00 9/27/2006 US Sorvino Pen 76 1.99 151.24 5/22/2005 US Thompson Pencil 32 1.99 63.68 10/14/2006 US Thompson Binder 57 19.99 1139.43 4/18/2005 US Andrews Pencil 75 1.99 149.25 4/10/2006 US Andrews Pencil 66 1.99 131.34 10/31/2006 US Andrews Pencil 114 1.29 147.06 5013年9月21日土曜日
  • 51. Data::Cube 2. Usage my $file = shift; my $data = Text::CSV::Slurp->load(file => $file); my $cube;   say "============================================================"; say "raw data size: ".(scalar @$data)."n";   say "n============================================================"; $cube = new Data::Cube("experience"); $cube->put($data); say Dumper $cube->rollup(noValues => 1);   say "n============================================================"; $cube->add_dimension("skill"); say Dumper $cube->rollup(noValues => 1); 5113年9月21日土曜日
  • 52. Data::Cube 2. Usage my $file = shift; my $data = Text::CSV::Slurp->load(file => $file); my $cube;   say "============================================================"; say "raw data size: ".(scalar @$data)."n";   say "n============================================================"; $cube = new Data::Cube("experience"); $cube->put($data); say Dumper $cube->rollup(noValues => 1);   say "n============================================================"; $cube->add_dimension("skill"); say Dumper $cube->rollup(noValues => 1); たったのこれだけ 5213年9月21日土曜日
  • 53. Data::Cube 3. Results $VAR1 = [ { 'count' => 150, 'dim' => 10年以上 }, { 'count' => 76, 'dim' => 1~3年 }, { 'count' => 32, 'dim' => 1年未満 }, { 'count' => 93, 'dim' => 4~6年 }, { 'count' => 43, 'dim' => 7~9年 } ]; 5313年9月21日土曜日
  • 54. Data::Cube 4. Results$VAR1 = [ { 'dim' => 10年以上, 'values' => [ { 'count' => 79, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう) }, { 'count' => 71, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) }]}, { 'dim' => 1~3年, 'values' => [ { 'count' => 8, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう) }, { 'count' => 56, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) }, { 'count' => 12, 'dim' => 初級者(人に聞いたりしないとなかなか書けない) }]}, { 'dim' => 1年未満, 'values' => [ { 'count' => 11, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) }, { 'count' => 21, 'dim' => 初級者(人に聞いたりしないとなかなか書けない) }]}, { 'dim' => 4~6年, 'values' => [ { 'count' => 25, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう) }, { 'count' => 64, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) }, { 'count' => 4, 'dim' => 初級者(人に聞いたりしないとなかなか書けない) }]}, { 'dim' => 7~9年, 'values' => [ { 'count' => 19, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう) }, { 'count' => 23, 'dim' => 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) }, { 'count' => 1, 'dim' => 初級者(人に聞いたりしないとなかなか書けない) }]} ]; 5413年9月21日土曜日
  • 55. Data::Cube 5. Measure my $cube = new Data::Cube("Country"); $cube->put($data); $cube->add_measure("sum", sub { my $sum = 0; foreach my $d (@_){ $sum += $d->{Units};} $sum;}); $cube->add_measure("mean", sub { my $sum = 0; foreach my $d (@_){ $sum += $d->{Units};} $sum / (scalar @_);}); print Dumper $cube->rollup(noValues => 1);   $cube->add_dimension("Product"); print Dumper $cube->rollup(noValues => 1); 5513年9月21日土曜日
  • 56. Data::Cube 5. Measure my $cube = new Data::Cube("Country"); $cube->put($data); $cube->add_measure("sum", sub { my $sum = 0; foreach my $d (@_){ $sum += $d->{Units};} $sum;}); $cube->add_measure("mean", sub { my $sum = 0; foreach my $d (@_){ $sum += $d->{Units};} $sum / (scalar @_);}); print Dumper $cube->rollup(noValues => 1);   $cube->add_dimension("Product"); print Dumper $cube->rollup(noValues => 1); たったのこれだけ 5613年9月21日土曜日
  • 57. Data::Cube 6. Measure$VAR1 = [ { 'count' => 10, 'dim' => 'CA', 'sum' => 687, 'mean' => '68.7' }, { 'count' => 11, 'dim' => 'UK', 'sum' => 764, 'mean' => '69.4545454545455' }, { 'count' => 22, 'dim' => 'US', 'sum' => 1103, 'mean' => '50.1363636363636' } ]; 5713年9月21日土曜日
  • 58. Data::Cube 7. Measure $VAR1 = [ { 'values' => [ { 'count' => 5, 'dim' => 'Binder', 'sum' => 288, 'mean' => '57.6'}, { 'count' => 1, 'dim' => 'Pen', 'sum' => 51, 'mean' => 51}, { 'count' => 1, 'dim' => 'PenSet', 'sum' => 61, 'mean' => 61}, { 'count' => 3, 'dim' => 'Pencil', 'sum' => 287, 'mean' => '95.6666666666667'} ], 'dim' => 'CA' }, { 'values' => [ { 'count' => 4, 'dim' => 'Binder', 'sum' => 242, 'mean' => '60.5'}, { 'count' => 1, 'dim' => 'Pen', 'sum' => 12, 'mean' => 12}, { 'count' => 3, 'dim' => 'PenSet', 'sum' => 205, 'mean' => '68.3333333333333'}, { 'count' => 3, 'dim' => 'Pencil', 'sum' => 305, 'mean' => '101.666666666667'} ], 'dim' => 'UK' }, 5813年9月21日土曜日
  • 59. to Visualization $cube -> HASH ref -> JSON JSON -> d3.js -> visualization 5913年9月21日土曜日
  • 62. > data = read.csv("./data/perl5census2013.csv") > summary(data) address experience 関東地方 :292 1~3年 : 76 近畿地方 : 39 10年以上:150 中部地方 : 23 1年未満 : 32 九州地方・沖縄: 17 4~6年 : 93 北海道地方 : 12 7~9年 : 43 東北地方 : 6 (Other) : 5 skill 初級者(人に聞いたりしないとなかなか書けない) : 38 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソースコード読んじゃう):131 中級者(だいたいやりたいことはできるが、本やサイトを頼りにして確認したりする) :225 frequencyatbusiness frequencyatprivate Min. : 1.000 Min. : 1.000 1st Qu.: 2.000 1st Qu.: 2.000 Median : 6.000 Median : 5.000 Mean : 5.779 Mean : 5.388 3rd Qu.:10.000 3rd Qu.: 8.000 Max. :10.000 Max. :10.000 versionmanager システム Perl  (rpm, yum, インストール済みのperl等) :136 システム Perl  (rpm, yum, インストール済みのperl等), perlbrew : 92 perlbrew : 76 システム Perl  (rpm, yum, インストール済みのperl等), perlbrew, plenv: 14 perlbrew, plenv : 12 plenv : 9 (Other) : 55 2行6213年9月21日土曜日
  • 64. Summary: Example Time Series sales, repeat rate, DAU, system info, activities Effects of trial / campaign attribution, condition, cost, cash back, etc. 6413年9月21日土曜日