データの整形 2

並び替え

 home_scoreが多い順に並び変えてみる
df.sort_values("home_score", ascending = False).head(11)
datehome_teamaway_teamhome_scoreaway_scoretournamentcitycountryneutral
235692001-04-11AustraliaAmerican Samoa310FIFA World Cup qualificationCoffs HarbourAustraliaFalse
108601979-08-30FijiKiribati240South Pacific GamesNausoriFijiFalse
235662001-04-09AustraliaTonga220FIFA World Cup qualificationCoffs HarbourAustraliaFalse
# home_scoreが多い順に並び変えて、同じ値の場合はアルファベット順に並べる
df.sort_values(["home_score", "home_team"], ascending = [False, True]).head(3)
        リストにする
  • 降順に並べてある
    • ascending = False が降順(数値が大きい・Z→A)
    • ascending = True か 指定なしで昇順(数値が小さい・A→Z)
  • 複数列を使うことも可能
    • 左から順に適応されるため左が優先
    • 二つ目のソートは”home_score”を降順でソートした後、同じ値の時は”home_team”の昇順でソートしている
    • 下の二行が入れ替わってることが確認できる

ランダムサンプリング

# 実行例1:何度も実行してランダムにサンプリングできることを確認しよう
df.sample()
一行のみサンプリング
# 実行例2:3個ずつランダムにサンプリングできることを確認しよう
df.sample(n=3)
3行サンプリング
datehome_teamaway_teamhome_scoreaway_scoretournamentcitycountryneutral
370142015-12-26BangladeshMaldives13SAFF CupThiruvananthapuramIndiaTrue
80601972-05-07EthiopiaGreece01FriendlyAddis AbebaEthiopiaFalse
175521993-05-11LebanonKorea Republic01FIFA World Cup qualificationBeirutLebanonFalse
 実行例3:がランダムにサンプリングできることを確認しよう
df.sample(axis=1)
date
01872-11-30
11873-03-08
21874-03-07
31875-03-06
41876-03-04
390032018-06-04
390042018-06-04
390052018-06-04
390062018-06-04
390072018-06-04

39008 rows × 1 columns

concat関数による結合

# 結合
pd.concat([df2, df3], sort=False)

解説

  • 変数df2と変数df3を結合している
  • 結合するデータの中で同名の列がない場合は、新たな列が作成される
  • 列名に一致するデータがない場合は自動的にNaNが割り振られる

まとめ

  • データの結合方法:pd.concat([結合するデータA, 結合するデータB])
  • 行名を連番にしたい場合はignore_index=Trueを書こう → これがないと元のindexの番号が入ってしまい、例えば3が重複してしまう。
  • 縦方向ならaxis=0, 横方向ならaxis=1

注意

  • 列名に注意して結合しよう!!
  • concat()内にsort=Falseを忘れると列の順が変わってしまうので注意
  • concat()内にsort=Falseを忘れると警告文が出ることがある

コメント

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