🙄

pandasを使ってデータの列を取得する python: pandasの基礎知識

2023/06/08に公開

データの先頭を取得するには

データ分析では、生データを眺めてみることが重要です。数行見るだけでおかしなデータに気づくことがあります。今回はデータの先頭を取得する記事を書きます。

今回は以下のコードを扱います。

import numpy as np
import pandas as pd

df = pd.DataFrame(
    [
        ["Alice", "国語", 87],
        ["Alice", "数学", np.nan],
        ["Bob", "国語", 65],
        ["Bob", "数学", 92],
    ],
    columns=["Name", "Subject", "Point"],
)
df

上記のリストの先頭の2行を取得してみます。
以下は期待する出力です。

データの先頭を取得するには、head()を使います。デフォルトでは先頭の5行を取得します。引数で取得する行数を指定できます。
もし、データの末尾を取得したい場合は、tail()を使います。

今回は以下を使用しますが、

df[:2]

以下の3つでも出力できます。

df.head(n)
df[:n]
df.iloc[:n]

今回は、一番簡単で短そうなので、df[:n]を使用することにします。

実行することで、期待する結果が返ってきます。

データを1列おきに取得するには

データ分析では、規則的に必要な列を抜き出して使いたいことがあります。今回は、偶数列を抜き出す方法を記事に書きます。

変数dfに、店舗ごとの過去の売上(Sales_店舗)と累積売上(Cum_店舗)が入っています。
今回は以下のコードを使用します。

import pandas as pd

df = pd.DataFrame(
    [
        [100, 10, 10, 15, 15],
        [101, 7, 17, 12, 27],
        [102, 5, 22, 18, 45],
    ],
    columns=["No", "Sales_A", "Cum_A", "Sales_B", "Cum_B"],
)
df

売上の列だけを使って分析をしたいので、偶数列(Sales_店舗)が必要です。
変数dfから偶数列だけを抜き出してみます。

期待する結果は以下です。

一般的に、行番号や列番号を使ってDataFrameの一部を取得したり変更したりする場合は、ilocを使います。
ilocでは、リストのようにスライスを使えます。ここでは、偶数列を取得したいので、df.iloc[:, 1::2]とします。最初の:が全行を、次の1::2が偶数列の指定です(2列目から2列ごと)。

よって今回使用するコードは

df.iloc[:, 1::2]

を使用して、実行すると期待する結果が返ってきます。

条件で行を絞り込むには

データ分析では、特定の条件でデータを絞り込んで、統計を取ったり値を更新したりすることがあります。今回は簡単にデータを絞り込む方法を記事に書いていきます。

DataFrame型の変数dfに、テストの点数が入っています。
以下のコードを使用していきます。

import pandas as pd

df = pd.DataFrame(
    [
        ["Alice", "国語", 87],
        ["Alice", "数学", 72],
        ["Bob", "国語", 65],
        ["Bob", "数学", 92],
    ],
    columns=["Name", "Subject", "Point"],
)
df

変数dfから列Subjectが数学の行を抜き出してみます。

以下は、期待する結果です。

条件を指定してDataFrameから行を絞り込むには、ブールインデックスというしくみを使います。ここではそのしくみを簡単に説明します。

df.Subject == "数学"は、「各行のSubjectの値を見て、"数学"かどうか判定した結果」をSeriesに構成したものです。
すなわち下記と同じ意味です。

pd.Series([c == "数学" for c in df.Subject])

解答としましては、

df[df.Subject == "数学"]

になります。

実行すると、期待する結果が返されます。

Discussion