Pythonのさまざまなグラフでデータを可視化する方法
Pythonには、初心者でも手軽に扱えるデータ可視化ライブラリが数多く用意されています。これらのライブラリは、小規模なデータセットから大規模なデータセットまで幅広く対応できる点が大きな魅力です。
データ可視化で特に広く使われているPythonライブラリは以下のとおりです。
- Matplotlib
- Pandas
- Plotly
- Seaborn
本記事では、1つの固定データセットを題材に、さまざまな種類のグラフを描画することで、データを多角的に分析する方法を解説します。
今回使用するのは、インドの2019年における人口推計(単位:千人)に関する次のデータセットです。
| 国・地域 | 年 | バリアント | 値 |
|---|---|---|---|
| インド | 2019 | Medium(中位) | 1368737.513 |
| インド | 2019 | High(高位) | 1378419.072 |
| インド | 2019 | Low(低位) | 1359043.965 |
| インド | 2019 | Constant fertility(出生率一定) | 1373707.838 |
| インド | 2019 | Instant replacement(即時置換) | 1366687.871 |
| インド | 2019 | Zero migration(移動ゼロ) | 1370868.782 |
| インド | 2019 | Constant mortality(死亡率一定) | 1366282.778 |
| インド | 2019 | No change(変化なし) | 1371221.64 |
| インド | 2019 | Momentum(モメンタム) | 1367400.614 |
基本的なプロット
まずは、折れ線グラフ・散布図・ヒストグラムという3つの基本プロットを作成してみましょう。
折れ線グラフ(Line Plots)
折れ線グラフは、x値とy値の対応関係を線で結んで表現するグラフです。年ごとの人口推移のように、時系列データの変化を視覚的に把握したい場合に最適です。
import matplotlib.pyplot as plt
Year = [2010, 2011, 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019]
India_Population = [1173108018,1189172906,1205073612,1220800359,1266344631,1309053980,1324171354,1339180127,1354051854,1368737513]
plt.plot(Year, India_Population)
plt.show()
出力結果

散布図(Scatter Plots)
個々のデータポイントとして2つの数量の関係をプロットしたい場合は、散布図が便利です。先ほどの折れ線グラフと同じデータを使用し、コードを1行変更するだけで作成できます。
plt.plot(Year, India_Population,'o')
出力結果

ヒストグラム(Histogram)
ヒストグラムは科学技術分野で非常によく使われるグラフで、データの分布を可視化するのに非常に有効です。ここではPandasのDataFrameから直接ヒストグラムを描画してみます。
import pandas as pd
import matplotlib.pyplot as plt
data = [
['India', 2019, 'Medium', 1368737.513],
['India', 2019, 'High', 1378419.072],
['India', 2019, 'Low', 1359043.965],
['India', 2019, 'Constant fertility', 1373707.838],
['India', 2019,'Instant replacement', 1366687.871],
['India', 2019, 'Zero migration', 1370868.782],
['India', 2019,'Constant mortality', 1366282.778],
['India', 2019, 'No change', 1371221.64],
['India', 2019, 'Momentum', 1367400.614]]
df = pd.DataFrame(data, columns = ([ 'Country or Area', 'Year(s)', 'Variant', 'Value']))
df.hist()
plt.show()
出力結果

円グラフ(Pie Charts)
構成比を表現したい場合に便利なのが円グラフです。matplotlibでは、explodeオプションでセグメントを強調表示したり、枠線の色をカスタマイズしたりできます。
import numpy as np
import matplotlib.pyplot as plt
n = 25
Z = np.ones(n)
Z[-1] *= 2.5
plt.axes([0.05, 0.05, 0.95, 0.95])
plt.pie(Z, explode = Z*.05, colors = ['%f' % (i/float(n)) for i in range(n)],
wedgeprops = {"linewidth": 1, "edgecolor": "green"})
plt.gca().set_aspect('equal')
plt.xticks([]), plt.yticks([])
plt.show()
出力結果

極座標プロット(Polar Plot)
極座標系を使ったプロットも、matplotlibなら簡単に描画できます。角度と半径を組み合わせたデータを、レーダーチャートのような形で表現できます。
import numpy as np
import matplotlib.pyplot as plt
ax = plt.axes([0.5,0.05,0.95,0.95], polar=True)
N = 25
theta = np.arange(0.0, 2.5*np.pi, 2.5*np.pi/N)
radii = 10*np.random.rand(N)
width = np.pi/4*np.random.rand(N)
bars = plt.bar(theta, radii, width=width, bottom=0.0)
for r,bar in zip(radii, bars):
bar.set_facecolor( plt.cm.jet(r/10.))
bar.set_alpha(0.5)
ax.set_xticklabels([])
ax.set_yticklabels([])
plt.show()
出力結果

まとめ
このように、matplotlibをはじめとするPythonの可視化ライブラリを使えば、わずか数行のコードで折れ線グラフ・散布図・ヒストグラム・円グラフ・極座標プロットなど多彩なグラフを描画できます。データの性質や分析目的に応じてグラフを使い分けることで、傾向や分布をより深く理解できるようになります。より高度なインタラクティブな可視化が必要な場合は、PlotlyやSeabornの活用も検討してみてください。
-
Pythonによるデータ分析と可視化入門|pandasの基本を徹底解説
Pythonによるデータ分析と可視化の概要 Pythonには、データ分析と可視化のための強力なライブラリが数多く用意されています。代表的なものとしては、NumPy、pandas、matplotlib、seabornなどが挙げられます。本記事では、その中でも中心的な役割を果たすpandasについて詳しく解説します。pandasはNumPyをベースに構築されたオープンソースライブラリで、高速なデータ分析やデータのクリーニング・前処理を効率的に行えます。さらに、pandas自体にも便利な可視化機能が組み込まれています。 pandasのインストール方法 pandasをインストールするには、ターミナル
-
Apple IDが異なるiPhone間でデータを移行する3つの方法
iCloudは、2つのiOSデバイス間でデータを共有するための便利な手段を提供しています。しかし、iCloudを使わずにiPhoneからiPhoneへデータを移行したいケースもあります。例えば、新しいAppleアカウントで使う新しいiPhoneにデータを引き継ぎたい場合や、家族や友人とファイルを共有したい場合などです。「Apple IDが異なるiPhone同士でデータを転送するにはどうすればいいの?」とお悩みの方は、ぜひ本記事をご覧ください。 Apple IDが異なるiPhone間でデータを転送する3つの方法 Apple IDが異なるiPhone間でデータを移行するには、主に次の3つの方法があ