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

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

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

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Chart.js

Chart.jsは、多様なグラフを組み込めるJavaScriptのライブラリ。折れ線グラフや棒グラフ、円グラフ、レーダーチャートなどのグラフの種類が用意されています。HTML5のCanvasを用いて描画され、マークアップも分かりやすく、簡単に編集することが可能です。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

1回答

1909閲覧

csvファイルを用いたデータ分析Webアプリ開発に適した方法は何か。

8960

総合スコア108

Flask

FlaskはPython用のマイクロフレームワークであり、Werkzeug・Jinja 2・good intentionsをベースにしています。

Chart.js

Chart.jsは、多様なグラフを組み込めるJavaScriptのライブラリ。折れ線グラフや棒グラフ、円グラフ、レーダーチャートなどのグラフの種類が用意されています。HTML5のCanvasを用いて描画され、マークアップも分かりやすく、簡単に編集することが可能です。

Matplotlib

MatplotlibはPythonのおよび、NumPy用のグラフ描画ライブラリです。多くの場合、IPythonと連携して使われます。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

3クリップ

投稿2022/05/04 10:27

編集2022/05/04 10:45

質問

データの入ったローカル上に存在するcsvファイルを用いて、日々分析業務をしています。

現在はPythonのPandasやMatplotlibなどを使用して、VSCode上でのグラフの作成・分析を主な方法としています。

また、現在勉強中ですがFlaskを用いて、Webページを複数作成して、それぞれにMatplotlibで作成したグラフの画像を読み込ませる(canvas)ことによって分析・閲覧をする、といった簡易Webアプリを作成し業務を行っています。

このFlaskを用いた方法の主な構図は、

  • 「function.py」というcsvファイルから様々なグラフを作成するための関数がまとまって記載してある.pyファイルがある。
  • Webアプリのメイン機能を実装したmain.pyというファイルが存在する。

  →それぞれのページへのルーティングや「function.py」から関数の呼び込みをおこなう。

  • HTMLが複数、CSSが一つ存在する。

しかし、この方法だとページに飛んだ際のグラフの読み込みに少し時間がかかる場合があります。
考えられる理由は、生データの入ったcsv単体からのグラフ作成になるため、
①「function.py」という使用する関数をまとめたファイルをimport。
②関数を読み込み。
③csvの生データから平均値の算出やグルーピング、グラフを作成する。
④Webに画像として表示する

といった多くの手順を踏んでいるからなのかなと思います。

この時間がかかるという理由に加えて、
グラフの一部にマウスカーソルを合わせた際に対応するデータを表示したい(添付画像参照)といった2つの理由から
Matplotlibをいったん忘れてJavaScriptのChart.jsで何とか同じようなグラフを作成できないかと思い、挑戦してみました。

しかし、どうやらcsvファイルを読みこみ、生データを散布することや描写することはできるものの
csvファイルから特定のデータを抽出したり、グルーピングや平均値算出などのような少し高度な機械学習を用いたグラフ作成にはむいていない?と感じたところで手詰まりとなりました。

少し伝わりにくいかと思いますが、生のcsvファイルから様々な機械学習を行い、ブラウザ上にグラフを描写するWebアプリを作成するにあたって、何が一般的に使用されているのでしょうか?

こうしたらいいんじゃないかという案も含めて
詳しい方、ご教授いただけたらと思います。
よろしくお願いいたします。

【csv(サンプル)】
イメージ説明

【現在VSCode上で作成・閲覧しているグラフの例(月別で色分けしています)】
イメージ説明

【作成したいイメージ(散布図ではないですが…m(__)m)】
イメージ説明

補足情報(FW/ツールのバージョンなど)

python3.9、VSCode

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

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

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

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

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

FiroProchainezo

2022/05/04 11:01

質問が全く頭に入ってきません。 この「質問」の中のどれが質問ですか? Webの表示速度を上げたいのでしょうか? それともデータの解析・分析がしたいのでしょうか? 機械学習したいのでしょうか? Chart.jsで散布図が表示したいだけなのでしょうか? とりあえず分析したいだけなら、「https://notepm.jp/blog/12108」あたりを参考にデータ分析ツールを探してみてはいかがでしょうか?
8960

2022/05/04 11:41

すみません…現状を殴り書きしてしまいました。 質問は 「csvファイルをもとにしたデータ分析を行うwebアプリを作成したいが、グラフ描写の際に複雑な処理を行う場合、どのような方法がよさそうか」 でした。 URL見させていただきました! やはり自分で1からコードを書くより、既存のBIツールを用いるのが妥当でしょうか。
68user

2022/05/04 11:59

> webアプリを作成したい なら BI ツールは NG ですよね。真の目的は何なのでしょうか? 自作したいのかそうでないのか。Webにこだわっているのかそうでないのか。アドホック分析がしたいのか、定型的な分析をして関係者に見てもらえばいいのか。具体的にどのような分析手法を使いたいのか。例えばクラスタ分析は Tableau Desktop では可能のようですがWeb 版は不可とのこと。 まずは要件を自分で考えて、あてはまる BI ツールがあれば使えばいいし、そうでないなら作ればいいんじゃないでしょうか。
meg_

2022/05/04 12:23 編集

> グラフ描写の際に複雑な処理を行う場合 「複雑な処理」とは何を指していますか? > しかし、どうやらcsvファイルを読みこみ、生データを散布することや描写することはできるものの csvファイルから特定のデータを抽出したり、グルーピングや平均値算出などのような少し高度な機械学習を用いたグラフ作成にはむいていない? コードを掲載されるとより良い回答がつくかもしれません。(適切に前処理すれば出来そうな気もしますが) ※上記で「機械学習」とは何を指していますか?一般に「グルーピングや平均値算出」を機械学習とは言わないかと思いますので確認です。
8960

2022/05/04 12:21

>真の目的は何なのでしょうか? 「分析する」が第一目標で、その中でプログラミングの勉強をしながら、というのが第二目標でした。 確かにおっしゃる通りですね。 適したBIツールを見つけて使用するのがもちろんベターですが、自作、WEBにこだわったのはプログラミングを学びながらと思っているためでした。 質問を変えさせていただくと 「生データを含むcsvファイルから、データを加工しつつグラフ描写する上で、WEB表示に適した方法は何があるか」 です。
bsdfan

2022/05/04 12:56

python メインでやるなら、dash + plotly が近いのかなぁと感じましたが、それが質問者さんに最適かはわからないです。もう少し手軽なのなら streamlit とかだし、ガッツリ javascript までいじりたいなら、いろんなやり方がありそうです。
8960

2022/05/04 23:39

>meg 様 ご回答ありがとうございます。 複雑な処理とは、生データをそのまま描写するのではなく、数値によってクエリしたりグルーピングや90パーセンタイル値を算出したものをグラフ化、などを指しておりました。 機械学習という言葉は不適切であったかもしれません。今後はクラスタリングに手を付けたいと思っていたため出てきた言葉でした…。
8960

2022/05/04 23:41

>bsdfan 様 ありがとうございます。 dash + plotly、少し見てきました。確かに想像と近いものがありました。 plotlyも含めてもう少し、自分で複数の選択肢を持ち試してみようと思います。
guest

回答1

0

ベストアンサー

回答ありがとうございます。

「csvファイルをもとにしたデータ分析を行うwebアプリを作成したいが、グラフ描写の際に複雑な処理を行う場合、どのような方法がよさそうか」

これが質問なんですね。
Chart.jsでは届かなかったということなので、元のままMatplotlibを使うのが良いと思います。
Chart.jsよりも高機能なライブラリを探すと、有料版が出てくるので、予算があるなら別でが、そんな感じもしなかったので。

ただし、何をやりたいのかわかっていないのでできないと断言することはできませんから、各ライブラリを確認してみることをお勧めします。
以下のQiitaの記事は2015年のものですが、リンクは有効でした。
https://qiita.com/grgrjnjn/items/fa39778657493008c3b6

Highchartsが未だに一番なのかは別にして、各ライブラリのサンプルを確認すれば、ご自身が必要な機能があるかどうかはわかるはずです。
Chart.jsをこの間使用したところ、リアルタイムストリーミングができるようになっていたり、数年前よりかなり進化していたので、他のライブラリも進化している可能性があるので、確認してみてはいかがでしょうか?

P.S
上の回答は、Webアプリを作成するのが目的だった場合です。
質問を見る限り分析やら解析やらのが重要な気がしたので追加します。

解析分析するのが本当の目的だった場合、WebアプリはCSVをアップロードして、DBに入力する部分だけを担当し、Redashのようなアプリで解析や分析をするのが楽だと思います。

Webアプリといっても、Flaskが全てを担当しなければならないわけではないので、拘る必要は無いと思います。
入力がcsvなのはよくあることですが、それをそのまま使うよりDB(リレーショナル)に入れてしまったり、NoSQL DBに入れてしまったりという下準備を経てから、解析やグラフ作成を実行することで解析やグラフ作成の表示時間を改善することもできるはずです。

ここまで書いてから思いついたのですが、もしかしてWebアプリ作成の勉強とかなのでしょうか?
その場合はWebアプリとDBは切っても切れない関係なので、そちらにデータを入れて読み込むというのも良い勉強になると思います。
また、自分がやりたいことに合致したライブラリを選ぶのもとても良い勉強になると思うので、上に書いたURLなどからライブラリを調べて見るのも良いと思います。

投稿2022/05/04 12:34

FiroProchainezo

総合スコア2401

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

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

8960

2022/05/04 23:48

ご回答いただきありがとうございます。 ご提案いただいた通り、複数のライブラリを試してイメージに近いものを勉強しつつ実践してみようと思います。 自分の中でも、Python周りの勉強をしつつ、日々の分析業務をしつつ、楽もしたいような中途半端な気持ちがありました。もう少しいろいろ試してみます! DBも難しそうなイメージから少し避けているところがありましたが、FiroProchainezoさんの言う通りやはり取り組んでみようと思います。 近道を無理に探さずとにかく実践してみます! ご丁寧にご回答いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問