python pandas dataframe行列選択、スライス操作
3846 ワード
python pandas dataframe行列選択、スライス操作
SQLのselectは列の名前に基づいて選択されます.Pandasはより柔軟で、列名だけでなく、列があるposition(数字、何行目か、何列目か、注意pandas行列のpositionは0から)に基づいて選択することができます.関連関数は以下の通りである:1)locは、列labelに基づいて、特定の行(行indexに基づいて)を選択することができる.2)iloc、行/列に基づくposition;3)at,指定された行index及び列labelに従って、DataFrameの要素を素早く位置決めする;4)iatは、atと類似しており、positionに基づいて位置決めされている.5)ixは、locとilocの混合体であり、labelもpositionもサポートする.
≪インスタンス|Instance|emdw≫
エラーの表示:
まとめ
1).loc,.iloc,.ixは、最初のパラメータのみを加える.loc([1,2]),.iloc([2:3]),.ix[2]…は行選択2)を行う.loc,.at,選択列は列名のみ,position 3)である.iloc,.iat,選択カラムはpositionのみ,カラム名4)df[]は行選択のみ,またはカラム選択のみ,同時にカラム選択はできず,カラム選択はカラム名のみである.
SQLのselectは列の名前に基づいて選択されます.Pandasはより柔軟で、列名だけでなく、列があるposition(数字、何行目か、何列目か、注意pandas行列のpositionは0から)に基づいて選択することができます.関連関数は以下の通りである:1)locは、列labelに基づいて、特定の行(行indexに基づいて)を選択することができる.2)iloc、行/列に基づくposition;3)at,指定された行index及び列labelに従って、DataFrameの要素を素早く位置決めする;4)iatは、atと類似しており、positionに基づいて位置決めされている.5)ixは、locとilocの混合体であり、labelもpositionもサポートする.
≪インスタンス|Instance|emdw≫
import pandas as pd
import numpy as np
df = pd.DataFrame({'total_bill': [16.99, 10.34, 23.68, 23.68, 24.59],
'tip': [1.01, 1.66, 3.50, 3.31, 3.61],
'sex': ['Female', 'Male', 'Male', 'Male', 'Female']})
# data type of columns
print df.dtypes
# indexes
print df.index
# return pandas.Index
print df.columns
# each row, return array[array]
print df.values
print df
sex object
tip float64
total_bill float64
dtype: object
RangeIndex(start=0, stop=5, step=1)
Index([u'sex', u'tip', u'total_bill'], dtype='object')
[['Female' 1.01 16.99]
['Male' 1.66 10.34]
['Male' 3.5 23.68]
['Male' 3.31 23.68]
['Female' 3.61 24.59]]
sex tip total_bill
0 Female 1.01 16.99
1 Male 1.66 10.34
2 Male 3.50 23.68
3 Male 3.31 23.68
4 Female 3.61 24.59
print df.loc[1:3, ['total_bill', 'tip']]
print df.loc[1:3, 'tip': 'total_bill']
print df.iloc[1:3, [1, 2]]
print df.iloc[1:3, 1: 3]
total_bill tip
1 10.34 1.66
2 23.68 3.50
3 23.68 3.31
tip total_bill
1 1.66 10.34
2 3.50 23.68
3 3.31 23.68
tip total_bill
1 1.66 10.34
2 3.50 23.68
tip total_bill
1 1.66 10.34
2 3.50 23.68
エラーの表示:
print df.loc[1:3, [2, 3]]#.loc
KeyError: 'None of [[2, 3]] are in the [columns]'
print df.loc[[2, 3]]#.loc ,
sex tip total_bill
2 Male 3.50 23.68
3 Male 3.31 23.68
print df.iloc[1:3]#.iloc ,
sex tip total_bill
1 Male 1.66 10.34
2 Male 3.50 23.68
print df.iloc[1:3, 'tip': 'total_bill']
TypeError: cannot do slice indexing on with these indexers [tip] of
print df.at[3, 'tip']
print df.iat[3, 1]
print df.ix[1:3, [1, 2]]
print df.ix[1:3, ['total_bill', 'tip']]
3.31
3.31
tip total_bill
1 1.66 10.34
2 3.50 23.68
3 3.31 23.68
total_bill tip
1 10.34 1.66
2 23.68 3.50
3 23.68 3.31
print df.ix[[1, 2]]#
sex tip total_bill
1 Male 1.66 10.34
2 Male 3.50 23.68
print df[1: 3]
print df[['total_bill', 'tip']]
# print df[1:2, ['total_bill', 'tip']] # TypeError: unhashable type
sex tip total_bill
1 Male 1.66 10.34
2 Male 3.50 23.68
total_bill tip
0 16.99 1.01
1 10.34 1.66
2 23.68 3.50
3 23.68 3.31
4 24.59 3.61
print df[1:3,1:2]
TypeError: unhashable type
まとめ
1).loc,.iloc,.ixは、最初のパラメータのみを加える.loc([1,2]),.iloc([2:3]),.ix[2]…は行選択2)を行う.loc,.at,選択列は列名のみ,position 3)である.iloc,.iat,選択カラムはpositionのみ,カラム名4)df[]は行選択のみ,またはカラム選択のみ,同時にカラム選択はできず,カラム選択はカラム名のみである.