red-datasets-pandas 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: bf6a933be0b8fdb71cb2a5bbddd1afbab70ca47949a5861b478a1ce4f627f09b
4
+ data.tar.gz: 3eaa361fa3b12f8a2d95b9d6925b243c72f2ca62850bd5b3164df4b50ec7d744
5
+ SHA512:
6
+ metadata.gz: c60e0db790a37f19c2c91a6d3c0fafef2fa34e0a6fc1e49ffb3b271cbbd9830afcb448a8fa0c7e33d57cc33ba9507c0a8f57395bcd415e09ea448199fca43039
7
+ data.tar.gz: 402505deafa486dec7c7fb19f1604bfb2840359d2b0b3e04f1449ff4d9d5852e9b6de890e78a398203f97fb410f4e7bae9ff29700f82aae21beff685ee4c81c0
data/.yardopts ADDED
@@ -0,0 +1,6 @@
1
+ --output-dir doc/reference/en
2
+ --markup markdown
3
+ --markup-provider kramdown
4
+ lib/**/*.rb
5
+ -
6
+ doc/text/**/*
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source "https://rubygems.org/"
2
+
3
+ gemspec
data/LICENSE.txt ADDED
@@ -0,0 +1,20 @@
1
+ The MIT License (MIT)
2
+ Copyright © 2021 Kenta Murata
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy
5
+ of this software and associated documentation files (the “Software”), to deal
6
+ in the Software without restriction, including without limitation the rights
7
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
8
+ copies of the Software, and to permit persons to whom the Software is
9
+ furnished to do so, subject to the following conditions:
10
+
11
+ The above copyright notice and this permission notice shall be included in
12
+ all copies or substantial portions of the Software.
13
+
14
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
15
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
16
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
17
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
18
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
19
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
20
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,36 @@
1
+ # Red Datasets Pandas
2
+
3
+ ## Description
4
+
5
+ Red Datasets Pandas adds Pandas::DataFrame object export feature to Red Datasets.
6
+
7
+ Red Datasets Pandas adds `#to_pandas` method to each dataset and its table in Red Datasets. You can get data as Pandas::DataFrame class object.
8
+
9
+ ## Install
10
+
11
+ ```
12
+ % gem install red-datasets-pandas
13
+ ```
14
+
15
+ ## Usage
16
+
17
+ Here is an example to export penguins data as Pandas::DataFrame objects by `Datasets::Dataset#to_pandas` and `Datasets::Table#to_narray`:
18
+
19
+ ```
20
+ require "datasets-numo-narray"
21
+
22
+ penguins = Datasets::Penguins.new
23
+ puts iris.to_pandas(:flipper_length_mm,
24
+ :body_mass_g,
25
+ :species)
26
+
27
+ penguins_table = penguins.to_table
28
+ puts iris_table.to_pandas(:flipper_length_mm,
29
+ :bill_depth_mm,
30
+ :sex,
31
+ :year)
32
+ ```
33
+
34
+ ## License
35
+
36
+ The MIT license. See `LICENSE.txt` for details.
data/Rakefile ADDED
@@ -0,0 +1,19 @@
1
+ require "rubygems"
2
+ require "bundler/gem_helper"
3
+
4
+ base_dir = File.join(File.dirname(__FILE__))
5
+
6
+ helper = Bundler::GemHelper.new(base_dir)
7
+ def helper.version_tag
8
+ version
9
+ end
10
+
11
+ helper.install
12
+ spec = helper.gemspec
13
+
14
+ desc "Run tests"
15
+ task :test do
16
+ ruby("test/run-test.rb")
17
+ end
18
+
19
+ task default: :test
@@ -0,0 +1,13 @@
1
+ require "datasets"
2
+ require "datasets-pandas/version"
3
+ require "datasets-pandas/conversion"
4
+
5
+ module Datasets
6
+ class Dataset
7
+ include DatasetsPandas::DatasetConversion
8
+ end
9
+
10
+ class Table
11
+ include DatasetsPandas::TableConversion
12
+ end
13
+ end
@@ -0,0 +1,27 @@
1
+ require "pandas"
2
+
3
+ module DatasetsPandas
4
+ module DatasetConversion
5
+ def to_pandas(*keys)
6
+ if keys.empty?
7
+ Pandas::DataFrame.new(data: self.map {|record| record.to_h })
8
+ else
9
+ records = self.map {|record| keys.map {|k| record[k] } }
10
+ Pandas::DataFrame.new(data: records, columns: keys)
11
+ end
12
+ end
13
+ end
14
+
15
+ module TableConversion
16
+ def to_pandas(*keys)
17
+ data = if keys.empty?
18
+ self.to_h
19
+ else
20
+ keys.map {|k|
21
+ [ k, self[k] ]
22
+ }.to_h
23
+ end
24
+ Pandas::DataFrame.new(data: data)
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ module DatasetsPandas
2
+ VERSION = "0.0.1"
3
+ end
@@ -0,0 +1,42 @@
1
+ clean_white_space = lambda do |entry|
2
+ entry.gsub(/(\A\n+|\n+\z)/, '') + "\n"
3
+ end
4
+
5
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), "lib"))
6
+ require "datasets-pandas/version"
7
+
8
+ Gem::Specification.new do |spec|
9
+ spec.name = "red-datasets-pandas"
10
+ spec.version = DatasetsPandas::VERSION
11
+ spec.homepage = "https://github.com/mrkn/red-datasets-pandas"
12
+ spec.authors = ["Kenta Murata"]
13
+ spec.email = ["mrkn@mrkn.jp"]
14
+
15
+ readme = File.read("README.md")
16
+ readme.force_encoding("UTF-8")
17
+ entries = readme.split(/^\#\#\s(.*)$/)
18
+ clean_white_space.call(entries[entries.index("Description") + 1])
19
+ description = clean_white_space.call(entries[entries.index("Description") + 1])
20
+ spec.summary, spec.description, = description.split(/\n\n+/, 3)
21
+ spec.license = "MIT"
22
+ spec.files = [
23
+ "README.md",
24
+ "LICENSE.txt",
25
+ "Rakefile",
26
+ "Gemfile",
27
+ "#{spec.name}.gemspec",
28
+ ]
29
+ spec.files += [".yardopts"]
30
+ spec.files += Dir.glob("lib/**/*.rb")
31
+ spec.files += Dir.glob("doc/text/*")
32
+ spec.test_files += Dir.glob("test/**/*")
33
+
34
+ spec.add_runtime_dependency("pandas")
35
+ spec.add_runtime_dependency("red-datasets")
36
+
37
+ spec.add_development_dependency("bundler")
38
+ spec.add_development_dependency("rake")
39
+ spec.add_development_dependency("test-unit")
40
+ spec.add_development_dependency("yard")
41
+ spec.add_development_dependency("kramdown")
42
+ end
data/test/helper.rb ADDED
@@ -0,0 +1,3 @@
1
+ require "datasets-pandas"
2
+
3
+ require "test-unit"
data/test/run-test.rb ADDED
@@ -0,0 +1,16 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $VERBOSE = true
4
+
5
+ require "pathname"
6
+
7
+ base_dir = Pathname.new(__FILE__).dirname.parent.expand_path
8
+
9
+ lib_dir = base_dir + "lib"
10
+ test_dir = base_dir + "test"
11
+
12
+ $LOAD_PATH.unshift(lib_dir.to_s)
13
+
14
+ require_relative "helper"
15
+
16
+ exit(Test::Unit::AutoRunner.run(true, test_dir.to_s))
@@ -0,0 +1,68 @@
1
+ class PenguinsTest < Test::Unit::TestCase
2
+ def setup
3
+ @dataset = Datasets::Penguins.new
4
+ @table = @dataset.to_table
5
+ end
6
+
7
+ sub_test_case("Dataset") do
8
+ test("no keys") do
9
+ dataframe = @dataset.to_pandas
10
+ assert_equal([
11
+ [344, 8],
12
+ ["Adelie", "Torgersen", 39.1, 18.7, 181, 3750, "male", 2007]
13
+ ],
14
+ [
15
+ dataframe.shape.to_a,
16
+ dataframe.iloc[0].to_a
17
+ ])
18
+ end
19
+
20
+ test("keys") do
21
+ dataframe = @dataset.to_pandas(:species,
22
+ :flipper_length_mm,
23
+ :body_mass_g,
24
+ :year)
25
+ assert_equal([
26
+ [344, 4],
27
+ ["species", "flipper_length_mm", "body_mass_g", "year"],
28
+ ["Adelie", 181, 3750, 2007]
29
+ ],
30
+ [
31
+ dataframe.shape.to_a,
32
+ dataframe.columns.to_a,
33
+ dataframe.iloc[0].to_a
34
+ ])
35
+ end
36
+ end
37
+
38
+ sub_test_case("Table") do
39
+ test("no keys") do
40
+ dataframe = @table.to_pandas
41
+ assert_equal([
42
+ [344, 8],
43
+ ["Adelie", "Torgersen", 39.1, 18.7, 181, 3750, "male", 2007]
44
+ ],
45
+ [
46
+ dataframe.shape.to_a,
47
+ dataframe.iloc[0].to_a
48
+ ])
49
+ end
50
+
51
+ test("keys") do
52
+ dataframe = @table.to_pandas(:species,
53
+ :flipper_length_mm,
54
+ :body_mass_g,
55
+ :year)
56
+ assert_equal([
57
+ [344, 4],
58
+ ["species", "flipper_length_mm", "body_mass_g", "year"],
59
+ ["Adelie", 181, 3750, 2007]
60
+ ],
61
+ [
62
+ dataframe.shape.to_a,
63
+ dataframe.columns.to_a,
64
+ dataframe.iloc[0].to_a
65
+ ])
66
+ end
67
+ end
68
+ end
metadata ADDED
@@ -0,0 +1,159 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: red-datasets-pandas
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Kenta Murata
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2021-06-24 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pandas
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: red-datasets
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: bundler
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :development
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rake
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ type: :development
63
+ prerelease: false
64
+ version_requirements: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
69
+ - !ruby/object:Gem::Dependency
70
+ name: test-unit
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ type: :development
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - ">="
81
+ - !ruby/object:Gem::Version
82
+ version: '0'
83
+ - !ruby/object:Gem::Dependency
84
+ name: yard
85
+ requirement: !ruby/object:Gem::Requirement
86
+ requirements:
87
+ - - ">="
88
+ - !ruby/object:Gem::Version
89
+ version: '0'
90
+ type: :development
91
+ prerelease: false
92
+ version_requirements: !ruby/object:Gem::Requirement
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ version: '0'
97
+ - !ruby/object:Gem::Dependency
98
+ name: kramdown
99
+ requirement: !ruby/object:Gem::Requirement
100
+ requirements:
101
+ - - ">="
102
+ - !ruby/object:Gem::Version
103
+ version: '0'
104
+ type: :development
105
+ prerelease: false
106
+ version_requirements: !ruby/object:Gem::Requirement
107
+ requirements:
108
+ - - ">="
109
+ - !ruby/object:Gem::Version
110
+ version: '0'
111
+ description: 'Red Datasets Pandas adds `#to_pandas` method to each dataset and its
112
+ table in Red Datasets. You can get data as Pandas::DataFrame class object.
113
+
114
+ '
115
+ email:
116
+ - mrkn@mrkn.jp
117
+ executables: []
118
+ extensions: []
119
+ extra_rdoc_files: []
120
+ files:
121
+ - ".yardopts"
122
+ - Gemfile
123
+ - LICENSE.txt
124
+ - README.md
125
+ - Rakefile
126
+ - lib/datasets-pandas.rb
127
+ - lib/datasets-pandas/conversion.rb
128
+ - lib/datasets-pandas/version.rb
129
+ - red-datasets-pandas.gemspec
130
+ - test/helper.rb
131
+ - test/run-test.rb
132
+ - test/test-penguins.rb
133
+ homepage: https://github.com/mrkn/red-datasets-pandas
134
+ licenses:
135
+ - MIT
136
+ metadata: {}
137
+ post_install_message:
138
+ rdoc_options: []
139
+ require_paths:
140
+ - lib
141
+ required_ruby_version: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ required_rubygems_version: !ruby/object:Gem::Requirement
147
+ requirements:
148
+ - - ">="
149
+ - !ruby/object:Gem::Version
150
+ version: '0'
151
+ requirements: []
152
+ rubygems_version: 3.2.21
153
+ signing_key:
154
+ specification_version: 4
155
+ summary: Red Datasets Pandas adds Pandas::DataFrame object export feature to Red Datasets.
156
+ test_files:
157
+ - test/helper.rb
158
+ - test/run-test.rb
159
+ - test/test-penguins.rb