pandas数据重塑

《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]: 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]:
    0   1   2   3
0   0   1   2   3
1   4   5   6   7
2   8   9  10  11
3  12  13  14  15
4  16  17  18  19

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]:
    0   1   2   3
1   4   5   6   7
4  16  17  18  19
0   0   1   2   3
2   8   9  10  11
3  12  13  14  15

In [23]: df.ix(sampler)
Out[23]: <pandas.core.indexing._IXIndexer at 0x76c5358>
  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值