pandasを使ってデータの列を取得する python: pandasの基礎知識
データの先頭を取得するには
データ分析では、生データを眺めてみることが重要です。数行見るだけでおかしなデータに気づくことがあります。今回はデータの先頭を取得する記事を書きます。
今回は以下のコードを扱います。
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