Pandasで複数行・複数列を効率的に取り出す(抽出する)方法

Pandasで複数行・複数列を効率的に取り出す(抽出する)方法

はじめに

Pandasは、Pythonでデータ分析をするためのライブラリです。データフレームやシリーズと呼ばれるデータ構造を提供し、複数の行や列を抽出するための機能が豊富にあります。

本記事では、Pandasを使って複数行・複数列を効率的に取り出す方法を紹介します。

複数行・複数列抽出の重要性と用途

データ分析では、大量のデータから必要な情報を取り出すことが重要です。複数行・複数列を一度に取り出すことで、必要な情報を簡単に抽出することができます。

例えば、ある企業の顧客データから、特定の期間内に購入した商品の一覧を取り出したい場合、購入日と商品名の2つの列を抽出することが必要になります。また、特定の条件を満たす行を抽出したい場合も、複数条件を指定することで簡単に抽出することができます。

Pandasを使った効率的な複数行・複数列抽出方法の紹介

こんな人におすすめ

以下のような人におすすめです。

  • データ分析を行う人
  • Pythonを使ってデータ処理を行う人

使用する主なライブラリ

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

  • Pandas
  • Numpy

Pandasの基本概念

Pandasは、データを表すデータフレームと、1次元のデータを表すシリーズという2つのデータ構造を提供します。

データフレームとシリーズの違い

データフレームは、複数の列からなる2次元の表形式のデータ構造です。一方、シリーズは、1次元のデータを表すデータ構造で、一つの列に相当します。

インデックスとカラムについて

データフレームとシリーズには、行と列に対応するラベルを指定することができます。行に対応するラベルをインデックス、列に対応するラベルをカラムと呼びます。

Pandasで複数行・複数列を抽出する方法

loc[]およびiloc[]を使用した行・列抽出

loc[]およびiloc[]は、インデックスやカラム名を指定して行・列を抽出するための方法です。

import pandas as pd

# サンプルデータを作成
df = pd.DataFrame({'A': [1, 2, 3, 4, 5],
                   'B': [10, 20, 30, 40, 50],
                   'C': [100, 200, 300, 400, 500],
                   'D': [1000, 2000, 3000, 4000, 5000],
                   'E': [10000, 20000, 30000, 40000, 50000]},
                  index=['a', 'b', 'c', 'd', 'e'])

# loc[]を使用した行抽出
df.loc[['a', 'c', 'e']]

# loc[]を使用した列抽出
df.loc[:, ['B', 'D']]

# iloc[]を使用した行抽出
df.iloc[[0, 2, 4]]

# iloc[]を使用した列抽出
df.iloc[:, [1, 3]]

上記のコードでは、loc[]およびiloc[]を使用して、行や列を抽出しています。loc[]は、インデックスやカラム名を指定することで、行・列を抽出することができます。iloc[]は、行・列の位置を指定することで、行・列を抽出することができます。

行インデックスとカラム名をリストで指定して抽出

行インデックスとカラム名をリストで指定して、複数行・複数列を抽出することもできます。

# 行インデックスとカラム名をリストで指定して抽出
df.loc[['a', 'c', 'e'], ['B', 'D']]

上記のコードでは、loc[]を使用して、行インデックスとカラム名をリストで指定して、複数行・複数列を抽出しています。

複数条件による行・列抽出

複数の条件を指定して、行・列を抽出することもできます。以下のように、条件式を論理演算子で結合することで、複数条件による抽出ができます。

# 複数条件による行抽出
df[(df['B'] > 20) & (df['D'] < 4000)]

# 複数条件による列抽出
df.loc[:, (df.mean() > 20) & (df.mean() < 500)]

上記のコードでは、複数条件による行抽出と列抽出を行っています。行抽出では、B列の値が20より大きく、D列の値が4000より小さい行を抽出しています。列抽出では、列の平均値が20より大きく、500より小さい列を抽出しています。

query()メソッドを使用した行抽出と列抽出の組み合わせ

query()メソッドを使用すると、条件式を文字列で指定して、行を抽出することができます。また、query()メソッドをカラム名のリストと一緒に使用することで、列抽出と組み合わせて使用することができます。

# query()メソッドを使用した行抽出
df.query('B > 20 and D < 4000')

# query()メソッドを使用した列抽出の組み合わせ
df.query('B > 20 and D < 4000')[['B', 'D']]

上記のコードでは、query()メソッドを使用して、行抽出と列抽出の組み合わせを行っています。行抽出では、B列の値が20より大きく、D列の値が4000より小さい行を抽出しています。列抽出では、B列とD列のみを抽出しています。

Pandasの活用例

ここでは、CSVファイルからデータを読み込み、複数行・複数列を抽出する例を紹介します。

CSVファイルの読み込みとデータフレームの作成

まずは、CSVファイルからデータを読み込んで、データフレームを作成します。

# CSVファイルからデータを読み込む
data = pd.read_csv('sample.csv')

# データフレームの作成
df = pd.DataFrame(data)

上記のコードでは、CSVファイルからデータを読み込んで、データフレームを作成しています。

条件を満たす複数行・複数列の抽出

次に、条件を満たす複数行・複数列を抽出する方法を紹介します。

# 条件を満たす複数行・複数列を抽出
df.query('col1 > 3 and col2 < 6')[['col1', 'col2']]

上記のコードでは、query()メソッドを使用して、col1列の値が3より大きく、col2列の値が6より小さい行を抽出し、col1列とcol2列のみを抽出しています。

まとめ

Pandasを使って、複数行・複数列を効率的に取り出す方法を紹介しました。loc[]やiloc[]を使った行・列の抽出や、複数条件による行・列の抽出、query()メソッドを使用した行抽出と列抽出の組み合わせなど、様々な抽出方法があります。また、CSVファイルからデータを読み込んで、複数行・複数列を抽出する方法も紹介しました。これらの方法を使って、データ分析の効率化に役立ててください。