LEVEL 7 ・ Excel / Lesson 15

列を取り出す・並べ替える・絞り込む

Excelのフィルターや並べ替えを、Pythonで再現します。条件を書けば、何度でも使い回せます。

目安 20分 ・ インストール不要

このレッスンが終わったら

「df[条件] で、条件に合う行だけを取り出せる。条件の結果は True / False」と言える。

STEP 1

できることを見る

Excelで、「金額が10万円以上の行だけ」を見たいとき、フィルターを使いますね。Pythonでは、次のように書きます。

import pandas as pd

df = pd.read_excel("sales.xlsx")
big = df[df["金額"] >= 100000]
print(big)

条件に合う行だけが取り出されます。

STEP 2

動かしてみる

金額が10万円以上の行だけを取り出すpandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

12行のうち、10万円以上の4行だけが表示されました。ExcelのフィルターやCtrl+Fと同じ結果ですが、条件を変えるだけで、何度でも使い回せます。

STEP 3

1行ずつ読む

1行ずつ日本語にしてみる
df["金額"]表(df)から、「金額」の列だけを取り出す
df["金額"] >= 100000金額の列の、1つ1つが10万円以上か調べる。結果は True か False
df[df["金額"] >= 100000]調べた結果が True の行だけを、表から取り出す

日本語にすると

表の中から、金額が10万円以上の行だけを取り出して、big という名前で覚えてください。

真ん中の「>= 100000」の結果は、どうなっているのでしょう。Lesson 05 で学んだ True / False が、行の数だけ並んでいます。実際に見てみましょう。

条件の結果(True / False)を見るpandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

True の行(0, 4, 8, 11番目)だけが、表から取り出された、ということです。

STEP 4

1か所だけ変える

① 列を取り出す。 必要な列だけを取り出します。複数の列は、列名をリストにして、[ ] を二重にします。

列を取り出すpandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

② 並べ替える。 sort_values で、金額の大きい順に並べ替えます。(ascending=False は、「昇順ではない」=大きい順、という意味です)

金額の大きい順に並べ替えるpandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

③ 条件を2つ組み合わせる。 「営業部で、かつ10万円以上」のように、条件を2つ書くときは、それぞれを ( ) で囲み、&(かつ)でつなぎます。

営業部 かつ 10万円以上pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

「または」のときは、& の代わりに | を使います。

④ 合計・平均・最大。
合計・平均・最大pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

Lesson 12 では、for で1行ずつ足し算していました。pandas なら、.sum() の1語です。

⑤ 列名を間違えると?
列名を間違えてみようpandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます

KeyError: '売上' と出ます。「売上」という列は無い、という意味です。列名は、df.columns で確かめられます。(エラー講座の KeyError と同じです)

STEP 5

自分で書く

お題① 「企画」部の行が、何行あるかを表示してください。

お題①:企画部の行数pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます
ヒントを見る

df[df["部署"] == "企画"] で、企画部の行だけを取り出します。その行数を len(...) で数えます。

答えの例を見る
import pandas as pd

df = pd.read_excel("sales.xlsx")
print(len(df[df["部署"] == "企画"]))

お題② 「営業」部の、金額の合計を表示してください。

お題②:営業部の合計pandas・サンプルファイル付き
Ctrl / ⌘ + Enter でも実行

この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。

結果
▶ 実行を押すと、ここに結果が出ます
ヒントを見る

営業部の行だけを取り出して、その金額の列の合計(.sum())を求めます。

答えの例を見る
import pandas as pd

df = pd.read_excel("sales.xlsx")
sales_dept = df[df["部署"] == "営業"]
print(sales_dept["金額"].sum())
STEP 6

仕事ならどう使う?