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

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

ただいまの
回答率

90.75%

  • Python 3.x

    5333questions

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

  • pandas

    488questions

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

  • Go

    457questions

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

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

解決済

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 1,192

UekiKouji

score 100

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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

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

package main

import "fmt"
import "github.com/sbinet/go-python"

func init() {
   err := python.Initialize()
   if err != nil {
          panic(err.Error())
   } 
}

func main() {
      gostr := "foo" 
     pystr := python.PyString_FromString(gostr)
     str := python.PyString_AsString(pystr)
     fmt.Println("hello [", str, "]")
}

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

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

https://github.com/qingtiandalaoye/GoDataframe

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/09/27 13:19

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

    キャンセル

  • 2017/09/27 13:24

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

    キャンセル

  • 2017/09/27 13:30

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

    キャンセル

  • 2017/09/27 13:33 編集

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

    キャンセル

  • 2017/09/27 15:03

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

    キャンセル

  • 2017/09/28 08:54

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

    キャンセル

  • 2017/11/21 14:29

    ありがとうございます。

    キャンセル

  • 2017/12/19 07:45

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

    キャンセル

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

  • ただいまの回答率 90.75%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

  • 受付中

    AttributeError: 'Series' object has no attribute '...

    Python3を使っております。 数日前からPythonを始め,matplotlibによるグラフ作成を行いました。 今までCしか使ったことがなく、エラーの内容を調べてみてもうま

  • 解決済

    Pandas.groupbyの結果をcumsum()で累積和を算出すると途中からマイナスに

    前提・実現したいこと 売上ログデータの集計をしています。 Pandasのgroupbyで製品別の売上額を算出し、売上額が大きい順にソート。 隣の列に累積和を追加したいです。

  • 解決済

    python dataframeの結合方法について

    pythonのdataframeの結合方法について質問があります。 既存の関数では、2つのdataframeを結合する際、dataframe1のn行目にdataframe2のm行目

  • 解決済

    Dataframeでのif文について

    前提・実現したいこと pythonのpandasでdataframeを作り、表の中で条件に当てはまる行にフラグを立てたいと思っています for文とif文でかんたんに実現できるかなと

  • 解決済

    , ごとにカラムを分けたい

    , ごとにカラムを分けたいです。 今、Kaggleのタイタニックチャレンジのデータを読み込ませています。 ですが、表のようにコンマごとに区切られず全部一緒のカラムに入ってしまいま

  • 解決済

    pandasのdata frameのcolumnとindexに関して

    前提・実現したいこと Pythonのpandasでdata frameを作成しようとしており、 columnを「日付→項目D→項目C→項目B→項目A」の順番に並べ、 indexを非

  • 解決済

    pandas の時間を変換したい

    pandasのdataframeに入れた時間(str型)を変換(いわゆるdatetimeなどの時系列データの形)にしたいです。 to_datetime()を試してみましたが、うまく

  • 解決済

    python 要素内のソートについて

    下記にてtimeカラムの要素ごとにソートをかけたいのですが やり方がわからずご教授頂きたいです。  ID   time        0    [6, 4]   

同じタグがついた質問を見る

  • Python 3.x

    5333questions

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

  • pandas

    488questions

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

  • Go

    457questions

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