Pivoting “long” to “wide” Format 将“长格式”旋转为“宽格式” 书中开头缺失的 ldata 变量之实现代码

书中开头内容如下:

英文版:

A common way to store multiple time series in databases and CSV is in so-called long

or stacked format:

In [116]: ldata[:10]

Out[116]:
date item value
0 1959-03-31 00:00:00 realgdp 2710.349
1 1959-03-31 00:00:00 infl 0.000
2 1959-03-31 00:00:00 unemp 5.800
3 1959-06-30 00:00:00 realgdp 2778.801
4 1959-06-30 00:00:00 infl 2.340
5 1959-06-30 00:00:00 unemp 5.100
6 1959-09-30 00:00:00 realgdp 2775.488
7 1959-09-30 00:00:00 infl 2.740
8 1959-09-30 00:00:00 unemp 5.300
9 1959-12-31 00:00:00 realgdp 2785.204


中文版:

时间序列数据通常是已所谓的“长格式”或“堆叠格式”存储在数据库和CSV中

ldata=pd.read_excel('data/data.xlsx')
print ldata
pivoted=ldata.pivot('date','item','value')
print pivoted

结果为:......

.........................

//。。。。。。。。。。。。。。。。。。。。分隔符。。。。。。。。。。。。。。。。。。。。。。。。。。。。、、//

以上文字是我在阅读《利用Python进行数据分析》一书中在中文版第202页(英文版第192页)中发现该 ldata 在前文中完全没有提及是如何实现的,译者也提出了这个问题,对于如何实现该变量,只给了一个小提示,没有代码,我上网谷歌也没有发现源代码,后来在原书附带源码中找到了该实现代码,现在贴出来如下所示:

data = pd.read_csv('ch07/macrodata.csv')
periods = pd.PeriodIndex(year=data.year, quarter=data.quarter, name='date')
data = DataFrame(data.to_records(),
                 columns=pd.Index(['realgdp', 'infl', 'unemp'], name='item'),
                 index=periods.to_timestamp('D', 'end'))


ldata = data.stack().reset_index().rename(columns={0: 'value'})
wdata = ldata.pivot('date', 'item', 'value')



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值