fillnaやinterpolateを使わずにデータフレームからNaN値を削除する方法【Python Matplotlib】
データ分析の現場では、欠損値(NaN)を含むデータフレームをそのままグラフ化すると、線が途切れたり空白が生じたりして、正確な可視化の妨げになります。この記事では、fillna()やinterpolate()に頼らずにNaN値を除外する基本手法と、比較として補間を活用して滑らかな折れ線グラフを描く方法を、Matplotlibを使ったサンプルコードとともに解説します。
全体の流れ
- 図のサイズを設定し、サブプロット周辺の余白(パディング)を調整します。
- NumPy配列を作成し、それをもとにPandasのデータ構造を生成します。
- 軸ラベルを持つ1次元のndarray(時系列データも扱えます)としてSeriesオブジェクトを用意します。
- 補間しながらプロットします。メソッドに'index'や'values'を指定すると、インデックスの実際の数値が補間の基準として使われます。
show()メソッドで図を表示します。
fillna・interpolateを使わずにNaNを除外する:dropna()
欠損値を単純に取り除きたいだけであれば、Pandasのdropna()が最も手軽な方法です。欠損値を特定の値で埋めるfillna()や、欠損値を補間するinterpolate()を使わずに、NaNが含まれる要素をまとめて削除できます。
# NaNを含む行を削除した新しいSeriesを作成 df_clean = df.dropna() # 欠損値のないデータをプロット df_clean.plot(marker='o') plt.show()
この方法ではデータ点が減るため、なるべく多くのデータを残したいケースには不向きですが、欠損値を含むレコードを分析対象から除外したい場合には最適です。
参考:interpolate('index')で補間しながらプロットする
一方、データ点を減らさずに見た目上の切れ目を埋めたい場合は、interpolate('index')が便利です。インデックスの実際の数値を基準に欠損部分が補間されるため、グラフ上の線が途切れません。以下が完全なサンプルコードです。
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
# 図のサイズを設定
plt.rcParams['figure.figsize'] = [7.50, 3.50]
plt.rcParams['figure.autolayout'] = True
# NaNを含むNumPy配列
data = np.array([1., 1.2, 0.89, np.nan,
1.2, np.nan, 1.89, 2.09,
.78, .67, np.nan, 1.78,
np.nan, 1.56, 1.89, 2.78]
)
# PandasのSeriesを作成
df = pd.Series(data)
# インデックスの値を基準に補間してプロット
df.interpolate('index').plot(marker='o')
# グラフを表示
plt.show()
実行結果
このコードを実行すると、次のようなグラフが出力されます。元々NaNだった箇所がインデックスの数値に基づいて補間され、マーカー付きの折れ線が途切れずにつながっているのが確認できます。

-
【Python】Matplotlibで目盛りラベルを残したままグラフのフレーム(枠線)を削除する方法
Matplotlibで作成したグラフから、軸の目盛りラベルはそのまま残しつつ、外枠(フレーム)だけを取り除きたいケースはよくあります。例えば、よりシンプルで洗練された見た目のチャートを作りたい場合などに有効です。 ここでは、具体的な手順とサンプルコードを紹介します。 実装手順 figureサイズの設定 — グラフのサイズを指定し、figure.autolayout を有効にしてサブプロット間および周囲の余白を自動調整します。 データの準備 — プロット用の y データポイントのリストを作成します。 グラフの描画 — plot() メソッドを使ってyデータポイントをプロットします。 スパイン(
-
Python Matplotlibで画像からグリッド線(グリッド)を非表示にする方法
Matplotlibで画像を表示する際、デフォルトでは背景にグリッド線が表示されることがあります。画像をクリアに見せるためにグリッド線を削除したい場合は、grid(False) を使うだけで簡単に実現できます。以下に具体的な手順とサンプルコードを紹介します。グリッド線を削除する手順図のサイズ(figure size)を設定し、サブプロット間および周囲の余白(パディング)を調整します。ファイルから画像を読み込みます。OpenCVなどを使って、画像のカラースペースを変換します(例:BGRからRGBへ)。グリッド線を非表示にするために plt.grid(False) を呼び出します。imshow()