pandas 0.3.1 → 0.3.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 5cec5d04429e07f8534ddf83dc6f9c936ae0b4506028832a7fee98f85152279e
4
- data.tar.gz: bc753819f9c50e38c5ea354388046586ef85e6b2d11c99613219cdc5eb7b48b9
3
+ metadata.gz: 9626959ac5c10565684676b14d07fb00746cfd33ffed6e4d60f7472daf33539a
4
+ data.tar.gz: f7c87f1fb107618a7348edfdd97d8f349d64f896da4d2d4f730969498225f030
5
5
  SHA512:
6
- metadata.gz: 18ebe0cca22e7ce90b3bd604be6c4e325e05cd957f631573d7cc58eaa31353e75a2d6d1b86a176aac9e458c5457a86f188df8d84fbb7a5f75a25699d27982418
7
- data.tar.gz: 822e9a25ba3b591dc9d74b6875baec180a4e1d89e893f0fe612bc5e2f2c0290c0b64ab1564fe80fc2eb0ee59adbaa396e79429bc3a93037f6e8fe66027838cf7
6
+ metadata.gz: c7bca82d4cc864086fa7775e90ba0921768bdf1a746f94842f601f8061cce108b28c03e6210cf4596d48bfb6ba8f89b5bdc27dab06b2375adee0b23969942668
7
+ data.tar.gz: 355f57116257fcaa0c136f4bedb929e080e6a7bb76b17763dc23e74530bbced96e8ad0c3c943309306bd4df7e5718b619f46eac69a2816e9f3f3d72f8467fdd7
@@ -0,0 +1,69 @@
1
+ name: CI
2
+
3
+ on:
4
+ push:
5
+ branches:
6
+ - master
7
+ pull_request:
8
+ types:
9
+ - opened
10
+ - synchronize
11
+ - reopened
12
+
13
+ jobs:
14
+ test:
15
+ name: ${{ matrix.os}} ${{ matrix.ruby }} ${{ matrix.python }}-${{ matrix.python_arch }}
16
+ runs-on: ${{ matrix.os }}
17
+
18
+ strategy:
19
+ fail-fast: false
20
+ matrix:
21
+ os:
22
+ - ubuntu-latest
23
+ - macos-latest
24
+ ruby:
25
+ - 3.0
26
+ - 2.7
27
+ - 2.6
28
+ - 2.5
29
+ - 2.4
30
+ - debug
31
+ python:
32
+ - 3.8.x
33
+ - 3.7.x
34
+ - 3.6.x
35
+ - 2.7.x
36
+ python_arch:
37
+ - x64
38
+
39
+ steps:
40
+ - uses: actions/checkout@v2
41
+ with:
42
+ fetch-depth: 1
43
+
44
+ - uses: ruby/setup-ruby@v1
45
+ with:
46
+ ruby-version: ${{ matrix.ruby }}
47
+
48
+ - uses: actions/setup-python@v1
49
+ with:
50
+ python-version: ${{ matrix.python }}
51
+ architecture: ${{ matrix.python_arch }}
52
+
53
+ - run: sudo apt-get install libsqlite3-dev
54
+ if: matrix.os == 'ubuntu-latest'
55
+
56
+ - run: brew install sqlite3
57
+ if: matrix.os == 'macos-latest'
58
+
59
+ - run: pip install -r requirements.txt
60
+
61
+ - run: gem install bundler
62
+ - run: bundle install
63
+
64
+ - run: bundle exec rake
65
+ env:
66
+ PYTHON: python
67
+
68
+ - run: rake build
69
+ - run: gem install pkg/*.gem
data/CHANGES.md CHANGED
@@ -1,5 +1,35 @@
1
1
  # The chenge history of Pandas wrapper for Ruby
2
2
 
3
+ ## 0.3.6
4
+
5
+ * Add `to_narray` in `Pandas::DataFrame`, `Pandas::Series`, and `Pandas::Index`
6
+
7
+ ## 0.3.5
8
+
9
+ * Fix the bug of `to_a` for Series after doing dropna
10
+
11
+ ## 0.3.4
12
+
13
+ * Add `to_a` methods in `Pandas::Series` and `Pandas::Index`
14
+
15
+ * Add `length` method in `Pandas::Series` and `Pandas::Index`
16
+
17
+ ## 0.3.3
18
+
19
+ * Support array index in `Pandas::Series#[]`
20
+
21
+ * Add predicate methods for `Pandas::Index` and `Pandas::Series`
22
+
23
+ * Support closed-end string ranges in `Pandas::Series#[]`
24
+
25
+ * Support string array index in `Pandas::DataFrame#loc[]`
26
+
27
+ * Support array index in `Pandas::DataFrame#iloc[]`
28
+
29
+ ## 0.3.2
30
+
31
+ * Fix for pandas 1.0
32
+
3
33
  ## 0.3.1
4
34
 
5
35
  * Fix `Pandas.read_sql_table` for passing optional parameters such as `index_col`
data/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # Pandas wrapper for Ruby
2
2
 
3
- [![Build Status](https://travis-ci.org/mrkn/pandas.rb.svg)](https://travis-ci.org/mrkn/pandas.rb)
3
+ [![CI](https://github.com/mrkn/pandas.rb/workflows/CI/badge.svg?branch=master&event=push)](https://github.com/mrkn/pandas.rb/actions?query=workflow%3ACI)
4
4
 
5
5
  This library enables to directry call [pandas](http://pandas.pydata.org/) from Ruby language.
6
6
  This uses [pycall](https://github.com/mrkn/pycall).
data/lib/pandas.rb CHANGED
@@ -1,7 +1,7 @@
1
1
  require "pandas/version"
2
- require "pycall"
2
+ require "numpy"
3
3
 
4
- Pandas = PyCall.import_module('pandas')
4
+ Pandas = PyCall.import_module("pandas")
5
5
  module Pandas
6
6
  VERSION = PANDAS_VERSION
7
7
  Object.send :remove_const, :PANDAS_VERSION
@@ -18,20 +18,30 @@ module Pandas
18
18
  LocIndexer = self.core.indexing._LocIndexer
19
19
  LocIndexer.__send__ :register_python_type_mapping
20
20
 
21
- IXIndexer = self.core.indexing._IXIndexer
22
- IXIndexer.__send__ :register_python_type_mapping
21
+ if self.__version__ < "1.0"
22
+ IXIndexer = self.core.indexing._IXIndexer
23
+ IXIndexer.__send__ :register_python_type_mapping
24
+ end
23
25
 
24
- MultiIndex = self.core.indexing.MultiIndex
26
+ if self.__version__ >= "1.0"
27
+ MultiIndex = self.core.indexes.multi.MultiIndex
28
+ else
29
+ MultiIndex = self.core.indexing.MultiIndex
30
+ end
25
31
  MultiIndex.__send__ :register_python_type_mapping
26
32
 
27
- DatetimeIndex = if self.__version__ >= '0.20'
33
+ DatetimeIndex = if self.__version__ >= "0.20"
28
34
  self.core.indexes.datetimes.DatetimeIndex
29
35
  else
30
36
  self.tseries.index.DatetimeIndex
31
37
  end
32
38
  DatetimeIndex.__send__ :register_python_type_mapping
33
39
 
34
- Index = self.core.index.Index
40
+ if self.__version__ >= "1.0"
41
+ Index = self.core.indexes.base.Index
42
+ else
43
+ Index = self.core.index.Index
44
+ end
35
45
  Index.__send__ :register_python_type_mapping
36
46
 
37
47
  DataFrameGroupBy = self.core.groupby.DataFrameGroupBy
@@ -70,6 +80,9 @@ module Pandas
70
80
  end
71
81
 
72
82
  require 'pandas/data_frame'
83
+ require 'pandas/index'
73
84
  require 'pandas/io'
85
+ require 'pandas/loc_indexer'
74
86
  require 'pandas/options'
87
+ require 'pandas/series'
75
88
  end
@@ -2,11 +2,13 @@ require 'pandas'
2
2
 
3
3
  module Pandas
4
4
  class DataFrame
5
- def [](*key)
6
- if key.length == 1 && key[0].is_a?(Array)
7
- key[0] = PyCall::List.new(key[0])
8
- end
5
+ def [](key)
6
+ key = PyCall::List.new(key) if key.is_a?(Array)
9
7
  super
10
8
  end
9
+
10
+ def to_narray
11
+ to_numpy.to_narray
12
+ end
11
13
  end
12
14
  end
@@ -0,0 +1,33 @@
1
+ require 'pandas'
2
+
3
+ module Pandas
4
+ class Index
5
+ def monotonic?
6
+ is_monotonic
7
+ end
8
+
9
+ def monotonic_decreasing?
10
+ is_monotonic_decreasing
11
+ end
12
+
13
+ def monotonic_increasing?
14
+ is_monotonic_increasing
15
+ end
16
+
17
+ def unique?
18
+ is_unique
19
+ end
20
+
21
+ def length
22
+ size
23
+ end
24
+
25
+ def to_a
26
+ Array.new(length) {|i| self[i] }
27
+ end
28
+
29
+ def to_narray
30
+ to_numpy.to_narray
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,25 @@
1
+ require 'pandas'
2
+
3
+ module Pandas
4
+ class LocIndexer
5
+ def [](*keys)
6
+ for i in 0...keys.length
7
+ if keys[i].is_a? Array
8
+ keys[i] = PyCall::List.new(keys[i])
9
+ end
10
+ end
11
+ super
12
+ end
13
+ end
14
+
15
+ class IlocIndexer
16
+ def [](*keys)
17
+ for i in 0...keys.length
18
+ if keys[i].is_a? Array
19
+ keys[i] = PyCall::List.new(keys[i])
20
+ end
21
+ end
22
+ super
23
+ end
24
+ end
25
+ end
@@ -0,0 +1,48 @@
1
+ require 'pandas'
2
+
3
+ module Pandas
4
+ class Series
5
+ def [](*key)
6
+ if key.length == 1
7
+ case key[0]
8
+ when Array
9
+ key[0] = PyCall::List.new(key[0])
10
+ when Range
11
+ case key[0].begin
12
+ when String
13
+ key[0] = key[0].begin ... key[0].end # force exclude-end
14
+ end
15
+ end
16
+ end
17
+ super
18
+ end
19
+
20
+ def monotonic?
21
+ is_monotonic
22
+ end
23
+
24
+ def monotonic_decreasing?
25
+ is_monotonic_decreasing
26
+ end
27
+
28
+ def monotonic_increasing?
29
+ is_monotonic_increasing
30
+ end
31
+
32
+ def unique?
33
+ is_unique
34
+ end
35
+
36
+ def length
37
+ size
38
+ end
39
+
40
+ def to_a
41
+ Array.new(length) {|i| self.iloc[i] }
42
+ end
43
+
44
+ def to_narray
45
+ to_numpy.to_narray
46
+ end
47
+ end
48
+ end
@@ -1 +1 @@
1
- PANDAS_VERSION = "0.3.1"
1
+ PANDAS_VERSION = "0.3.6"
data/pandas.gemspec CHANGED
@@ -22,10 +22,11 @@ Gem::Specification.new do |spec|
22
22
  spec.require_paths = ["lib"]
23
23
 
24
24
  spec.add_dependency "pycall", ">= 1.0.0"
25
+ spec.add_dependency "numpy"
25
26
 
26
- spec.add_development_dependency "bundler", "~> 1.15"
27
- spec.add_development_dependency "rake", "~> 10.0"
28
- spec.add_development_dependency "rspec", "~> 3.0"
27
+ spec.add_development_dependency "bundler", ">= 1.17.2"
28
+ spec.add_development_dependency "rake"
29
+ spec.add_development_dependency "rspec"
29
30
  spec.add_development_dependency "activerecord", ">= 4.2"
30
31
  spec.add_development_dependency "sqlite3"
31
32
  end
data/requirements.txt CHANGED
@@ -1,2 +1,2 @@
1
- pandas==0.22.*
2
- sqlalchemy==1.2.*
1
+ pandas
2
+ sqlalchemy
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pandas
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.1
4
+ version: 0.3.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenta Murata
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-04-04 00:00:00.000000000 Z
11
+ date: 2021-06-21 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: pycall
@@ -24,48 +24,62 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: 1.0.0
27
+ - !ruby/object:Gem::Dependency
28
+ name: numpy
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'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
30
44
  requirements:
31
- - - "~>"
45
+ - - ">="
32
46
  - !ruby/object:Gem::Version
33
- version: '1.15'
47
+ version: 1.17.2
34
48
  type: :development
35
49
  prerelease: false
36
50
  version_requirements: !ruby/object:Gem::Requirement
37
51
  requirements:
38
- - - "~>"
52
+ - - ">="
39
53
  - !ruby/object:Gem::Version
40
- version: '1.15'
54
+ version: 1.17.2
41
55
  - !ruby/object:Gem::Dependency
42
56
  name: rake
43
57
  requirement: !ruby/object:Gem::Requirement
44
58
  requirements:
45
- - - "~>"
59
+ - - ">="
46
60
  - !ruby/object:Gem::Version
47
- version: '10.0'
61
+ version: '0'
48
62
  type: :development
49
63
  prerelease: false
50
64
  version_requirements: !ruby/object:Gem::Requirement
51
65
  requirements:
52
- - - "~>"
66
+ - - ">="
53
67
  - !ruby/object:Gem::Version
54
- version: '10.0'
68
+ version: '0'
55
69
  - !ruby/object:Gem::Dependency
56
70
  name: rspec
57
71
  requirement: !ruby/object:Gem::Requirement
58
72
  requirements:
59
- - - "~>"
73
+ - - ">="
60
74
  - !ruby/object:Gem::Version
61
- version: '3.0'
75
+ version: '0'
62
76
  type: :development
63
77
  prerelease: false
64
78
  version_requirements: !ruby/object:Gem::Requirement
65
79
  requirements:
66
- - - "~>"
80
+ - - ">="
67
81
  - !ruby/object:Gem::Version
68
- version: '3.0'
82
+ version: '0'
69
83
  - !ruby/object:Gem::Dependency
70
84
  name: activerecord
71
85
  requirement: !ruby/object:Gem::Requirement
@@ -101,9 +115,9 @@ executables: []
101
115
  extensions: []
102
116
  extra_rdoc_files: []
103
117
  files:
118
+ - ".github/workflows/ci.yml"
104
119
  - ".gitignore"
105
120
  - ".rspec"
106
- - ".travis.yml"
107
121
  - CHANGES.md
108
122
  - Gemfile
109
123
  - LICENSE.txt
@@ -114,9 +128,12 @@ files:
114
128
  - data/titanic.csv
115
129
  - lib/pandas.rb
116
130
  - lib/pandas/data_frame.rb
131
+ - lib/pandas/index.rb
117
132
  - lib/pandas/io.rb
118
133
  - lib/pandas/io/active_record.rb
134
+ - lib/pandas/loc_indexer.rb
119
135
  - lib/pandas/options.rb
136
+ - lib/pandas/series.rb
120
137
  - lib/pandas/version.rb
121
138
  - pandas.gemspec
122
139
  - requirements.txt
@@ -139,8 +156,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
139
156
  - !ruby/object:Gem::Version
140
157
  version: '0'
141
158
  requirements: []
142
- rubyforge_project:
143
- rubygems_version: 2.7.6
159
+ rubygems_version: 3.2.3
144
160
  signing_key:
145
161
  specification_version: 4
146
162
  summary: Pandas wrapper for Ruby
data/.travis.yml DELETED
@@ -1,26 +0,0 @@
1
- sudo: false
2
- language: ruby
3
-
4
- rvm:
5
- - ruby-head
6
- - 2.5.1
7
- - 2.4.4
8
- - 2.3.7
9
- - 2.2.10
10
-
11
- env:
12
- matrix:
13
- - PYTHON=python
14
- - PYENV_VERSION=3.6 PYTHON=python
15
-
16
- before_install:
17
- - gem update --system
18
- - gem update bundler
19
-
20
- before_script:
21
- - pip install --user -r requirements.txt
22
- - PYENV_VERSION=3.6 pip3 install --user -r requirements.txt
23
-
24
- matrix:
25
- allow_failures:
26
- - env: PYTHON=python # Ignore failed on python 2.7