###最初に
自分の言語能力が低いのと、実装したい事が幾らか抽象的なので、伝わりづらい所があったら、遠慮なく指摘していただけたら幸いです。
前提・実現したいこと
Pythonを用いてデータ分析(視覚化、統計的な処理)を行いたいと思っています。下記のものが
分析対象のデータセットです。データセットについて少しご説明させて頂くとコラム"Sample"には
くるみ豆、五葉黒豆、濃緑丸豆...といったようなものがそれぞれ100個ずつあります。
Area | Sumple | BeanNumber |
---|---|---|
70 | くるみ豆 | B2 |
100 | くるみ豆 | B2 |
90 | くるみ豆 | B2 |
... | ||
60 | 五葉黒豆 | B6 |
65 | 五葉黒豆 | B6 |
... | ||
120 | 濃緑丸豆 | B39 |
120 | 濃緑丸豆 | B39 |
120 | 濃緑丸豆 | B39 |
120 | 濃緑丸豆 | B39 |
110 | 濃緑丸豆 | B39 |
このデータセットにおいて"Sample"の名前ごとに(くるみ豆、五葉黒豆、濃緑丸豆...ぞれぞれに対して)
"Area"を基準としたグラフを描写したいと思っています。matplotlibの細かい仕様についてもまだ良くわかってはいないのですが、下の様なコードでヒストグラムを作成したいと思っています。
このコードを実行した"Sample"の値全部でグラフが描写されますが、今回の場合はSampleの名前ごとにグラフを描写したいです。
グラフ描写のコード(仮)
Python3
1import matplotlib.pyplot as plt 2import pandas as pd 3df1.distplot(df1["Area"], bins=20) 4plt.show()
試したこと
試した事というほどの事はしていないのですが、実装のアイデアとして
①データフレームのコラム●を基準にしてそれをcsvファイルなどにする。
②ひとつひとつのcsvファイルに対してその各々のファイルに指定の処理を加える。
③結果を出力する。
(参考:https://teratail.com/questions/185208)
というのは考えていたのですが、処理に時間がかかるというのと、あまりスマートなやり方ではないと感じていたのでTeratailでご質問させて頂きました。
補足情報(FW/ツールのバージョンなど)
Anaconda
Python
Pycharm
お忙しいとは思いますが、よろしくお願いいたします。
情報に不足がありましたら、ご指摘お願いいたします。
###追記: ベストアンサーにしたコードについての質問
Python3
1#コラム名の中で"Sample"で一纏めにしている 2grouped_df= df.groupby('Sample') 3 4#ここでsubplotを使ったのは、コードの性質上複数のグラグを同時に表示するから。 5#lenでSampleに合わせた数を生成してる。 6fig, axs = plt.subplots(1, len(grouped_df)) 7 8for ax, (name, df) in zip(axs, grouped_df): ここでのzipは2つの引数を渡すために設定している。 9 df['Area'].hist(ax=ax) 10 ax.set_title(name) 11plt.show()
・コード2行目の変数に"fig , ax"と入れているのですが、このfig , axがなしている意味を調べてみたのですが、公式ドキュメントにも特に何も記述がありませんでした。この変数の代わりに適当に文字を
入れてもなりたたなかったので、これは一種の仕様的なものですか?
・for文の中で”ax"を適当な文字として入れた後に"(name, df)"と入れているいるのですが、
なぜ一度もコードの中で登場がなかった"name"がグラフのタイトルを担う役割ができるのか
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/07/09 04:43
2019/07/09 05:31
2019/07/09 10:53
2019/07/10 00:28
2019/07/13 09:19