pandas資料重塑

2021-08-01 11:52:26 字數 1973 閱讀 7835

《python for data analysis》

stack: 將資料的列「旋轉」為行

unstack: 將資料的行「旋轉」為列

pivot

前兩個引數值分別用作行和列索引的列名,最後乙個引數則是用於填充dataframe的資料列的列名。如果忽略最後乙個引數,得到的dataframe就會帶有層次化的列。

相當於用set_index建立層次化索引,再用unstack重塑。

見 :> 使用dataframe的列

為了便於分析,將連續資料離散化、拆分為「面元」(bin)

in [4]: ages = [20,22,25,27,21,23,37,31,61,45,41,32]

in [5]: bins = [18,25,35,60,100]

in [6]: cats = pd.cut(ages,bins)

in [7]: cats

out[7]:

[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35], (60, 100], (35, 60], (35, 60], (25, 35]]

length: 12

categories (4, object): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]

in [12]: cats.codes

out[12]: array([0, 0, 0, 1, 0, 0, 2, 1, 3, 2, 2, 1], dtype=int8)

in [13]: cats.categories

out[13]: index([u'(18, 25]', u'(25, 35]', u'(35, 60]', u'(60, 100]'], dtype='object')

in [14]: pd.value_counts(cats)

out[14]:

(18, 25] 5

(35, 60] 3

(25, 35] 3

(60, 100] 1

dtype: int64

in [15]: cats.value_counts()

out[15]:

(18, 25] 5

(25, 35] 3

(35, 60] 3

(60, 100] 1

dtype: int64

numpy.random.permutation: 隨機重排序

in [18]: df = dataframe(np.arange(5*4).reshape(5,4))

in [19]: df

out[19]:

0123001

2314

5672

891011312

1314154

1617

1819

in [20]: sampler = np.random

.permutation(5)

in [21]: sampler

out[21]: array([1, 4, 0, 2, 3])

in [22]: df.take(sampler)

out[22]:

0123145

67416

1718190

0123

28910

1131213

1415

in [23]: df.ix(sampler)

out[23]: .core

.indexing._ixindexer at 0x76c5358>

pandas資料合併與重塑(concat)

concat函式是在pandas底下的方法,可以將資料根據不同的軸作簡單的融合 pd.concat objs,axis 0,join outer join axes none ignore index false keys none levels none names none verify int...

PANDAS 資料合併與重塑(concat篇)

pandas作者wes mckinney 在 python for data analysis 中對pandas的方方面面都有了乙個權威簡明的入門級的介紹,但在實際使用過程中,我發現書中的內容還只是冰山一角。談到pandas資料的行更新 表合併等操作,一般用到的方法有concat join merg...

pandas之重塑和軸向旋轉

對於dataframe,主要功能有 1 stack 將資料的列 旋轉 為行 2 unstack 將資料的行 旋轉 為列 例1 其中行列索引均為字串 data dataframe np.arange 6 reshape 2,3 index pd.index o c name state columns...