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

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

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

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

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

Q&A

解決済

2回答

829閲覧

統計?Python3 で「~の範囲の値が何件あるか」を計算し、グラフに書き出したい

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

統計

統計は、集団現象を数量で把握することです。また、調査で得られた性質や傾向を数量的に表したデータのことをいいます。

0グッド

1クリップ

投稿2018/11/03 08:49

編集2018/11/03 09:17

Python3(Django) で DB のレコードを数十件取得し、そのレコードのフィールド「num」の値の統計?を取ってグラフ(Chart.js)に出力したいのですが、どうやるのが王道でしょうか?何か numpy などのライブラリを使ったほうが楽でしょうか?
サンプルコードなどを教えていただけると嬉しいです(コードでは Django や Chart.js などは無視していただいて、プレインなPython3のコードでかまいません)。

例えば num の値が以下のように各レコードにセットされている時、

1 2 3 4 5 6 7 8 9 10 20 30

以下のような出力にして円形グラフ(Chart.jsを使用)を作りたいです。

1 ~ 5 の範囲: 5 件 6 ~ 10 の範囲: 5 件 11 ~ 15 の範囲: 0 件 16 ~ 20 の範囲: 1 件 21 ~ 25 の範囲: 0 件 26 ~ 30 の範囲: 1 件

num の値の範囲は上限を設定しないものとします。
このような処理の分野が統計になるのか、それとも他の分野になるのかもわからないレベルなのですが、教えていただけると助かります。
よろしくお願いいたします。

参考:
https://www.ipentec.com/document/office-excel-summarize-counting-number-for-each-range-of-data-using-pivot-table

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

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

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

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

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

can110

2018/11/03 09:13

例示されている4つのうち範囲幅が異なります(先2つは5、後2つは10)が、正しいでしょうか?
退会済みユーザー

退会済みユーザー

2018/11/03 09:18

すみません。修正しました。よろしくお願いいたします。
guest

回答2

0

ベストアンサー

こんな感じでしょうか。

python

1import numpy as np 2 3data = np.array([1,2,3,4,5,6,7,8,9,10,20,30]) 4result = np.histogram(data, bins=np.arange(1, data.max()+5, 5)) 5print(result) # => (array([5, 5, 0, 1, 0, 1]), array([ 1, 6, 11, 16, 21, 26, 31]))

クライアント側で描画するなら、適宜JSONにでも変換して投げてください。

投稿2018/11/03 12:33

hayataka2049

総合スコア30933

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

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

0

私は専門家ではありませんが、おそらく "プレイン" な Python で書くか NumPy/SciPy あたりのパッケージを使う、というのがよく使われるパターンではないかと思います。

あくまでも個人的な意見ですが、私なら、例にあげられたヒストグラムのようなシンプルな集計だけであれば特に追加のパッケージなしに実装し、もうちょっと複雑になるような場合は NumPy 等を使うと思います。「 python stats histogram 」等のキーワードでググられると参考になるページがたくさん出てくるので一度検索されてみてください。

ちなみに、 Django と Chart.js で実装されるのであれば全体の流れは次のようになるかと思います。

view:

  1. DB からデータを取得する
  2. データを集計する
  3. 集計結果を template に渡す

template:

  1. view から渡された集計結果を JS に渡す
  2. JS: 渡された集計結果を Chart.js で描画する

あとはこの各部を実装していけば OK 、という感じでしょうか。

質問へのお答えになっていますでしょうか?・・・そういうことではなくて、「 for ループ等を使って一連の値からヒストグラムの集計をするコードの書き方がわからなくて・・・」というご質問でしょうか?

投稿2018/11/03 11:07

gh640

総合スコア1407

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問