LEVEL 7 ・ Excel / Lesson 15
列を取り出す・並べ替える・絞り込む
Excelのフィルターや並べ替えを、Pythonで再現します。条件を書けば、何度でも使い回せます。
このレッスンが終わったら
「df[条件] で、条件に合う行だけを取り出せる。条件の結果は True / False」と言える。
できることを見る
Excelで、「金額が10万円以上の行だけ」を見たいとき、フィルターを使いますね。Pythonでは、次のように書きます。
import pandas as pd
df = pd.read_excel("sales.xlsx")
big = df[df["金額"] >= 100000]
print(big)条件に合う行だけが取り出されます。
動かしてみる
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
12行のうち、10万円以上の4行だけが表示されました。ExcelのフィルターやCtrl+Fと同じ結果ですが、条件を変えるだけで、何度でも使い回せます。
1行ずつ読む
df["金額"]表(df)から、「金額」の列だけを取り出すdf["金額"] >= 100000金額の列の、1つ1つが10万円以上か調べる。結果は True か Falsedf[df["金額"] >= 100000]調べた結果が True の行だけを、表から取り出す日本語にすると
真ん中の「>= 100000」の結果は、どうなっているのでしょう。Lesson 05 で学んだ True / False が、行の数だけ並んでいます。実際に見てみましょう。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
True の行(0, 4, 8, 11番目)だけが、表から取り出された、ということです。
1か所だけ変える
① 列を取り出す。 必要な列だけを取り出します。複数の列は、列名をリストにして、[ ] を二重にします。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
② 並べ替える。 sort_values で、金額の大きい順に並べ替えます。(ascending=False は、「昇順ではない」=大きい順、という意味です)
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
③ 条件を2つ組み合わせる。 「営業部で、かつ10万円以上」のように、条件を2つ書くときは、それぞれを ( ) で囲み、&(かつ)でつなぎます。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
「または」のときは、& の代わりに | を使います。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
Lesson 12 では、for で1行ずつ足し算していました。pandas なら、.sum() の1語です。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
KeyError: '売上' と出ます。「売上」という列は無い、という意味です。列名は、df.columns で確かめられます。(エラー講座の KeyError と同じです)
自分で書く
お題① 「企画」部の行が、何行あるかを表示してください。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
ヒントを見る
df[df["部署"] == "企画"] で、企画部の行だけを取り出します。その行数を len(...) で数えます。
答えの例を見る
import pandas as pd
df = pd.read_excel("sales.xlsx")
print(len(df[df["部署"] == "企画"]))お題② 「営業」部の、金額の合計を表示してください。
この欄では、サンプルファイルが使えます。実行のたびに、ファイルは最初の状態に戻ります。
▶ 実行を押すと、ここに結果が出ます
ヒントを見る
営業部の行だけを取り出して、その金額の列の合計(.sum())を求めます。
答えの例を見る
import pandas as pd
df = pd.read_excel("sales.xlsx")
sales_dept = df[df["部署"] == "営業"]
print(sales_dept["金額"].sum())