perl for visualization
DESCRIPTION
Data::Cube calculates Hash Array in order to pass the data array to d3.js !TRANSCRIPT
Perl forVisualization
YAPCASIA:2013 9/21113年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 VisualizationSTORIES
are main concept of visualizationare buried in dataenhance your business
513年9月21日土曜日
VisualizationTwo purposes:
1.Explanatory visualization 2.Exploratory visualization
613年9月21日土曜日
Explanatory visualizationcommunicating information clearly and effectively
713年9月21日土曜日
813年9月21日土曜日
Can you findSTORIES?
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 log1913年9月21日土曜日
This is thePOWER of Explanatoryvisualization
2013年9月21日土曜日
I / You caninform STORIES in data
to my / your colleagueto my / your bossto my / your audiences
2113年9月21日土曜日
Exploratory visualizationVisualization allow you to find STORIES from dataData Mining
2213年9月21日土曜日
via(道具としての)データサイエンティストのつかい方
2313年9月21日土曜日
ProblemsData Mining Engineer
a few domain specific knowledgeDomain Specialist
a few mining skill2413年9月21日土曜日
GOALBusinessSuccess
Domain Specific Knowledge
Data Mining Skill
2513年9月21日土曜日
How to applyDomain Specific Knowledgeto Data Mining Processes
2613年9月21日土曜日
What is Glue between two?What is Ladder to Goal?
2713年9月21日土曜日
GOALBusinessSuccess
Domain Specific Knowledge
Data Mining Skill
2813年9月21日土曜日
Ans. Visualization
2913年9月21日土曜日
GOALBusinessSuccess
Domain Specific Knowledge
Data Mining Skill
Trends
five-numbersummary
Co-occurence
Mosaic map
Flow chart
Parallel chart3013年9月21日土曜日
3113年9月21日土曜日
Domain Specific Expert
Data Mining Engineer
3213年9月21日土曜日
It looks like communicationto your data and your collaborators
3313年9月21日土曜日
Exploratory Visualizationfor Exploratory Data Analysis
do before model processing or fitting, testing
with Domain specific knowledge
3413年9月21日土曜日
How to communicate ?RSS-PlusSYSTATSPSSPands
3513年9月21日土曜日
We have Perl !!
3613年9月21日土曜日
Perl Data Language
3713年9月21日土曜日
Perl Data Languagestandard 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 Languagestandard 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 Languagestandard 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 wantHash Object
4013年9月21日土曜日
#!/usr/bin/env perluse 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::Cubeis an array of multi-dimensional datahas OLAP methods: dice, slice, etc.
4313年9月21日土曜日
Slice Rotate
DiceDrill-down
4413年9月21日土曜日
4513年9月21日土曜日
4613年9月21日土曜日
4713年9月21日土曜日
え・・・4813年9月21日土曜日
Data::Cube released!processing Array of Hash Objectadd / remove rollup measure add / remove dimensionadd / 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 -> JSONJSON -> 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: ExampleTime Series
sales, repeat rate, DAU, system info, activitiesEffects of trial / campaign
attribution, condition, cost, cash back, etc.
6413年9月21日土曜日