はじめに
Pandas では、データフレームの溶解には、データをワイド形式からロング形式に転置することが含まれます。形式なので、さまざまなデータ操作タスクに役立ちます。この記事では、データフレームを融解するプロセスをガイドし、実際の例を使用してさまざまなシナリオを検討します。
問題 1: 列データの転置
目的: 元の列を繰り返しながら、列を行に入れ替えますnames.
解決策:
df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
このコードは、「Subject」列と「Grades」列を含む新しいデータフレームを作成しますが、元の列名は繰り返されます。それぞれにrow.
例:
df = pd.DataFrame({'Name': ['Bob', 'John', 'Foo', 'Bar', 'Alex', 'Tom'], 'Math': ['A+', 'B', 'A', 'F', 'D', 'C'], 'English': ['C', 'B', 'B', 'A+', 'F', 'A'], 'Age': [13, 16, 16, 15, 15, 13]}) melted_df = df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades') print(melted_df)
出力:
Name Age Subject Grades 0 Bob 13 English C 1 John 16 English B ... 11 Tom 13 Math C
問題 2: フィルタリング列
目的: 特定の列を溶かし、他の列を除外します。
解決策:
df.melt(id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grades')
この中でたとえば、「数学」列のみが溶解され、「年齢」と「名前」は溶解されます。
例:
melted_df = df.melt(id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grades') print(melted_df)
出力:
Name Age Subject Grades 0 Bob 13 Math A+ 1 John 16 Math B ...
問題 3:グループ化と順序付けが融合したデータ
目的: 溶けたデータをグループ化し、値で並べ替えます。
解決策:
melted_df.groupby('value', as_index=False).agg({ 'Subject': ', '.join, 'Grades': ', '.join }).sort_values('value', ascending=True)
このコードは、溶けたデータをスコアごとにグループ化し、「Subject」と「Grades」の値を結合します。 commas.
例:
grouped_df = melted_df.groupby('value', as_index=False).agg({ 'Subject': ', '.join, 'Grades': ', '.join }).sort_values('value', ascending=True) print(grouped_df)
出力:
value Name Subjects 0 A Foo, Tom Math, English 1 A+ Bob, Bar Math, English 2 B John, John, Foo Math, English, English ...
問題 4: 溶けていないデータフレーム
目的: 溶解プロセスを逆にして、元の形式に戻します。
解決策:
melted_df.pivot_table("Grades", ['Name', 'Age'], 'Subject', aggfunc='first').reset_index()
このコードは、溶けたデータフレームをピボットして元の幅に戻します。 format.
例:
unmelted_df = melted_df.pivot_table("Grades", ['Name', 'Age'], 'Subject', aggfunc='first').reset_index() print(unmelted_df)
出力:
Name Age Math English 0 Alex 15 D F 1 Bar 15 F A+ 2 Bob 13 A+ C 3 Foo 16 A B ...
問題 5: グループ化と組み合わせる列
目的: 特定の列でデータをグループ化し、他の列をカンマで結合します。
解決策:
melted_df.groupby('Name', as_index=False).agg( Subjects=', '.join, Grades=', '.join )
このコードはデータを「名前」でグループ化し、「件名」と「件名」を結合します。 '成績' カンマ付き。
例:
grouped_df = melted_df.groupby('Name', as_index=False).agg( Subjects=', '.join, Grades=', '.join ) print(grouped_df)
出力:
Name Subjects Grades 0 Alex Math, English D, F 1 Bar Math, English F, A+ 2 Bob Math, English A+, C ...
問題6: 全てを溶かす列
目的: 識別子を含むすべての列を行に変換します。
解決策:
df.melt(var_name='Column', value_name='Value')
このコードは、すべての列を行に溶かし、すべてのデータを次のように扱います。値。
例:
melted_df = df.melt(var_name='Column', value_name='Value') print(melted_df)
出力:
Column Value 0 Age 16 1 Age 16 2 Age 15 ... 11 English C 12 Math A 13 Math A+
以上がPandas DataFrame を効率的にメルトおよびアンメルトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。