データフレームの抽出

列を指定して取り出す

「International_football_results.csv」の列名dateを抽出する。

# 書き方1
print(df.date)
# 書き方2
print(df['date'])
0        1872-11-30
1        1873-03-08
2        1874-03-07
3        1875-03-06
4        1876-03-04
            ...    
39003    2018-06-04
39004    2018-06-04
39005    2018-06-04
39006    2018-06-04
39007    2018-06-04
Name: date, Length: 39008, dtype: object
0        1872-11-30
1        1873-03-08
2        1874-03-07
3        1875-03-06
4        1876-03-04
            ...    
39003    2018-06-04
39004    2018-06-04
39005    2018-06-04
39006    2018-06-04
39007    2018-06-04
Name: date, Length: 39008, dtype: object
df[['home_team', 'home_score', 'away_team', 'away_score']] かっこが二つ
home_teamhome_scoreaway_teamaway_score
0Scotland0England0
1England4Scotland2
2Scotland2England1
3England2Scotland2
4Scotland3England0
39003Italy1Netherlands1
39004Serbia0Chile1
39005Slovakia1Morocco2
39006Armenia0Moldova0
39007India3Kenya0

➡ データフレーム型から列を指定して抽出する方法:
1列の場合

  • データ名.列名
  • データ名[‘列名’]

複数列の場合

  • データ名[[‘列名’,’列名’]]

行を指定して取り出す

# 1. 先頭から5行目
df[:5]
# df.head()と同じ
datehome_teamaway_teamhome_scoreaway_scoretournamentcitycountryneutral
01872-11-30ScotlandEngland00FriendlyGlasgowScotlandFalse
11873-03-08EnglandScotland42FriendlyLondonEnglandFalse
21874-03-07ScotlandEngland21FriendlyGlasgowScotlandFalse
31875-03-06EnglandScotland22FriendlyLondonEnglandFalse
41876-03-04ScotlandEngland30FriendlyGlasgowScotlandFalse
# 2. 5-10行目(0行目が存在する)
df[5:11] 5は入るが、11は入らない。 0スタート
# 3. 2の先頭から3行
df2 = df[5:11]
df2[:3]
特定の行なら
df.loc[3]

特定の行と列なら
df.loc[3,["Life_Male"]] →リストで指定する

特定の範囲の抽出 3~5行目の場合
df.loc[2:4,["Life_Female", "Life_Male"]] 0スタートで、最後の4も含まれるloc特有の決まり)

まとめ
➡ データフレーム型から列を指定して抽出する方法:

  • df[n:]でn以上の行を全て抽出する
  • df[:n]でn未満の行を全て抽出する
  • df[n1:n2]でn1以上 n2未満に当てはまる行を抽出する
  • df[-n:]で末尾からn行抽出する

省略した方法

# 先頭から5行
df[:5]
# 39000から末尾まで  
df[39000:]
  • スライスの記法は [開始値 : 終了値]
    • 開始値を省略するとインデックスの最小値が入る
    • 終了値を省略するとインデックスの最大値が入る

マイナス方法

# 一番末尾の行
df[-5:]

解説

  • スライスのインデックスは2種類存在している
    • 行の先頭に0を割り振り下へ1ずつ増えていくプラスパターン
    • 行の末尾に-1を割り振り上へ1ずつ減っていくマイナスパターン

例えを以下に示す。
行名がアルファベット(A~E)でつけられている表があるとする。
その時、インデックスのプラスパターンとマイナスパターンは以下のように割り振られる。

行名
A0-5
B1-4
C2-3
D3-2
E4-1

まとめ:列を指定して抽出する方法

  • df[:n]でn未満の行を全て抽出する
  • df[n:]でn以上の行を全て抽出する
  • df[-n:]で末尾からn行抽出する
# 解答例
df[-10:-4]

他には
df2=df[-10:]
df2[0:6]

「International_football_results.csv」の後ろから数えて10行目から5行目までの計6行を出力しよう。

コメント

タイトルとURLをコピーしました