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()

関連ページ


コメント