Class: Daru::DataFrame
- Inherits:
-
Object
- Object
- Daru::DataFrame
- Defined in:
- lib/to_csv.rb
Instance Method Summary collapse
-
#add_vector(vecname, vec) ⇒ Object
(also: #addvec)
To avoid bug about adding column to Daru::DataFrame.
-
#convert_enc!(from: "cp932", to: "utf-8") ⇒ Object
ver.0.3.8~ Convert Daru::DF encoding.
-
#encode_vector_name(vector_i) ⇒ Object
エンコード関連 ### vector_i番目のヘッダー名を読めるようにエンコード.
-
#encode_vectors! ⇒ Object
すべての列に対し上記を実施.
-
#set_index!(indexcolumn) ⇒ Object
rover not suppoted yet about indexing.
- #simple_pivot(index, vectors, values, agg: :mean, index_name: nil) ⇒ Object
-
#simplify_multi_index(vector_names_ary) ⇒ Object
To revice pivot index.
- #to_csv ⇒ Object
- #to_rover ⇒ Object
- #write_csv(path, encoding: nil, alt: false) ⇒ Object
Instance Method Details
#add_vector(vecname, vec) ⇒ Object Also known as: addvec
To avoid bug about adding column to Daru::DataFrame
32 33 34 35 |
# File 'lib/to_csv.rb', line 32 def add_vector(vecname, vec) self[vecname] = vec self.rename_vectors({vecname => vecname}) end |
#convert_enc!(from: "cp932", to: "utf-8") ⇒ Object
ver.0.3.8~ Convert Daru::DF encoding
51 52 53 54 55 56 57 |
# File 'lib/to_csv.rb', line 51 def convert_enc!(from: "cp932", to: "utf-8") self.vectors.each do |col| self[col] = self[col].each {|val| val.encode!(to, from_encoding: from) if val.is_a?(String)} end self.encode_vectors! end |
#encode_vector_name(vector_i) ⇒ Object
エンコード関連 ### vector_i番目のヘッダー名を読めるようにエンコード
39 40 41 42 43 |
# File 'lib/to_csv.rb', line 39 def encode_vector_name(vector_i) if self.vectors.to_a[vector_i].is_a?(String) self.vectors.to_a[vector_i].encode Encoding::UTF_8, Encoding::Windows_31J end end |
#encode_vectors! ⇒ Object
すべての列に対し上記を実施
46 47 48 |
# File 'lib/to_csv.rb', line 46 def encode_vectors! self.vectors = Daru::Index.new(Range.new(0, self.vectors.size-1).map {|i| encode_vector_name i }) end |
#set_index!(indexcolumn) ⇒ Object
rover not suppoted yet about indexing
61 62 63 |
# File 'lib/to_csv.rb', line 61 def set_index!(indexcolumn) self.index = self[indexcolumn] end |
#simple_pivot(index, vectors, values, agg: :mean, index_name: nil) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 |
# File 'lib/to_csv.rb', line 71 def simple_pivot(index, vectors, values, agg: :mean, index_name: nil) # index, vectors are Arrays. 'values' is String or Array. ## 文字列データなどで最初のデータだけ欲しければ agg: :first piv = self.pivot_table index: index, vectors: vectors, agg: agg, values: values piv.vectors = Daru::Index.new( piv.vectors.to_a.map { _1.join("-") } ) piv.index = Daru::Vector.new( piv.index.to_a.map { _1.join("-") } ) # indexを新しく追加 index_name ||= "Pivot_Index" piv[index_name] = piv.index # 順番変更 piv.order = [piv.vectors.to_a[-1]] + piv.vectors.to_a[0..-2] return piv end |
#simplify_multi_index(vector_names_ary) ⇒ Object
To revice pivot index
66 67 68 69 |
# File 'lib/to_csv.rb', line 66 def simplify_multi_index(vector_names_ary) self.vectors = Daru::Index.new(vector_names_ary) self.index = Daru::Vector.new(self.index.to_a.map{_1[0]}) end |
#to_csv ⇒ Object
6 7 8 9 10 11 12 13 14 15 16 |
# File 'lib/to_csv.rb', line 6 def to_csv() a = self.to_a.transpose ans = self.map(&:name).join "," self.to_a[0].each do |item| ans += "\n" ans += item.map{|k, v| "\"#{v}\""}.join(",") end return ans end |
#to_rover ⇒ Object
90 91 92 |
# File 'lib/to_csv.rb', line 90 def to_rover Rover::DataFrame.new(self.to_a[0]) end |
#write_csv(path, encoding: nil, alt: false) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 29 |
# File 'lib/to_csv.rb', line 18 def write_csv(path, encoding: nil, alt: false) if alt # Experimental: faster algorithm # ""付加を先にDaru上でやってあげる案 #今はとりあえず self.to_daru.write_csv path, encoding: encoding else enc = encoding.nil? ? "" : ":#{encoding}" open(path, "w#{enc}") { _1.write to_csv } end end |