質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

Q&A

解決済

1回答

8384閲覧

golangでpython3のライブラリであるpandasを利用することは可能でしょうか。

UekiKouji

総合スコア121

Go

Go(golang)は、Googleで開発されたオープンソースのプログラミング言語です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

pandas

Pandasは、PythonでRにおけるデータフレームに似た型を持たせることができるライブラリです。 行列計算の負担が大幅に軽減されるため、Rで行っていた集計作業をPythonでも比較的簡単に行えます。 データ構造を変更したりデータ分析したりするときにも便利です。

0グッド

0クリップ

投稿2017/09/25 04:47

いつもお世話になります。最近知ったのですが、rubyからpythonのライブラリが呼べるようなgemができたようです。で質問なのですが、python3のライブラリであるpandasをgolangで呼べるものなのでしょうか。
ネットをいろいろ調べていると、2009年ごろにpythonのコードをgoで呼ぶ記事は見つけました。また、
最近ではGrumpyでpythonのコードをgoに変換するといったものもあるようです。このGrumpyはpythonのpandasで、可視化したものをgoで利用できるのか、よくわかりませんでした。
何か、いい方法があれば、教えていただけるとありがたいです。よろしくお願いします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Go から別の言語を呼ぶ方法として3つあります。

A. Go だけでその言語を再実装する

https://github.com/goby-lang/goby/

Go で書かれた Ruby (ぽい)言語です。

B. 言語のコードを Go に変換する

トランスパイルという方式です。Grumpy がこれにあたります。Grumpy の場合は、一部 python に寄せたランタイムも作られています。

C. cgo を使ってその言語をライブラリとして呼び出す

言語が提供する埋め込み用のヘッダファイルやライブラリを使って、Go の cgo から呼び出します。

本題

Pandas はC言語で書かれた python3 拡張で書かれています。ですので Go から Pandas を呼び出すには、
ですので、A や B は無理があります。もちろんC言語の部分も合わせて Go に移植するならば話は別ですが。

残るはCですが、go-python を使うのが良いと思います。

https://github.com/sbinet/go-python

go

1package main 2 3import "fmt" 4import "github.com/sbinet/go-python" 5 6func init() { 7 err := python.Initialize() 8 if err != nil { 9 panic(err.Error()) 10 } 11} 12 13func main() { 14 gostr := "foo" 15 pystr := python.PyString_FromString(gostr) 16 str := python.PyString_AsString(pystr) 17 fmt.Println("hello [", str, "]") 18}

この様に、Go のコードの中に python の呼び出しを書く事ができるので、Pandas も呼び出せると思います。

ただし、現状 Go から python を呼び出そうとされている理由がわかりませんが、僕であればやろうとされている事を(規模にもよりますが)、Go で書き直すと思います。以下は Pandas の様なデータフレームを扱うライブラリです。

https://github.com/qingtiandalaoye/GoDataframe

投稿2017/09/26 08:53

編集2017/09/26 23:34
mattn

総合スコア5030

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

UekiKouji

2017/09/27 04:19

ご返答ありがとうございます。GoにもPandasの様なデータフレームはあるのですね。私の勉強不足です。大変勉強になります。
UekiKouji

2017/09/27 04:24

つい先日地元でrubykaigiというイベントがありました。その時、rubyはデータサンエンスの分野で、まだまだだそうです。なので、pythonのライブラリを取り込んで、rubyで処理する方法を作成しましたという講演を聞きました。
UekiKouji

2017/09/27 04:30

今、勤務している会社でgoで作成したサービスがあり、goに興味を持ちました。サービスの中で、AIを利用したデータ分析を行なっているので、最近特にデータサイエンスに興味を持っています。データサイエンスは、私自身pythonかなという印象を持っており、サービスはgoで(web)データ分析は、pythonで行なったらいいのではと思っています。それぞれの強い部分を生かしていけないかなと思い、この様な質問をしました。
UekiKouji

2017/09/27 06:02 編集

いつも色々、お教授していただいてありがとうございます。大変感謝しています。今後ともよろしくお願いいたします。
UekiKouji

2017/09/27 06:03

不適切な文言があったので修正しました。
mattn

2017/09/27 23:54

補足ですが、上記の cgo を使う場合 (go-python も含まれます)、C言語とGo言語の間をいったりきたりしますので、オーバーヘッドがそこそこ掛かります。ですのでデータの行き来が多い場合には使わない方が良いかもしれません。(これは Go に限った話ではないですが)
UekiKouji

2017/11/21 05:29

ありがとうございます。
UekiKouji

2017/12/18 22:45

遅くなりましたが、解決しました。ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問