《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...