Python用データ分析モジュール「Pandas」でデータフレームのラベルを取得する方法をソースコード付きで解説します。
データフレームのラベル
Pandasでは、DataFrameObj.columnsを用いることで、データフレームのラベルを取り出すことができます。 「名前, 身長]」が各列のラベルです。
# -*- coding: utf-8 -*-
import pandas as pd
# データフレームの初期化
df = pd.DataFrame({
'名前' : ['西住みほ', '秋山優花里', '武部沙織'],
'身長' : [158, 157, 157]},
index = ['車長', '装填手', '通信手']
)
# 表示
print(df.columns)
# Index([名前, 身長], dtype=object)
データフレームのデータ型
Pandasでは、DataFrame.typesを用いることで、データフレームのデータ型を取得できます。
サンプルプログラムのソースコードは下記の通りです。
サンプルプログラムの実行結果は下記の通りです。
名前 役割 身長 0 西住みほ 車長 158 1 秋山優花里 装填手 157 2 武部沙織 通信手 157 名前 object 役割 object 身長 int64 dtype: object

データフレームの基本統計量
Pandasでは、describeメソッドを用いることで、データフレームから以下の基本統計量を一括で求めることができます。 【基本統計量】 count・・・件数 mean・・・平均値 std・・・標準偏差 min・・・最小値 25%・・・第一四分位数 50%・・・中央値 75%・・・第三四分位数 max・・・最大値
サンプルプログラムのソースコードは下記の通りです。
サンプルプログラムの実行結果は下記の通りです。
身長 count 3.000000 mean 157.333333 std 0.577350 min 157.000000 25% 157.000000 50% 157.000000 75% 157.500000 max 158.000000
非常に便利な機能です。

データフレームのラベル
Pandasでは、DataFrameObj.valuesを用いることで、データフレームの値を取り出すことができます。
サンプルプログラムのソースコードは下記の通りです。
サンプルプログラムの実行結果は下記の通りです。
[[西住みほ’ 158L] [‘秋山優花里’ 157L] [‘武部沙織’ 157L]]

ラベルの値を取得
PythonモジュールPandasでは、values属性で特定のラベル(カラム)の値を取得します。
【書式】 DataFrameObj.[ラベル名].values
返り値:全ての値
サンプルプログラムのソースコードです。
#-*- coding:utf-8 -*-
import pandas as pd
def main():
# リスト生成
name = ['西住みほ', '秋山優花里', '武部沙織']
height = [158, 157, 157]
position = ['車長', '装填手', '通信手']
# リスト→データフレーム
df = pd.DataFrame({'名前' : name, '身長' : height}, index = position)
# データフレーム表示
print(df)
'''
名前 身長
車長 西住みほ 158
装填手 秋山優花里 157
通信手 武部沙織 157
'''
# ラベル「名前」の値を表示
print(df['名前'].values) # ['西住みほ' '秋山優花里' '武部沙織']
if __name__ == "__main__":
main()

ラベル・インデックスを指定して抽出
Pandasでは、locメソッドを用いることで、データフレームからラベル・インデックスを指定して抽出できます。
【書式】 DataFrameObj.loc[index, label]
【返り値】 抽出されたデータフレームオブジェクト
サンプルプログラムのソースコードは下記の通りです。 【ラベル・インデックスを1つずつ指定】
【ラベル・インデックスを範囲指定】
サンプルプログラムの実行結果は下記の通りです。
名前 身長 車長 西住みほ 158 装填手 秋山優花里 157

データフレームから列抽出
PythonモジュールPandasでは、主に2つの方法で特定の列(カラム・ラベル)だけを取り出せます。
| – | 記述例 |
|---|---|
| 方法① | column = DataFrameObj[カラム名] |
| 方法② | column = loc[:, カラム名] |
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*-
import pandas as pd
def main():
# リスト生成
name = ['西住みほ', '秋山優花里', '武部沙織']
height = [158, 157, 157]
position = ['車長', '装填手', '通信手']
# リスト→データフレーム
df = pd.DataFrame({'名前' : name, '身長' : height}, index = position)
# データフレーム表示
print(df)
'''
名前 身長
車長 西住みほ 158
装填手 秋山優花里 157
通信手 武部沙織 157
'''
# ラベル(列)を抽出
df2 = df['名前']
# df2 = df.loc[:, '名前']
# 抽出したデータフレームを表示
print(df2)
'''
車長 西住みほ
装填手 秋山優花里
通信手 武部沙織
Name: 名前, dtype: object
'''
if __name__ == "__main__":
main()

データフレームから特定範囲の行・列抽出
PythonモジュールPandasでは、locメソッドで特定の行・列(インデックス・カラム)の範囲だけを取り出せます。
書式
df.loc[[ インデックス1, インデックス2, ...], [カラム1, カラム2, ...]]
返り値:指定した範囲内のデータフレーム
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*-
import pandas as pd
def main():
# リスト生成
name = ['西住みほ', '秋山優花里', '武部沙織']
height = [158, 157, 157]
position = ['車長', '装填手', '通信手']
# リスト→データフレーム
df = pd.DataFrame({'名前' : name, '身長' : height}, index = position)
# データフレーム表示
print(df)
'''
名前 身長
車長 西住みほ 158
装填手 秋山優花里 157
通信手 武部沙織 157
'''
indexes = ['車長', '装填手']
# ラベル(列)を抽出
df2 = df.loc[indexes, '名前']
# 抽出したデータフレームを表示
print(df2)
'''
車長 西住みほ
装填手 秋山優花里
Name: 名前, dtype: object
'''
if __name__ == "__main__":
main()

データフレームから要素番号で指定して行・列抽出
PythonモジュールPandasでは、ilocメソッドで特定の要素番号の行・列(インデックス・カラム)だけを取り出せます。
書式
df.iloc[[ インデックス番号1, インデックス番号2, ...], [カラム番号1, カラム番号2, ...]]
返り値:指定した範囲内のデータフレーム
サンプルプログラムのソースコードです。
# -*- coding: utf-8 -*-
import pandas as pd
def main():
# リスト生成
name = ['西住みほ', '秋山優花里', '武部沙織']
height = [158, 157, 157]
position = ['車長', '装填手', '通信手']
# リスト→データフレーム
df = pd.DataFrame({'名前' : name, '身長' : height}, index = position)
# データフレーム表示
print(df)
'''
名前 身長
車長 西住みほ 158
装填手 秋山優花里 157
通信手 武部沙織 157
'''
indexes = [0, 1]
columns = [0]
# ラベル(列)を抽出
df2 = df.iloc[indexes, columns]
# 抽出したデータフレームを表示
print(df2)
'''
名前
車長 西住みほ
装填手 秋山優花里
'''
if __name__ == "__main__":
main()

関連ページ


コメント