ホームページ >バックエンド開発 >Python チュートリアル >データ操作のために Pandas DataFrame をメルトおよびアンメルトするにはどうすればよいですか?

データ操作のために Pandas DataFrame をメルトおよびアンメルトするにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-12-25 21:19:14213ブラウズ

How Do I Melt and Unmelt Pandas DataFrames for Data Manipulation?

Pandas DataFrame をメルトするにはどうすればよいですか?

問題ステートメント:

Pandas DataFrame をメルトするには、ワイド形式からロング形式へのデータの転置が必要です。 。これは、分析、視覚化、またはその他の目的でデータを操作するときに役立ちます。サンプル問題とそれに対応する解決策を使用して、さまざまな溶解シナリオを詳しく見てみましょう:

問題 1: 長い形式への転置

質問:次の形式は達成されましたか?

    Name  Age  Subject Grade
0    Bob   13  English     C
1   John   16  English     B
2    Foo   16  English     B
3    Bar   15  English    A+
4   Alex   17  English     F
5    Tom   12  English     A
6    Bob   13     Math    A+
7   John   16     Math     B
8    Foo   16     Math     A
9    Bar   15     Math     F
10  Alex   17     Math     D
11   Tom   12     Math     C

解決策:

DataFrame をメルトするには、df.melt() を使用します。 id_vars (元の形式に残す列) と、新しい列名の var_name と value_name を指定します:

pd.melt(df, id_vars=['Name', 'Age'], var_name='Subject', value_name='Grade')

問題 2: 溶解中の列のフィルタリング

質問: 問題 1 の DataFrame を溶かして「英語」を除外するにはどうすればよいですかcolumn?

解決策:

df.melt() で value_vars を使用して、メルトする列を指定します。この場合、['Math'] のみが選択されています:

pd.melt(df, id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grade')

問題 3: 溶けたデータの順序付けとグループ化

質問: 溶けたデータを並べ替えるにはどうすればよいですか?問題 1 のデータをスコア別に表示し、学生をグループ化します。 name?

解決策:

溶けた DataFrame で .groupby() と .agg() を使用して、「Grade」ごとにグループ化し、名前と件名をカンマで連結します。 - 区切られた文字列:

melted_df.groupby('Grade', as_index=False).agg(", ".join)

問題 4: 溶けたものを溶かすDataFrame

質問: 溶けた DataFrame をどのように解除すればよいですか?

解決策:

DataFrame.pivot_table を使用する() データフレームの溶解を解除します。値、インデックス、列を指定します。

melted_df.pivot_table('Grades', ['Name', 'Age'], 'Subject', aggfunc='first').reset_index().droplevel(level=0, axis=1)

問題 5: 名前によるグループ化と列の分離

質問: DataFrame を名前と名前でグループ化するにはどうすればよいですか?科目と成績を次のように区切るcomma?

解決策:

DataFrame を溶かし、.groupby() と .agg() を使用して科目と成績を連結します:

pd.melt(df, id_vars=['Name'], var_name='Subject', value_name='Grade').groupby('Name', as_index=False).agg(", ".join)

問題 6: すべての列を次のように溶かす値

質問: DataFrame 内のすべての列をメルトするにはどうすればよいですか?

解決策:

Use df.stack( ).reset_index() を使用して、 DataFrame:

pd.melt(df, id_vars=None, var_name='Column', value_name='Value')

これらのソリューションは、さまざまな目的でデータを操作するための pandas DataFrame の融解と融解解除の多用途性を示しています。

以上がデータ操作のために Pandas DataFrame をメルトおよびアンメルトするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。