概要
pandas.DataFrame
の行数・列数などの数や、列名・行名・データ配列を取り出す方法。以下のデータを使う。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
import numpy as np from pandas import DataFrame lst = [ ["Alex", "DC", 44, 168], ["Bert", "NY", 18, 176], ["Carl", "CA", 26, 175], ["Daryl", "DC", 32, 182], ["Eddy", "CA", 58, 192] ] df = DataFrame(lst, columns=["name", "state", "age", "height"]) df = df.set_index("name") print(df) # state age height # name # Alex DC 44 168 # Bert NY 18 176 # Carl CA 26 175 # Daryl DC 32 182 # Eddy CA 58 192 |
行数・列数・サイズ
df.shape
プロパティーで(行数, 列数)のタプルが帰る。2つの変数にアンパッキングして使える。列名やインデックス列は行数・列数にカウントされない。
1 2 3 4 5 6 |
print(df.shape) # (5, 3) rows, cols = df.shape print("rows={}, cols={}".format(rows, cols)) # rows=5, cols=3 |
行数だけを得るにはlen(df)
、列数だけを得るにはlen(df.columns)
。
1 2 3 4 5 |
print(len(df)) # 5 print(len(df.columns)) # 3 |
df.size
で全要素数を得られる。
1 2 |
print(df.size) # 15 |
行名・インデックス・データの内容
列名~columns
列名はcolumns
プロパティーで得られる。Index
オブジェクトで格納されていて、リストやndarrayにも変換可能。
1 2 3 4 5 6 7 |
print(df.columns) print(list(df.columns)) print(np.array(df.columns)) # Index(['state', 'age', 'height'], dtype='object') # ['state', 'age', 'height'] # ['state' 'age' 'height'] |
行名~index
列名はcolumns
プロパティーで得られる。こちらもIndex
オブジェクトで格納されていて、リストやndarrayにも変換可能。
1 2 3 4 5 6 7 |
print(df.index) print(list(df.index)) print(np.array(df.index)) # Index(['Alex', 'Bert', 'Carl', 'Daryl', 'Eddy'], dtype='object', name='name') # ['Alex', 'Bert', 'Carl', 'Daryl', 'Eddy'] # ['Alex' 'Bert' 'Carl' 'Daryl' 'Eddy'] |
データの内容~values
列名・行名を除いたデータの内容のみを取り出したいときはvalues
プロパティーにアクセスする。結果はndarrayで返される。
1 2 3 4 5 6 7 |
print(df.values) # [['DC' 44 168] # ['NY' 18 176] # ['CA' 26 175] # ['DC' 32 182] # ['CA' 58 192]] |
なお、valuesの内容を変更すると元のデータが変更される点に注意。以下は元データをndarrayで与えているが、リストで与えても結果は同じ。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
ary = np.array([[0, 1], [2, 3]]) df = DataFrame(ary) print("Before:") print(df.values) df.values[0, 0] = "9" print("After:") print(df.values) # Before: # [[0 1] # [2 3]] # After: # [[9 1] # [2 3]] |