所謂**數據轉置**,就是是將原始數據表格沿著對角線翻折,使原來的行變成新的列,原來的列變成新的行,從而更方便地進行數據分析和處理。 `pandas`中`DataFrame`的轉置非常簡單,每個`DataFrame`對象都有一個`T`屬性,通過這個屬性就能得到轉置之後的`DataFrame`。下麵介 ...
所謂數據轉置,就是是將原始數據表格沿著對角線翻折,使原來的行變成新的列,原來的列變成新的行,從而更方便地進行數據分析和處理。
pandas
中DataFrame
的轉置非常簡單,每個DataFrame
對象都有一個T
屬性,通過這個屬性就能得到轉置之後的DataFrame
。
下麵介紹幾個數據轉置常用的場景,感受下轉置前後數據展示的區別。
1. 數據結構調整
有時候原始數據在行列方向上不太適合某些數據分析和處理需求,需要將其調整為合適的數據結構。
某些機器學習演算法要求輸入特征矩陣的行表示樣本,列表示特征值,這時候就需要將原始數據表格進行轉置。
比如,隨機生成10
個樣本數據,每個樣本有200
個特征值:
import pandas as pd
df = pd.DataFrame(np.random.rand(200, 10))
df.columns = [
"SAMPLE_"+s for s in list("ABCDEFGHIJ")
]
df
每列代表一個樣本的所有特征的值,樣本名稱是按字母順序生成的。
每行代表所有樣本的一種特征值。
如果要讓列顯示各個特征值,行代表一個個樣本的話,就需要轉置操作。
df.T
轉置之後,每行代表一個樣本的所有特征的值,更有利於觀察每個樣本的特征。
2. 數據展示效果
有時候為了更好地呈現數據,需要將原始數據表格進行轉置。
在製作某些類型的圖表或者報告中,將數據表格轉置可以更加直觀地展示重點數據信息。
比如,有如下學生成績數據:
df = pd.DataFrame(
np.random.randint(60, 100, (4, 3))
)
df.columns = ["語文", "數學", "英語"]
df.index = ["學生"+s for s in list("ABCD")]
df
這樣的視圖適合查看每個學生的成績情況。
這樣的結構以學生為主要視角,可以繪製各個學生的學科堆疊柱狀圖等。
轉置之後如下:
df.T
這樣的視圖以學科為主要視角,方便查看每個學科的學習情況。
這樣的結構適合繪製每個學科的學生成績堆疊柱狀圖等。
此外,查看DataFrame
概況信息時,也常常會轉置之後查看。
df = pd.DataFrame(np.random.rand(200, 10))
df.columns = [
"SAMPLE_" + s for s in list("ABCDEFGHIJ")
]
df.describe()
轉置之後是這樣的,可以體會在不同的視角下,數據給我們的感覺。
df.describe().T