目次
データの行・列を入れ替える
今回はPythonのDataFrameにおいて、「行・列」を入れ替える方法をご紹介します
データを加工する際、分析が実施しやすいデータの形になっていないことがあります
そんな時、これからご紹介するTを利用し、データの行・列を自由に入れ替えることができます
また単純に行と列を入れ替えるだけではなく、列を行に変換するstackもご紹介します
単純に行・列を入れ替えるにはTを利用します(下記はイメージ)
続いて行を増やして、列を入れ替える(スタック)するにはstackを利用します
事前準備
df = pd.read_excel('学校のテスト.xlsx')
行・列を全て入れ替える:T
Tという単純な文字を使うだけで、行と列を簡単に入れ替えることができます
まずは元のデータを確認してみます
df.head()
続いてTを利用して、行列を入れ替えてみます
このデータは500行あるため、その数だけ列ができてしまいます
df.T.head()
データ分析するには扱いにくい形ですが、このような行・列入れ替えが可能だということを覚えておいてください
列を行に変換する:stack
今度は「行×列」のデータ型を、行を増やして列名をデータに入れる形に移行します
stackを利用することによって、非常に簡単にデータの持ち方を変えることができます
df.stack()
注意点①:Series形式で出力される
stackを利用するとSeries形式で結果が出てきます
そこでDataFrameで囲うことによって、引き続きDataFrameでデータを加工することができます
pd.DataFrame(df.stack())
注意点②:indexは入れ替えできない
DataFrameでindexとして登録されている項目に関しては、stackで行・列変換が適応されません
例えば生徒番号と名前がインデックスとなっているデータで、同じようにスタック処理を実施します
※set_indexを利用して、indexを登録しておきます
pd.DataFrame(df.set_index(['生徒番号','名前']).stack())
このindexが行・列入れ替えの対象にならないという特徴を利用し、一部の列のみ行変換を実施することが可能です
学校データで集計対象である「国語・数学・英語」のデータのみ行に変換します
index = ['生徒番号','名前','クラス','性別','部活','部活_種類']
pd.DataFrame(df.set_index(index).stack())
まとめ
今回はDataFrameの行・列を入れ替える方法についてご紹介してきました
データしやすい形がいつも用意されているわけではありません
Tやstackを用いて、ご自身にとって操作しやすい形に変形してみてください