はじめに
pandasは、Pythonのライブラリの1つで、データ分析に欠かせないツールです。pandasを使用することで、大量のデータを効率的に扱うことができます。この記事では、pandasを用いた行・列の指定方法について解説します。
行の指定方法:ラベルとインデックスによる選択
pandasでは、行をラベルまたはインデックスを指定して選択することができます。
# ラベルを指定して行を選択する df.loc['行ラベル'] # インデックスを指定して行を選択する df.iloc[行インデックス]
以下は、行ラベルと行インデックスを指定して、行を選択する例です。
# データフレームを作成する import pandas as pd df = pd.DataFrame({'名前': ['Aさん', 'Bさん', 'Cさん', 'Dさん', 'Eさん'], '数学': [90, 80, 70, 60, 50], '英語': [70, 80, 90, 60, 50]}, index=['001', '002', '003', '004', '005']) # 行ラベルを指定して行を選択する print(df.loc['003']) # 行インデックスを指定して行を選択する print(df.iloc[2])
上記のコードを実行すると、以下のように行が選択されます。
#
名前 Cさん 数学 70 英語 90 Name: 003, dtype: object 名前 Cさん 数学 70 英語 90 Name: 003, dtype: object
列の指定方法:ラベルとインデックスによる選択
pandasでは、列をラベルまたはインデックスを指定して選択することができます。
# ラベルを指定して列を選択する df['列ラベル'] # インデックスを指定して列を選択する df.iloc[:, 列インデックス]
以下は、列ラベルと列インデックスを指定して、列を選択する例です。
# データフレームを作成する import pandas as pd df = pd.DataFrame({'名前': ['Aさん', 'Bさん', 'Cさん', 'Dさん', 'Eさん'], '数学': [90, 80, 70, 60, 50], '英語': [70, 80, 90, 60, 50]}, index=['001', '002', '003', '004', '005']) # 列ラベルを指定して列を選択する print(df['数学']) # 列インデックスを指定して列を選択する print(df.iloc[:, 1])
上記のコードを実行すると、以下のように列が選択されます。
001 90 002 80 003 70 004 60 005 50 # Name: 数学, dtype: int64 001 90 002 80 003 70 004 60 005 50 # Name: 数学, dtype: int64
複数行・列の指定と組み合わせ操作
pandasでは、複数の行や列を指定して選択することができます。また、複数の選択条件を組み合わせて、データフレームの操作を行うこともできます。
# 複数の行を選択する df.loc[['行ラベル1', '行ラベル2']] # 複数の列を選択する df[['列ラベル1', '列ラベル2']] # 複数の行と列を選択する df.loc[['行ラベル1', '行ラベル2'], ['列ラベル1', '列ラベル2']] # 条件を指定してデータを選択する df[df['数学'] > 80]
以下は、複数の行や列を指定して、データフレームの操作を行う例です。
# データフレームを作成する import pandas as pd df = pd.DataFrame({'名前': ['Aさん', 'Bさん', 'Cさん', 'Dさん', 'Eさん'], '数学': [90, 80, 70, 60, 50], '英語': [70, 80, 90, 60, 50]}, index=['001', '002', '003', '004', '005']) # 複数の行と列を選択する print(df.loc[['001', '003'], ['名前', '数学']]) # 条件を指定してデータを選択する print(df[df['数学'] > 80])
上記のコードを実行すると、以下のようにデータが選択されます。
名前 数学 001 Aさん 90 003 Cさん 70 名前 数学 英語 001 Aさん 90 70
データフレーム内の要素へのアクセスと操作
pandasでは、データフレーム内の要素に対して、様々な操作を行うことができます。
# 要素の値を取得する df.at['行ラベル', '列ラベル'] # 要素の値を変更する df.at['行ラベル', '列ラベル'] = 値 # 複数の要素を一括で変更する df.loc[['行ラベル1', '行ラベル2'], ['列ラベル1', '列ラベル2']] = [[値1, 値2], [値3, 値4]] # 要素の値に対して関数を適用する df['数学'] = df['数学'].apply(lambda x: x * 2)
以下は、データフレーム内の要素に対して操作を行う例です。
# データフレームを作成する import pandas as pd df = pd.DataFrame({'名前': ['Aさん', 'Bさん', 'Cさん', 'Dさん', 'Eさん'], '数学': [90, 80, 70, 60, 50], '英語': [70, 80, 90, 60, 50]}, index=['001', '002', '003', '004', '005']) # 要素の値を取得する print(df.at['003', '数学']) # 要素の値を変更する df.at['003', '数学'] = 75 print(df) # 複数の要素を一括で変更する df.loc[['001', '003'], ['数学', '英語']] = [[95, 75], [75, 85]] print(df) # 要素の値に対して関数を適用する df['数学'] = df['数学'].apply(lambda x: x * 2) print(df)
上記のコードを実行すると、以下のようにデータが操作されます。
70 名前 数学 英語 001 Aさん 90 70 002 Bさん 80 80 003 Cさん 75 90 004 Dさん 60 60 005 Eさん 50 50 名前 数学 英語 001 Aさん 95 75 002 Bさん 80 80 003 Cさん 75 85 004 Dさん 60 60 005 Eさん 50 50 名前 数学 英語 001 Aさん 190 75 002 Bさん 160 80 003 Cさん 150 85 004 Dさん 120 60 005 Eさん 100 50
まとめ
pandasを使用することで、データフレームの行・列の指定や、複数の条件を組み合わせた操作、要素に対するアクセスや操作が簡単に行えます。この記事を参考にして、pandasを活用してデータ分析を行ってみてください。