Pandasでデータフレームの行・列を抽出する方法とポイント!初心者向け解説

pandasでデータフレームの行・列を抽出する方法とポイント!初心者向け解説

はじめに

pandasはPythonのデータ分析ライブラリの中でも特に重要なものです。pandasを使うことで、データの読み込み・加工・分析・可視化などが簡単にできます。

この記事では、pandasを使ってデータフレームの行・列を抽出する方法について解説します。データフレームの行・列を抽出することは、データ分析において非常に重要な操作です。ぜひ覚えておいてください。

行・列の抽出が必要になる理由

データフレームは、行と列から構成される表のようなデータ構造です。行はデータの観測値、列はデータの特徴量を表します。データフレームを分析する際に、特定の行や列を抽出することが必要になる場合があります。例えば、以下のような場合です。

  • 特定の列のみを抽出して、その列のデータの統計量を求める
  • 特定の条件を満たす行だけを抽出して、その行のデータを分析する
  • 複数の行や列を抽出して、それらのデータを比較する

データフレーム操作の基本

pandasを使ったデータフレーム操作には、以下のような基本的な方法があります。

  • データの読み込み・保存方法
  • 基本的なデータ操作方法
  • データフレームの構造の確認方法
  • 行・列の抽出方法

この記事では、特に行・列の抽出方法について解説します。

この記事の目的

この記事では、pandasを使ってデータフレームの行・列を抽出する方法を解説します。具体的には、以下のような内容を扱います。

  • 特定の行を抽出する方法(iloc, locメソッド)
  • 特定の列を抽出する方法(列名指定)
  • 条件に基づいて行・列を抽出する方法
  • 複数の行・列をまとめて抽出する方法

これらの方法をマスターすることで、データ分析に必要な情報を簡単に抽出できるようになります。

こんな人におすすめ

この記事は、以下のような人におすすめです。

  • pandasを初めて使う人
  • データ分析を始めたばかりの人
  • データフレームの行・列を抽出する方法を知りたい人

この記事を読めば、pandasを使ってデータフレームの行・列を簡単に抽出することができるようになります。

使用する主なライブラリ

この記事では、以下のライブラリを使用します。

  • pandas
  • numpy

必要に応じて、ライブラリをインストールしてください。

Pandasの使い方

データの読み込み・保存方法

データフレームを扱う前に、データを読み込む必要があります。pandasでは、csvやExcelなどの様々な形式のデータを簡単に読み込むことができます。

例えば、以下のようなcsvファイルを読み込んでみましょう。

import pandas as pd

df = pd.read_csv("data.csv")

print(df.head())

このように、read_csv関数を使ってcsvファイルを読み込みます。ファイル名は引数として渡します。read_csv関数が返すオブジェクトは、データフレームです。

データフレームを保存するには、to_csvメソッドを使います。

df.to_csv("output.csv", index=False)

このように、to_csvメソッドを使ってcsvファイルにデータフレームを保存します。ファイル名は引数として渡します。index=Falseを指定することで、行番号を出力しないようにします。

基本的なデータ操作方法

データフレームを扱う際には、以下のような基本的な操作方法を覚えておくと便利です。

  • データの抽出・加工
  • データの集計・統計
  • データの可視化

データの抽出・加工には、行・列を抽出したり、条件に基づいてデータを選択したりすることが含まれます。

データの集計・統計には、平均値や中央値、標準偏差などの統計量を求めることが含まれます。

データの可視化には、matplotlibやseabornなどのライブラリを使って、グラフを描画することが含まれます。

データフレームの構造の確認方法

データフレームを扱う際には、まずデータフレームの構造を確認する必要があります。データフレームの構造を確認するには、以下のような方法があります。

  • headメソッドを使って最初の数行を表示する
  • tailメソッドを使って最後の数行を表示する
  • shape属性を使って行数と列数を表示する
  • infoメソッドを使ってデータ型や欠損値の有無を表示する
  • describeメソッドを使って統計量を表示する

以下に、それぞれの方法を示します。

import pandas as pd
df = pd.read_csv("data.csv")

# headメソッドを使って最初の5行を表示する
print(df.head())

# tailメソッドを使って最後の5行を表示する
print(df.tail())

# shape属性を使って行数と列数を表示する
print(df.shape)

# infoメソッドを使ってデータ型や欠損値の有無を表示する
print(df.info())

# describeメソッドを使って統計量を表示する
print(df.describe())

Pandasでの行・列の抽出方法

データフレームの行・列を抽出する方法には、以下のような方法があります。

  • 特定の行を抽出する方法(iloc, locメソッド)
  • 特定の列を抽出する方法(列名指定)
  • 条件に基づいて行・列を抽出する方法
  • 複数の行・列をまとめて抽出する方法

特定の行を抽出する方法(iloc, locメソッド)

データフレームから特定の行を抽出するには、ilocメソッドやlocメソッドを使います。ilocメソッドは、行番号を指定して行を抽出する方法です。locメソッドは、行のラベル(インデックス)を指定して行を抽出する方法です。

例えば、以下のようなデータフレームがあったとします。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

print(df)

このデータフレームから、2行目だけを抽出するには、ilocメソッドを使います。

row = df.iloc[1]

print(row)

このように、ilocメソッドに行番号を渡して、指定した行を抽出します。上の例では、2行目を抽出しています。

locメソッドを使って、行のラベルを指定して行を抽出することもできます。データフレームを読み込む際に、インデックスを指定していない場合は、行番号とインデックスが同じになっています。

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
}, index=["a", "b", "c"])

print(df)

row = df.loc["b"]
print(row)

このように、locメソッドにインデックスを渡して、指定した行を抽出します。上の例では、ラベルが”b”の行を抽出しています。

特定の列を抽出する方法(列名指定)

データフレームから特定の列を抽出するには、列名を指定します。列名を指定する方法には、以下のような方法があります。

  • 単一の列を指定する方法
  • 複数の列を指定する方法

例えば、以下のようなデータフレームがあったとします。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

print(df)

このデータフレームから、”B”列だけを抽出するには、以下のようにします。

col = df["B"]
print(col)

このように、データフレームの列名を指定して、指定した列を抽出します。上の例では、”B”列を抽出しています。

複数の列を抽出する場合は、列名をリストで指定します。

cols = ["A", "C"]
subset = df[cols]

print(subset)

このように、列名をリストで指定して、複数の列を抽出します。上の例では、”A”列と”C”列を抽出しています。

条件に基づいて行・列を抽出する方法

データフレームから、条件に基づいて行や列を抽出することもできます。条件に基づいて行・列を抽出する方法には、以下のような方法があります。

  • ブールインデックス
  • queryメソッド

ブールインデックス

ブールインデックスを使って、条件に基づいて行・列を抽出することができます。ブールインデックスを使う場合は、以下のようにします。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

# 条件に基づいて行を抽出する
rows = df[df["B"] > 4]
print(rows)

# 条件に基づいて列を抽出する
cols = df.loc[:, df.mean() > 5]
print(cols)

上の例では、”B”列が5より大きい行だけを抽出しています。また、列の平均値が5より大きい列だけを抽出しています。

queryメソッド

queryメソッドを使って、条件に基づいて行・列を抽出することができます。queryメソッドを使う場合は、以下のようにします。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

# 条件に基づいて行を抽出する
rows = df.query("B > 4")

print(rows)

# 条件に基づいて列を抽出する
cols = df.query("A == 1 | B == 5")

print(cols)

上の例では、”B”列が5より大きい行だけを抽出しています。また、”A”列が1または”B”列が5の行だけを抽出しています。

複数の行・列をまとめて抽出する方法

複数の行や列をまとめて抽出する場合は、以下のようにします。

行をまとめて抽出する

ilocメソッドやlocメソッドを使って、複数の行をまとめて抽出することができます。ilocメソッドを使って、複数の行をまとめて抽出する場合は、以下のようにします。

import pandas as pd
import numpy as np

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

# 複数の行を抽出する
rows = df.iloc[[0, 2]]
print(rows)

上の例では、1行目と3行目を抽出しています。

locメソッドを使って、複数の行をまとめて抽出する場合は、以下のようにします。

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
}, index=["a", "b", "c"])

# 複数の行を抽出する
rows = df.loc[["a", "c"]]
print(rows)

上の例では、インデックスが”a”と”c”の行を抽出しています。

列をまとめて抽出する

データフレームから複数の列をまとめて抽出する場合は、以下のようにします。

df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

# 複数の列を抽出する
cols = df[["A", "C"]]
print(cols)

上の例では、”A”列と”C”列を抽出しています。

まとめ

この記事では、Pandasでデータフレームの行・列を抽出する方法について解説しました。

データフレームの構造を確認する方法や、特定の行・列を抽出する方法、条件に基づいて行・列を抽出する方法、複数の行・列をまとめて抽出する方法を紹介しました。

これらの方法を覚えておくことで、Pandasでのデータ分析がより効率的になることでしょう。