Pandas★データの操作

loc,ilocを使ったデータの操作

loc 明示的な処理

配列のインデックスやスライスを明示的に示して処理します。つまり指定したインデックスを使います。

iloc 暗黙的な処理

配列のインデックスやスライスを暗黙的に処理します。つまりPandasが自動で付加したインデックスを使います。

操作例

SeriesとDataFrameのデータを使ったlocとilocで操作を見てみましょう。

まずはSeriesとDataFrameのデータを用意します。

import pandas as pd
 
area = pd.Series({'California': 423967, 'Texas': 695662,
                  'New York': 141297, 'Florida': 170312,
                  'Illinois': 149995})
pop = pd.Series({'California': 38332521, 'Texas': 26448193,
                 'New York': 19651127, 'Florida': 19552860,
                 'Illinois': 12882135})
sc = pd.Series({'California': 'Sacramento', 'Texas': 'Austin',
                 'New York': 'Albany', 'Florida': 'Tallahassee',
                 'Illinois': 'Springfield'})
data = pd.DataFrame({'area':area, 'pop':pop, 'state capital':sc})
print(data)
              area       pop state capital
California  423967  38332521    Sacramento
Texas       695662  26448193        Austin
New York    141297  19651127        Albany
Florida     170312  19552860   Tallahassee
Illinois    149995  12882135   Springfield

Seriesの場合

  • locを使ってデータを抽出
area.loc['California']
423967
  • ilocを使ってデータを抽出
area.iloc[0]
423967
  • locやilocを使わない場合
area['California']

又は

area.California
423967

DataFrameの場合

  • locを使ってデータを抽出
data.loc['New York']
area               141297
pop              19651127
state capital      Albany
Name: New York, dtype: object
  • ilocを使ってデータを抽出
data.iloc[2]
area               141297
pop              19651127
state capital      Albany
Name: New York, dtype: object
  • locやilocを使わない場合
data['area']

又は

data.area
California    423967
Texas         695662
New York      141297
Florida       170312
Illinois      149995
Name: area, dtype: int64
  • locを使って行と列を指定
data.loc[:'New York',:'pop']
         	 area 	     pop
California 	423967 	38332521
Texas 	        695662 	26448193
New York 	141297 	19651127
  • ilocを使って行と列を指定
data.iloc[:3, :2]
         	 area 	     pop
California 	423967 	38332521
Texas 	        695662 	26448193
New York 	141297 	19651127

Pandas

Posted by Bright_Noah