Heim > Backend-Entwicklung > Python-Tutorial > Wie kann ich Pandas-DataFrames effizient schmelzen und entschmelzen?

Wie kann ich Pandas-DataFrames effizient schmelzen und entschmelzen?

Linda Hamilton
Freigeben: 2024-12-20 09:48:10
Original
590 Leute haben es durchsucht

How Can I Efficiently Melt and Unmelt Pandas DataFrames?

Einen Pandas-Datenrahmen schmelzen

Einführung

In Pandas umfasst das Schmelzen von Datenrahmen das Transponieren von Daten von einem Breitformat in ein Langformat Format, wodurch es für verschiedene Datenbearbeitungsaufgaben nützlich ist. Dieser Artikel führt Sie durch den Prozess des Verschmelzens von Datenrahmen und untersucht verschiedene Szenarien anhand von Beispielen aus der Praxis.

Problem 1: Transponieren von Spaltendaten

Ziel: Transponieren Sie Spalten in Zeilen und wiederholen Sie dabei die ursprüngliche Spalte Namen.

Lösung:

df.melt(id_vars=['Name', 'Age'], var_name='Subject', value_name='Grades')
Nach dem Login kopieren

Dieser Code erstellt einen neuen Datenrahmen mit den Spalten „Betreff“ und „Noten“, während die ursprünglichen Spaltennamen wiederholt werden für jeden Zeile.

Beispiel:

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)
Nach dem Login kopieren

Ausgabe:

   Name  Age Subject Grades
0   Bob   13  English     C
1  John   16  English     B
...
11  Tom   13     Math     C
Nach dem Login kopieren

Problem 2: Spalten filtern

Ziel: Schmelzspezifisch Spalten, ausgenommen andere.

Lösung:

df.melt(id_vars=['Name', 'Age'], value_vars='Math', var_name='Subject', value_name='Grades')
Nach dem Login kopieren

In diesem Beispiel wird nur die Spalte „Mathe“ zusammengeführt, während „Alter“ und „Name“ beibehalten werden als Bezeichner.

Beispiel:

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

print(melted_df)
Nach dem Login kopieren

Ausgabe:

   Name  Age Subject Grades
0   Bob   13    Math    A+
1  John   16    Math     B
...
Nach dem Login kopieren

Problem 3: Gruppierung und Bestellung geschmolzen Daten

Ziel: Die geschmolzenen Daten gruppieren und nach Werten sortieren.

Lösung:

melted_df.groupby('value', as_index=False).agg({
    'Subject': ', '.join,
    'Grades': ', '.join
}).sort_values('value', ascending=True)
Nach dem Login kopieren

Dieser Code gruppiert die geschmolzenen Daten nach Punktzahl und verknüpft die Werte „Betreff“ und „Noten“ mit Kommas.

Beispiel:

grouped_df = melted_df.groupby('value', as_index=False).agg({
    'Subject': ', '.join,
    'Grades': ', '.join
}).sort_values('value', ascending=True)

print(grouped_df)
Nach dem Login kopieren

Ausgabe:

  value             Name                Subjects
0     A         Foo, Tom           Math, English
1    A+         Bob, Bar           Math, English
2     B  John, John, Foo  Math, English, English
...
Nach dem Login kopieren

Problem 4: Unschmelzende Datenrahmen

Ziel: Kehren Sie den Schmelzvorgang um und kehren Sie zum ursprünglichen Format zurück.

Lösung:

melted_df.pivot_table("Grades", ['Name', 'Age'], 'Subject', aggfunc='first').reset_index()
Nach dem Login kopieren

Dieser Code dreht den geschmolzenen Datenrahmen zurück auf die ursprüngliche Breite Format.

Beispiel:

unmelted_df = melted_df.pivot_table("Grades", ['Name', 'Age'], 'Subject', aggfunc='first').reset_index()

print(unmelted_df)
Nach dem Login kopieren

Ausgabe:

   Name  Age Math English
0   Alex   15    D       F
1   Bar   15    F      A+
2   Bob   13   A+       C
3   Foo   16    A       B
...
Nach dem Login kopieren

Problem 5: Gruppieren und Spalten kombinieren

Ziel: Gruppieren Sie Daten nach einer bestimmten Spalte und kombinieren Sie andere Spalten mit Kommas.

Lösung:

melted_df.groupby('Name', as_index=False).agg(
    Subjects=', '.join,
    Grades=', '.join
)
Nach dem Login kopieren

Dieser Code gruppiert die Daten nach „Name“ und kombiniert „Betreff“. ' und 'Noten' mit Kommas.

Beispiel:

grouped_df = melted_df.groupby('Name', as_index=False).agg(
    Subjects=', '.join,
    Grades=', '.join
)

print(grouped_df)
Nach dem Login kopieren

Ausgabe:

   Name        Subjects Grades
0  Alex  Math, English   D, F
1   Bar  Math, English  F, A+
2   Bob  Math, English  A+, C
...
Nach dem Login kopieren

Problem 6: Alles schmelzen Spalten

Ziel: Konvertieren alle Spalten in Zeilen, einschließlich Bezeichnern.

Lösung:

df.melt(var_name='Column', value_name='Value')
Nach dem Login kopieren

Dieser Code verschmilzt alle Spalten in Zeilen und behandelt alle Daten als Werte.

Beispiel:

melted_df = df.melt(var_name='Column', value_name='Value')

print(melted_df)
Nach dem Login kopieren

Ausgabe:

    Column Value
0       Age    16
1       Age    16
2       Age    15
...
11  English     C
12     Math     A
13     Math    A+
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich Pandas-DataFrames effizient schmelzen und entschmelzen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage