散布図
# coding: utf-8
import matplotlib
import matplotlib.pyplot as plt
import pandas as pd
%matplotlib inline
import japanize_matplotlib # matplotlibで日本語の文字化けが起きないようにする。
iris = pd.read_csv("iris.csv")
iris_setosa=iris[(iris['species']=='setosa')] → グループ分けしている
iris_versicolor = iris[(iris['species'] == 'versicolor')]
iris_virginica = iris[(iris['species'] == 'virginica')]
iris
| sepal_length | sepal_width | petal_length | petal_width | species |
---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
---|
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
---|
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
---|
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
---|
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
---|
… | … | … | … | … | … |
---|
145 | 6.7 | 3.0 | 5.2 | 2.3 | virginica |
---|
146 | 6.3 | 2.5 | 5.0 | 1.9 | virginica |
---|
147 | 6.5 | 3.0 | 5.2 | 2.0 | virginica |
---|
148 | 6.2 | 3.4 | 5.4 | 2.3 | virginica |
---|
149 | 5.9 | 3.0 | 5.1 | 1.8 | virginica |
---|
irisのコマンドで表示されるのはグループ化される前のデータ
plt.scatter(iris_setosa['sepal_length'], iris_setosa['sepal_width'], c='r', label="setosa", marker="*") makerを指定することもできる。(今回はしていない)
plt.scatter(iris_versicolor['sepal_length'], iris_versicolor['sepal_width'], color='b', marker="D", label = "versicolor")
plt.xlabel("sepal_length")
plt.ylabel("sepal_width")
plt.title("品種による特徴量の分布")
plt.legend()
plt.show()
- plt.scatter()には必ず必要な引数とそうでないような引数がある。
- 必ず必要な引数は最初のx軸のデータ、y軸のデータのみである。
- 例題の1行めのコードでは
iris_setosa['sepal_length'], iris_setosa['sepal_width']
に相当する。
- 必ず必要ではない引数は何も指定されない場合デフォルトの値で実行される。
- このようなデータは通常グラフのカスタマイジングのために存在する。
マーカー(marker) | 説明 |
---|
‘.’ | 点 |
‘o’ | 円 |
‘*’ | 星(アスタリスク) |
‘x’ | xマーク |
‘D’ | ダイヤモンド |
‘s’ | 四角形 |
ヒストグラム
titanic_df = pd.read_csv('titanic.csv')
titanic_df.head(3)
first_class = titanic_df[titanic_df['Pclass'] == 1]
#second_class = titanic_df[titanic_df['Pclass'] == 2]
third_class = titanic_df[titanic_df['Pclass'] == 3]
plt.hist(first_class['Age'], bins=30, alpha=0.5, color='r', label='first_calss')
#plt.hist(second_class['Age'], bins=30, alpha=0.5, label='second_class')
plt.hist(third_class['Age'], bins=30, alpha=0.5, label='third_class')
plt.title("グラスごとの年齢分布")
plt.xlabel("年齢")
plt.ylabel("人数")
plt.legend()
plt.show()
plt.hist()
は必須の引数としてデータ1個をもらい、そのデータに範囲ごとで何個入っているかの件数をプロットする。- データの何範囲に分けるかを決定する引数は
bins
である。bins=15
ならばデータの最大値と最小値の間を15個の範囲に分割し、その範囲内のデータの件数を数えてプロットする。
- データが重なっているとき透明度を調節して両方見ることができるようになる。引数
alpha
で透明度が調節できる。- 引数
alpha
は0~1の値をとり、1で不透明、0で透明な状態となる。(デフォルトは1) - 今まで習ってきた
plt.plot()
、plt.scatter()
などにも使える引数である。
コメント