【Python】Pandas:属性を抽出してデータフレームを操作する実践例

Pythonのデータ分析ライブラリであるpandasは、データフレームとシリーズという2つの基本的なデータ構造を提供しています。データフレームは2次元の表形式であり、表形式のデータを扱う際に最もよく使われるデータ構造です。この記事では、pandasでデータフレームを操作する際に欠かせない属性の抽出方法について、実践例を交えて紹介します。

はじめに

pandasでデータフレームを操作する際に欠かせないのが、データフレームの各属性の抽出方法です。データフレームには、列属性や行属性があります。これらの属性を適切に抽出することで、データフレームを効率的に操作することができます。

列属性の抽出方法と実践例

データフレームの列属性を抽出する方法は、df[列名]の形式で行います。以下は、列名が「A」と「B」の2つの列属性を抽出する例です。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

# 列属性の抽出
print(df["A"])
print(df[["A", "B"]])

上記のコードを実行すると、以下のような出力結果が得られます。

0    1
1    2
2    3
Name: A, dtype: int64
   A  B
0  1  4
1  2  5
2  3  6

1つの列属性を抽出する場合は、df[列名]の形式で、複数の列属性を抽出する場合はdf[[列名1, 列名2, …]]の形式で指定します。また、iloc属性やloc属性を使うことで、列属性を位置で指定することもできます。以下は、列属性を位置で指定して抽出する例です。

import pandas as pd

print(df.loc[:,'A']) 
print(df.iloc[:,0])

データフレームの行属性を抽出する方法は、df.loc[インデックス名]やdf.iloc[インデックス番号]の形式で行います。以下は、インデックス名が「0」と「2」の2つの行属性を抽出する例です。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
}, index=["a", "b", "c"])

# 行属性の抽出
print(df.loc["a"])
print(df.iloc[[0, 2]])

上記のコードを実行すると、以下のような出力結果が得られます。

A    1
B    4
C    7
Name: a, dtype: int64
   A  B  C
a  1  4  7
c  3  6  9

1つの行属性を抽出する場合は、df.loc[インデックス名]またはdf.iloc[インデックス番号]の形式で、複数の行属性を抽出する場合はdf.loc[[インデックス名1, インデックス名2, …]]またはdf.iloc[[インデックス番号1, インデックス番号2, …]]の形式で指定します。また、loc属性やiloc属性を使うことで、行属性と列属性を同時に指定して抽出することもできます。

条件に基づく属性抽出方法と実践例

データフレームから、ある条件を満たす行属性や列属性を抽出する方法もあります。以下は、列属性が3より大きい行だけを抽出する例です。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

# 条件に基づく列属性の抽出
print(df.loc[:, df.max() > 3])

上記のコードを実行すると、以下のような出力結果が得られます。

   B  C
0  4  7
1  5  8
2  6  9

条件に基づく行属性の抽出も同様に行います。以下は、列属性が3より

以下は、列属性が3より大きい行だけを抽出する例です。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
})

# 条件に基づく行属性の抽出
print(df[df["A"] > 1])

上記のコードを実行すると、以下のような出力結果が得られます。

   A  B  C
1  2  5  8
2  3  6  9

条件に基づく属性抽出では、loc属性やiloc属性を使うことで、行属性と列属性を同時に指定して抽出することもできます。

複数の属性を同時に抽出する方法と実践例

データフレームから複数の属性を同時に抽出する方法は、df.loc[インデックス名, [列名1, 列名2, …]]やdf.iloc[インデックス番号, [列番号1, 列番号2, …]]の形式で行います。以下は、インデックス名が「1」である行と、列名が「B」と「C」である列属性を同時に抽出する例です。

import pandas as pd

# データフレームの作成
df = pd.DataFrame({
    "A": [1, 2, 3],
    "B": [4, 5, 6],
    "C": [7, 8, 9]
}, index=["a", "b", "c"])

# 複数の属性を同時に抽出
print(df.loc["b", ["B", "C"]])
print(df.iloc[1, [1, 2]])

上記のコードを実行すると、以下のような出力結果が得られます。

B    5
C    8
Name: b, dtype: int64
B    5
C    8
Name: b, dtype: int64

まとめ

pandasでデータフレームを操作する際に欠かせない属性の抽出方法について、列属性や行属性、条件に基づく属性抽出、複数の属性を同時に抽出する方法を紹介しました。これらの方法を適切に使いこなすことで、データフレームを効率的に操作することができます。

以上で、Pythonのpandasを使ったデータフレームの属性の抽出方法について、実践例を交えて紹介しました。これらの方法をマスターすることで、pandasをより効率的に扱うことができるようになるでしょう。