Perl for
Visualization
YAPCASIA:2013 9/21
113年9月21日土曜日
print Dumper $me
{
twitter => “@muddydixon”,
organization => “NIFTY”,
job => “low spec full stack engineer”,
skill => [
“d...
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 ...
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 specifi...
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 array...
Perl Data Language
standard Perl the ability to compactly store and
speedily manipulate the large N-dimensional
data array...
Perl Data Language
standard Perl the ability to compactly store and
speedily manipulate the large N-dimensional
data array...
#!/usr/bin/env perl
use strict;
use warnings;
use Data::Dumper;
use PDL;
 
my $obj;
$obj = pdl([[1,2,3],[4,5,6]]);
print $...
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 hiera...
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/2...
Data::Cube 2. Usage
my $file = shift;
my $data = Text::CSV::Slurp->load(file => $file);
my $cube;
 
say "=================...
Data::Cube 2. Usage
my $file = shift;
my $data = Text::CSV::Slurp->load(file => $file);
my $cube;
 
say "=================...
Data::Cube 3. Results
$VAR1 = [
{ 'count' => 150, 'dim' => 10年以上 },
{ 'count' => 76, 'dim' => 1~3年 },
{ 'count' => 32, 'di...
Data::Cube 4. Results$VAR1 = [
{
'dim' => 10年以上, 'values' => [
{ 'count' => 79, 'dim' => 上級者(一通り書こうと思えば書ける。わかんなかったらとりあえずソー...
Data::Cube 5. Measure
my $cube = new Data::Cube("Country");
$cube->put($data);
$cube->add_measure("sum", sub {
my $sum = 0...
Data::Cube 5. Measure
my $cube = new Data::Cube("Country");
$cube->put($data);
$cube->add_measure("sum", sub {
my $sum = 0...
Data::Cube 6. Measure$VAR1 = [
{
'count' => 10,
'dim' => 'CA',
'sum' => 687,
'mean' => '68.7'
},
{
'count' => 11,
'dim' =>...
Data::Cube 7. Measure
$VAR1 = [
{
'values' => [
{ 'count' => 5, 'dim' => 'Binder', 'sum' => 288, 'mean' => '57.6'},
{ 'cou...
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...
Summary: but
継続的な可視化を
専門家に見せるとき
圧倒的な優位性!
6313年9月21日土曜日
Summary: Example
Time Series
sales, repeat rate, DAU, system info, activities
Effects of trial / campaign
attribution, con...
Upcoming SlideShare
Loading in...5
×

Perl for visualization

2,520
-1

Published on

Data::Cube calculates Hash Array in order to pass the data array to d3.js !

Published in: Technology

Perl for visualization

  1. 1. Perl for Visualization YAPCASIA:2013 9/21 113年9月21日土曜日
  2. 2. print Dumper $me { twitter => “@muddydixon”, organization => “NIFTY”, job => “low spec full stack engineer”, skill => [ “data collecting”, “data cleansing”, “visualization”, ] } 213年9月21日土曜日
  3. 3. Today’s Topic 313年9月21日土曜日
  4. 4. Today’s Topic 413年9月21日土曜日
  5. 5. Key of Visualization STORIES are main concept of visualization are buried in data enhance your business 513年9月21日土曜日
  6. 6. Visualization Two purposes: 1.Explanatory visualization 2.Exploratory visualization 613年9月21日土曜日
  7. 7. Explanatory visualization communicating information clearly and effectively 713年9月21日土曜日
  8. 8. 813年9月21日土曜日
  9. 9. Can you find STORIES? 913年9月21日土曜日
  10. 10. 1013年9月21日土曜日
  11. 11. 1113年9月21日土曜日
  12. 12. 1213年9月21日土曜日
  13. 13. 加齢による 技術向上 The more use, the higher skill 1313年9月21日土曜日
  14. 14. 1413年9月21日土曜日
  15. 15. ひとりで できない 10年選手は いなかったEverybody who touch perl 10 years use perl :) 1513年9月21日土曜日
  16. 16. 1613年9月21日土曜日
  17. 17. 7-9年目に がんばろう 7-10 years users practice more! 1713年9月21日土曜日
  18. 18. 1813年9月21日土曜日
  19. 19. ここから 読み取る のはムリ We cannot find STORIES from text log 1913年9月21日土曜日
  20. 20. This is the POWER of Explanatory visualization 2013年9月21日土曜日
  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. 22. Exploratory visualization Visualization allow you to find STORIES from data Data Mining 2213年9月21日土曜日
  23. 23. via(道具としての)データサイエンティストのつかい方 2313年9月21日土曜日
  24. 24. Problems Data Mining Engineer a few domain specific knowledge Domain Specialist a few mining skill 2413年9月21日土曜日
  25. 25. GOAL Business Success Domain Specific Knowledge Data Mining Skill 2513年9月21日土曜日
  26. 26. How to apply Domain Specific Knowledge to Data Mining Processes 2613年9月21日土曜日
  27. 27. What is Glue between two? What is Ladder to Goal? 2713年9月21日土曜日
  28. 28. GOAL Business Success Domain Specific Knowledge Data Mining Skill 2813年9月21日土曜日
  29. 29. Ans. Visualization 2913年9月21日土曜日
  30. 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日土曜日
  31. 31. 3113年9月21日土曜日
  32. 32. Domain Specific Expert Data Mining Engineer 3213年9月21日土曜日
  33. 33. It looks like communication to your data and your collaborators 3313年9月21日土曜日
  34. 34. Exploratory Visualization for Exploratory Data Analysis do before model processing or fitting, testing with Domain specific knowledge 3413年9月21日土曜日
  35. 35. How to communicate ? R S S-Plus SYSTAT SPSS Pands 3513年9月21日土曜日
  36. 36. We have Perl !! 3613年9月21日土曜日
  37. 37. Perl Data Language 3713年9月21日土曜日
  38. 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. 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. 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. 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日土曜日
  42. 42. 4213年9月21日土曜日
  43. 43. Data::Cube is an array of multi-dimensional data has OLAP methods: dice, slice, etc. 4313年9月21日土曜日
  44. 44. Slice Rotate Dice Drill-down 4413年9月21日土曜日
  45. 45. 4513年9月21日土曜日
  46. 46. 4613年9月21日土曜日
  47. 47. 4713年9月21日土曜日
  48. 48. え・・・ 4813年9月21日土曜日
  49. 49. Data::Cube released! processing Array of Hash Object add / remove rollup measure add / remove dimension add / remove hierarchy 4913年9月21日土曜日
  50. 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. 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. 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. 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. 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. 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. 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. 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. 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. 59. to Visualization $cube -> HASH ref -> JSON JSON -> d3.js -> visualization 5913年9月21日土曜日
  60. 60. Summary 6013年9月21日土曜日
  61. 61. Summary せっかく紹介しまし たが、僕はこの手の 処理はRでやります 6113年9月21日土曜日
  62. 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日土曜日
  63. 63. Summary: but 継続的な可視化を 専門家に見せるとき 圧倒的な優位性! 6313年9月21日土曜日
  64. 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日土曜日
  1. A particular slide catching your eye?

    Clipping is a handy way to collect important slides you want to go back to later.

×