pandas数据重塑

来源:互联网 发布:pb 数据窗口过滤 编辑:程序博客网 时间:2024/04/29 17:04

《Python for Data Analysis》

数据重塑

重塑层次化索引

stack: 将数据的列“旋转”为行

unstack : 将数据的行“旋转”为列

旋转

pivot

前两个参数值分别用作行和列索引的列名,最后一个参数则是用于填充DataFrame的数据列的列名。如果忽略最后一个参数,得到的DataFrame就会带有层次化的列。

相当于用set_index创建层次化索引,再用unstack重塑。
见 : > 使用DataFrame的列

数据离散化和面板划分cut

为了便于分析,将连续数据离散化、拆分为“面元”(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]: catsOut[7]:[(18, 25], (18, 25], (18, 25], (25, 35], (18, 25], ..., (25, 35], (60, 100], (35, 60], (35, 60], (25, 35]]Length: 12Categories (4, object): [(18, 25] < (25, 35] < (35, 60] < (60, 100]]In [12]: cats.codesOut[12]: array([0, 0, 0, 1, 0, 0, 2, 1, 3, 2, 2, 1], dtype=int8)In [13]: cats.categoriesOut[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]    1dtype: int64In [15]: cats.value_counts()Out[15]:(18, 25]     5(25, 35]     3(35, 60]     3(60, 100]    1dtype: int64

排列和随机采样

numpy.random.permutation: 随机重排序

In [18]: df = DataFrame(np.arange(5*4).reshape(5,4))In [19]: dfOut[19]:    0   1   2   30   0   1   2   31   4   5   6   72   8   9  10  113  12  13  14  154  16  17  18  19In [20]: sampler = np.random.permutation(5)In [21]: samplerOut[21]: array([1, 4, 0, 2, 3])In [22]: df.take(sampler)Out[22]:    0   1   2   31   4   5   6   74  16  17  18  190   0   1   2   32   8   9  10  113  12  13  14  15In [23]: df.ix(sampler)Out[23]: <pandas.core.indexing._IXIndexer at 0x76c5358>
原创粉丝点击