Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

This article is a Private article. Only a writer and users who know the URL can access it.
Please change open range to public in publish setting if you want to share this article with other users.

More than 3 years have passed since last update.

データの可視化(Pandas)

Last updated at Posted at 2021-11-02

グラフの出力方法

基本のグラフ

例えば、「データの分析」で求めたこのようなデータが対象になるが、

そもそもは、このコードがもとになっているので

print(df_data["旅客クラス"].value_counts(sort=False))

これを利用して、

df_count = df_data["旅客クラス"].value_counts(sort=False)
df_count.plot.line()
plt.show()

これを実行すると、下のグラフが作成される。

グラフを画像で保存する場合

df_count = df_data["旅客クラス"].value_counts(sort=False)
df_count.plot.line()
plt.savefig("images/sample_chart.png")  # これに変えるだけ

複数の列を対象にしたグラフ

例えば、「データの分析」で求めたこのようなデータが対象になるが、

そもそもは、このコードがもとになっているので

print(df_data.groupby("旅客クラス").mean())

これを利用して、

df_mean = df_data.groupby("旅客クラス").mean()
df_mean.plot.bar(legend=True,  # 凡例を表示させる場合はTrue
                 figsize=(6, 4))  # グラフサイズの指定(大きくすると文字が小さくなる)
plt.show()

実行すると、このような結果になる。

生存状況兄弟の人数の様子が見えなくなってしまっているので、

df_mean = df_data.groupby("旅客クラス").mean()
df_mean.plot.bar(legend=False,  # 凡例をなくす場合(表示させる場合はTrue)
                 subplots=True,  # 複数のグラフを作成する場合
                 layout=(3, 2),  # グラフのレイアウト(縦の個数, 横の個数)
                 figsize=(10, 8))  # グラフサイズの指定(大きくすると文字が小さくな
plt.show()

これを実行すると、下のグラフが作成される。

plot()の他の引数については、こちらのページに詳しく載っている。

散布図

df_data.plot.scatter(x="年齢", y="運賃")
plt.show()

x(横軸)とy(縦軸)を指定しなければならないことに注意が必要。

df_data.plot.scatter(x="年齢", y="運賃",
                     s=100,  # マーカーのサイズ
                     c="darkkhaki",  # マーカーの色
                     alpha=0.2,  # 透明度
                     edgecolors="olive")  # マーカーの枠の色
plt.grid()  # グリッドを付ける場合
plt.show()

このように書くと、色などを変えることも可能。

色についてはこちらのページを参考に。スペルミスに気を付けること。

ヒストグラム

df_data.loc[:, "年齢"].hist()
plt.xlabel("年齢")  # 横軸のラベル
plt.ylabel("人数")  # 縦軸のラベル
plt.title("年齢のヒストグラム")  # グラフのタイトル
plt.show()

さらに、性別ごとの年齢のヒストグラムを表示させる場合は、

df_data.loc[:, "年齢"].hist(by=df_data.loc[:, "性別"])
plt.show()
ただ、左右のグラフの縦軸の目盛りが統一されていない点に少し問題があるかも。 目盛りの指定に加えて、たとえば以下のように調整できる。
axes = df_data.loc[:, "年齢"].hist(by=df_data.loc[:, "性別"])
for ax in axes.reshape(-1):
    ax.grid(b=True)  # グリッドを表示
    ax.set_xlabel("年齢")  # 横軸のラベル
    ax.set_ylabel("人数")  # 縦軸のラベル
    ax.set_ylim(0, 120)  # 縦軸の目盛りの最小値と最大値の指定
plt.suptitle("性別ごとの年齢のヒストグラム")  # グラフ全体のタイトル
plt.subplots_adjust(top=0.88,  # グラフ位置の微調整
                    left=0.12,  # グラフ位置の微調整
                    wspace=0.4)  # グラフ間の微調整
plt.show()
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?