
Pandas を使用して列を行に変換する
データ分析では、可読性と分析を向上させるためにデータセットを再構築すると便利な場合があります。一般的な変換では、列を行に変換します。この記事では、Pandas ライブラリを使用してこの操作を実行する方法について説明します。
次に示すように、列ヘッダーに場所と日付固有の情報が格納されたデータセットを考えます。
1 2 3 4 | | location | name | Jan-2010 | Feb-2010 | March-2010 |
|---|---|---|---|---|
| A | "test" | 12 | 20 | 30 |
| B | "foo" | 18 | 20 | 25 |
|
ログイン後にコピー
目標は次のとおりです。次のように、各日付が行に対応する形式にデータを再形成します。
1 2 3 4 5 6 7 8 | | location | name | Date | Value |
|---|---|---|---|
| A | "test" | Jan-2010 | 12 |
| A | "test" | Feb-2010 | 20 |
| A | "test" | March-2010 | 30 |
| B | "foo" | Jan-2010 | 18 |
| B | "foo" | Feb-2010 | 20 |
| B | "foo" | March-2010 | 25 |
|
ログイン後にコピー
この変換を実現するには、Pandasメルト機能を提供します。 DataFrame にメルトを適用し、行識別子 (id_vars) として保持する列と、新しい列の列ヘッダー (var_name と value_name) を指定するだけです。
1 2 3 4 5 | import pandas as pd
df.melt(id_vars=[ "location" , "name" ],
var_name= "Date" ,
value_name= "Value" )
|
ログイン後にコピー
0.20 より前の Pandas バージョンの場合、わずかにメルトとソートの組み合わせを含む、別のアプローチが必要です:
1 2 3 4 5 6 | df2 = pd.melt(df,
id_vars=[ "location" , "name" ],
var_name= "Date" ,
value_name= "Value" )
df2 = df2.sort([ "location" , "name" ])
|
ログイン後にコピー
確実に行うためにインデックスをリセットすることを忘れないでください。クリーンな出力:
1 | df2.reset_index(drop=True)
|
ログイン後にコピー
この手法は、データフレームを再形成する便利な方法を提供し、表形式データの分析とプレゼンテーションを容易にします。
以上がPandas Melt() を使用して列を行に変換するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。