シェアしました。
関連情報:
DB接続編
https://neovisionconsulting.blogspot.com/2020/02/gopandas-db.html
Golangで扱えるデーターフレーム4種類
https://neovisionconsulting.blogspot.com/2020/02/go4.html
ことの発端
- バッチ処理とかで
DataFrame
でcsvファイルを処理したい DataFrame
と言ったらpandas
- でもPythonは遅いので他の言語で扱えるものはないものか?
そこでこいつ!
- 使って人いたらどのように使っているか教えて欲しい
- とりあえず今回は使えそうなものを紹介します
まずはgo get
DataFrameを作る
DataFrameの作り方は6つあります
使用できる型は
使用できる型は
Int
, Float
, String
, Bool
ですDataFrameを作成する関数
型指定しなくても、ある程度自動で判定してくれます
ReadJson
はあんまり使えないので紹介しません(詳しくはGitHubのexampleを)New(列から作成)
若干面倒そうだがまぁまぁ
LoadRecords(行から作成)
dataframe.WithTypes
がなくてもDataFrameを作成してくれます(型は指定できませんが)LoadStruct(Structから作成)
個人的におすすめ、おそらくファイルから読み取る方法以外ではこの方法が一番スマートな方法だと思います
LoadMaps(Mapから作成)
これはちょっとないかな
ReadCSV(CSVファイルから作成)
TSVやスペース区切りもオプションを使用すれば読み込めます
出力はこんな感じ
Goには標準でPrint関数がありますが、
fmt
パッケージのPrint関数でしか出力できないので注意データ操作
Select(列を選択)
SubSet(指定した行を取得)
Mutate(列を追加)
列を追加する際、すでに存在するカラム名を指定すればカラムの更新になります
RBind(行を結合)
DataFrameの行を結合します。ただしカラム名とカラム数が一致していることが前提です
CBind(列を結合)
DataFrameの列を結合します。ただしレコード数が一致していることが前提です
Set(データの更新)
Arrange(ソート)
複数キー指定できる
Filter(条件に一致した行を取得)
dataframe.F
- Colname: カラム名
- Comparator: 比較
- Comparando: 比較値
省略も可能(私はvscodeで書いて、省略をすると警告が出ます)
注意点
Filter
内にdataframe.F
は何個でも条件として指定できるがand
ではなくor
なので注意
andしたい
and
は現状このようにやるしかない
面倒臭い!(時間があればプルリクを投げたい)。
InnerJoin(内部結合)
割と簡単
LeftJoin(外部結合)
とりあえず
もちろん
LeftJoin
だけ紹介もちろん
OuterJoin
とRightJoin
もあります
番外 DataFrameを扱えるライブラリ
- pandas(Python): https://pandas.pydata.org/
- daru(Ruby): https://github.com/SciRuby/daru
- krangl(Ktolin): https://github.com/holgerbrandl/krangl
- R: https://www.rdocumentation.org/packages/base/versions/3.5.1/topics/data.frame
- PHP: https://packagist.org/packages/archon/dataframe
- Spark(Python, R, Java, Scala): https://spark.apache.org/docs/latest/sql-programming-guide.html
他にもあるなら教えて欲しい!
ハンズラボ Advent Calendar 2018 明日2日目は @watarukura です!
0 件のコメント:
コメントを投稿