Computer >> Máy Tính >  >> Lập trình >> Python

Viết một chương trình Python để định hình lại một khung dữ liệu nhất định theo những cách khác nhau

Chúng ta có thể định hình lại khung dữ liệu bằng cách sử dụng hàm tan (), stack (), unack () và pivot ().

Giải pháp 1

  • Xác định khung dữ liệu.

  • Áp dụng hàm tan () để chuyển đổi cột khung dữ liệu rộng thành các hàng. Nó được định nghĩa bên dưới,

df.melt()

Ví dụ

Hãy xem đoạn mã dưới đây để hiểu rõ hơn -

import pandas as pd
df = pd.DataFrame({'Id':[1,2,3],'Age':[13,14,13],'Mark':[80,90,85]})
print("Dataframe is:\n",df)
print(df.melt())

Đầu ra

Dataframe is:
 Id Age Mark
0 1 13   80
1 2 14   90
2 3 13   85
variable value
0    Id    1
1    Id    2
2    Id    3
3   Age    13
4   Age    14
5   Age    13
6   Mark   80
7   Mark   90
8   Mark   85

Giải pháp 2

  • Xác định khung dữ liệu.

  • Áp dụng hàm stack () để tăng mức độ của chỉ mục trong khung dữ liệu. Nó được định nghĩa bên dưới,

df.stack().to_frame()
  • Nếu bạn muốn hoàn nguyên các thay đổi, bạn có thể sử dụng unack ().

df.unstack().to_frame()

Ví dụ

Hãy xem cách triển khai bên dưới để hiểu rõ hơn -

import pandas as pd
df = pd.DataFrame({'Id':[1,2,3],'Age':[13,14,13],'Mark':[80,90,85]})
print("Dataframe is:\n",df)
print(df.stack().to_frame())
print(df.unstack().to_frame())

Đầu ra

Dataframe is:
   Id   Age Mark
0   1    13  80
1   2    14  90
2   3    13  85
          0
0   Id    1
   Age    13
   Mark   80
1   Id     2
   Age    14
  Mark    90
2   Id    3
   Age    13
   Mark   85
          0
Id   0    1
     1    2
     2    3
Age  0    13
     1    14
     2    13
Mark 0    80
     1    90
     2    85

Giải pháp 3

  • Xác định khung dữ liệu

  • Áp dụng hàm pivot () để định hình lại khung dữ liệu dựa trên cột Id,

df.pivot(columns='Id')

Ví dụ

Hãy xem cách triển khai bên dưới để hiểu rõ hơn -

import pandas as pd
df = pd.DataFrame({'Id':[1,2,3],'Age':[13,14,13],'Mark':[80,90,85]})
print("Dataframe is:\n",df)
print(df.pivot(columns='Id'))

Đầu ra

Dataframe is:
 Id Age Mark
0 1 13   80
1 2 14   90
2 3 13   85
      Age          Mark
Id    1    2    3    1    2    3
0   13.0  NaN  NaN  80.0 NaN  NaN
1   NaN  14.0  NaN  NaN  90.0 NaN
2   NaN  NaN   13.0 NaN  NaN  85.0