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ファイルからデータを読み込んで、複数行・複数列を抽出する方法も紹介しました。これらの方法を使って、データ分析の効率化に役立ててください。