Pythonの言語は、今ではEXCELでも利用できるようになっています。
EXCELでのPython利用は、基本的にはデータ分析の分野で利用することになるでしょう。
Pythonには、データ分析に役立つ「Pandas」というライブラリがあります。
これまでにも概要をまとめた記事(リンク)がありますが、「データフレーム」という形で「データ」を扱えるのが特徴です。
今回は「Pandas」の中でも、データ抽出系のメソッドについて、まとめようと思います。
データの抽出
以下は、データフレームからデータを抽出する際に利用できる「インデクサ」になります。
いずれも、行や列のラベルを使用してデータを抽出(選択)するものですが、抽出時の基準とするものが違います。
インデクサ | 抽出時に基準とするもの |
loc[] | ラベルベースで機能し、抽出にはインデックスラベルや列名を使用します。 |
iloc[] | 行や列の整数位置(インデックス)ベースで機能し、抽出には行番号や列番号を使用します。 |
コードサンプル:
import pandas as pd
# データフレームを定義
data = {‘名前’: [‘田中’, ‘鈴木’, ‘佐藤’, ‘山田’],
‘年齢’: [25, 30, 22, 25],
‘出身’: [‘東京’, ‘神奈川’, ‘静岡’, ‘大阪’]}
# インデックスの付与
df = pd.DataFrame(data, index=[‘A’, ‘B’, ‘C’, ‘D’])# 行と列の選択(loc[])
select_loc = df.loc[‘C’, ‘出身’]
print(“「インデックス:C」の「出身」:\n”, select_loc)
print(“”)multiselect_loc = df.loc[[‘B’, ‘C’],[‘名前’, ‘出身’]]
print(“「インデックス:BとC」の「名前と出身」:\n”, multiselect_loc)
print(“”)# 行と列の選択(iloc[])
select_iloc = df.iloc[0, 0]
print(“「1列目」かつ「1行目」の値:\n”, select_iloc)
print(“”)multiselect_iloc = df.iloc[2:4, 0:2]
print(“「3列目から5列目」の「1行目から2行目」の値:\n”, multiselect_iloc)
# (補足)存在しない列・行は無視されます。
実行結果:
「インデックス:C」の「出身」:
静岡「インデックス:BとC」の「名前と出身」:
名前 出身
B 鈴木 神奈川
C 佐藤 静岡「1列目」かつ「1行目」の値:
田中「3列目から5列目」の「1行目から2行目」の値:
名前 年齢
C 佐藤 22
D 山田 25
列・行全体の抽出
列・行全体の選択のベースは、変数に指定したカラムを代入することにあります。
いくつかの例を以下にまとめます。
コードサンプル:
import pandas as pd
# データフレームを定義
data = {‘名前’: [‘田中’, ‘鈴木’, ‘佐藤’, ‘山田’],
‘年齢’: [25, 30, 22, 25],
‘出身’: [‘東京’, ‘神奈川’, ‘静岡’, ‘大阪’]}
df = pd.DataFrame(data)
# 列の抽出
birthplace = df[‘出身’]
print(“「出身」列:\n”, birthplace)
print(“”)# 複数列の選択
multicolumn_name_bp = df[[‘名前’, ‘出身’]]
print(“名前と出身の列:\n”, multicolumn_name_bp)
print(“”)# 行の抽出
member1 = df.loc[0]
print(“1行目のメンバー:\n”, member1)
実行結果:
「出身」列:
0 東京
1 神奈川
2 静岡
3 大阪
Name: 出身, dtype: object名前と出身の列:
名前 出身
0 田中 東京
1 鈴木 神奈川
2 佐藤 静岡
3 山田 大阪1行目のメンバー:
名前 田中
年齢 25
出身 東京
Name: 0, dtype: object
フィルタリングして抽出
抽出時のフィルタリングは、データを抽出する時に、条件を加えることで対応できます。
以下に、一例を記載します。
コードサンプル:
import pandas as pd
# データフレームを定義
data = {‘名前’: [‘田中’, ‘鈴木’, ‘佐藤’, ‘山田’],
‘年齢’: [25, 30, 22, 25],
‘出身’: [‘東京’, ‘神奈川’, ‘静岡’, ‘大阪’]}
df = pd.DataFrame(data)
# 条件による行の選択
over25 = df[df[‘年齢’] > 25]
print(“年齢が25際を超える人:\n”, over25)
実行結果:
年齢が25際を超える人:
名前 年齢 出身
1 鈴木 30 神奈川
また、以下のようにAND条件も利用可能です。
コードサンプル:
data = {
‘A’: [1, 2, 3, 4],
‘B’: [5, 6, 7, 8]}
df = pd.DataFrame(data)
result = df.query(‘A > 1 & B < 8’)
# result = df[(df[‘A’] > 1) & (df[‘B’] < 8)] と同等のメソッドです。print(result)
実行結果:
A B
1 2 6
2 3 7
まとめ
今回は、Pythonで扱えるライブラリの「Pandas」のメソッドについてまとめてみました。
他にも多くのメソッドが存在するため、複数の記事に渡って解説しています。
他の記事も、ぜひ参考にしてみて下さい。