Python

Python初学者向け:pandasのplot関数による可視化を基本から解説

スポンサーリンク

 

この記事はこんな方におススメです
  • Pythonを始めたばかりで基本から学びたい方
  • Pythonの基本的な部分を速習してまずは全体像を把握しておきたい方

▶ Python初学者向けにデータ分析に関する記事を書いています

はじめに

今回はpandasのplot関数を基本から解説します。Pythonで可視化するときに真っ先に思いつくのはmatplotlibかと思いますが、pandasのplot関数はこのmatplotlibのラッパーの位置づけです。かなり簡単に可視化ができるので是非使い方を覚えましょう。

▶ matplotlib , seabornによる可視化のまとめ記事は以下をご覧ください。

環境

  • Windows10
  • Python 3.9.7
  • pandas 1.5.0
  • numpy: 1.23.3
  • matplotlib: 3.6.1

準備

サンプルーデータの準備

今回はseabornにあらかじめ準備されているニューヨークのタクシー乗車のデータを扱うことにしましょう。

# ライブラリのインポート
import pandas as pd
import matplotlib
import matplotlib.pyplot as plt
import numpy as np
import seaborn as sns

# データの読み込み
df = sns.load_dataset('taxis')

# 列を抽出
df = df[['pickup','passengers','distance','fare','tip','total','pickup_borough']]
df.head()
ニューヨークのタクシー乗車のデータ

今回は読み込んだデータの一部しか使わないので、列項目を絞り込んでいます。このデータを使って早速プロットしていきましょう。

plot関数の書式

まずは書式を確認していきましょう。以下が基本的な書式になります。

Series.plot()
df.plot()

たったこれだけです。これを基本形として、引数を指定するといろんなグラフを描画することができます。よく使う引数についてもまとめておきましょう。

引数説明
kindグラフの種類を指定(デフォルトはline)
xx軸の変数指定
yy軸の変数指定
figsizeFigureオブジェクトの大きさの指定
subplots1つのFigureオブジェクトの中にサブプロットを描くかどうか
layoutサブプロットの行数、列数の指定
sharexx軸の範囲を共有するかどうか
shareyy軸の範囲を共有するかどうか
titleグラフのタイトル
gridグリッドを表示するかどうか
colormap色の指定
legend凡例を表示するかどうか
alpha透過率
plot()関数の主な引数

たくさんの引数がありますが、使っているうちに自然に覚えるので心配はいりません。はじめのうちは、この表を見ながら使いたいものを使う、というやり方で構いません。

では早速プロットしてみましょう。

pandasのplot関数で可視化

グラフの種類

グラフの種類は引数kindで指定することができます。kindで指定できる値は以下となります。

kindで指定する値グラフの種類
line折れ線グラフ
bar垂直棒グラフ
barh水平棒グラフ
box箱ひげ図
histヒストグラム
kde or densityカーネル密度推定
area面グラフ
scatter散布図
hexbin六角形ビニング図
pie円グラフ
kindで指定する値とグラフの種類

折れ線グラフ

まずは折れ線から描いていきましょう。kindのデフォルトは’line’なので省略しても折れ線グラフを描くことができます。まずはSeriesの場合からやってみましょう。

# Seriesにplot()を指定する
df['total'].plot()
Series.plot()

Seriesの場合はインデックスがx軸となりSeriesが1折れ線で表示されます。これはkindに「line」を指定しても同じ結果が得られます。次にデータフレームの場合を試してみましょう。

# データフレームにplot()を指定する
df.plot()
df.plot()

df.plot()とするとインデックスがx軸となり数値の列が折れ線で描画されます。数値の列が複数あれば、複数の折れ線が表示されます。また、数値以外の列は無視されます。

こんな簡単なコードですごいですね!

さらに引数としてsubplots=Trueとすると複数のプロットを分離してサブプロットを描くことができます。

# サブプロット
df.plot(subplots=True)
subplots=Trueを指定

簡単ですね。すごい!縦に並べるだけではなく、引数layoutを使うとサブプロットの行と列を指定できます。やってみましょう。

# layoutを指定
df.plot(subplots=True,layout=(3,2))
layoutを指定

ここではlayout=(3,2)を指定したので、3行2列でサブプロット描かれました。これらがたっと1行のコードでできるって感動ですね。

棒グラフ

次に棒グラフを描いてみましょう。引数でkind=’bar’とすると棒グラフを描くことができます。

# fareとtipの列のみ抽出して棒グラフを描く
df_fare_tip = df[['fare','tip']] 
df_fare_tip.plot(kind='bar')
棒グラフ

fareとtipを合わせるとtotalとなります。横に並べるのではなく積み上げたくなりますよね。積み上げ棒グラフを描く場合は、stacked=Trueとします。

# 積み上げ棒グラフ
df_fare_tip.plot(kind='bar',stacked=True)
積み上げ棒グラフ

横棒グラフにしたい場合は、barの代わりにbarhを指定します。

# 横棒グラフ
df_fare_tip.plot(kind='barh',stacked=True)
横棒グラフ

ヒストグラム

同じ要領でどんどん描いていきましょう。次はヒストグラムです。

# ヒストグラム
df_fare_tip.plot(kind='hist')
ヒストグラム

箱ひげ図

# 箱ひげ図
df.plot(kind='box',subplots=True,layout=(2,3))
箱ひげ図

散布図

最後に散布図です。散布図の場合は、kind=’scatter’としてx軸とy軸も指定します。

# 散布図
df.plot(kind='scatter',x='fare',y='tip')
散布図

面グラフ

最後に面グラフも見ておきましょう。こちらもkindにareaを指定するだけです。

# 面グラフ
df.plot(kind='area')
面グラフ

どれも簡単ですね。気になる引数は値を指定するとどうなるのか、ご自身で試してみるとよいでしょう。

スポンサーリンク

まとめ

今回はpandasのplot()関数でいろんなグラフを描いてみました。ちょっと引数を変えるだけで簡単にいろんなグラフが描けるだけでなく、比較しやすいようにレイアウトなども変更ができるので便利ですね。

コメント

タイトルとURLをコピーしました