第七章:数据规整化

说明:本文章为Python数据处理学习日志,记录内容为实现书本内容时遇到的错误以及一些与书本不一致的地方,一些简单操作则不再赘述。日志主要内容来自书本《利用Python进行数据分析》,Wes McKinney著,机械工业出版社。

这篇博文主要是为了补全python处理数据系列,基本上本章没有太多的问题,主要就是P202的数据作者并没有给出,手动编辑csv太麻烦,接下来介绍如何用代码将macrodata.csv转化成可用的数据。

data = pd.read_csv('macrodata.csv')

temp_data = DataFrame(data,columns=['year','quarter','realgdp','infl','unemp'])

temp_data[:2]
Out[105]: 
     year  quarter   realgdp  infl  unemp
0  1959.0      1.0  2710.349  0.00    5.8
1  1959.0      2.0  2778.801  2.34    5.1

for i in range(len(temp_data.index)):
    if int(temp_data[i:i+1].quarter) == 1:
        temp_data.loc[i,'date'] = datetime(temp_data[i:i+1].year,3,31)
    elif int(temp_data[i:i+1].quarter) ==2:
        temp_data.loc[i,'date'] = datetime(temp_data[i:i+1].year,6,30)
    elif int(temp_data[i:i+1].quarter) ==3:
        temp_data.loc[i,'date'] = datetime(temp_data[i:i+1].year,9,30)
    elif int(temp_data[i:i+1].quarter) ==4:
        temp_data.loc[i,'date'] = datetime(temp_data[i:i+1].year,12,31)


temp_data[:2]
Out[107]: 
     year  quarter   realgdp  infl  unemp       date
0  1959.0      1.0  2710.349  0.00    5.8 1959-03-31
1  1959.0      2.0  2778.801  2.34    5.1 1959-06-30

'''这一步如果看不清楚,可以拆开来一步一步看效果'''
temp_data = temp_data.drop(['year','quarter'],1).set_index('date').stack()

temp_data[:10]
Out[109]: 
date               
1959-03-31  realgdp    2710.349
            infl          0.000
            unemp         5.800
1959-06-30  realgdp    2778.801
            infl          2.340
            unemp         5.100
1959-09-30  realgdp    2775.488
            infl          2.740
            unemp         5.300
1959-12-31  realgdp    2785.204
dtype: float64

temp_data.to_csv('new.csv')

ldata = pd.read_csv('new.csv',names=['date','item','value'])

ldata[:10]
Out[112]: 
         date     item     value
0  1959-03-31  realgdp  2710.349
1  1959-03-31     infl     0.000
2  1959-03-31    unemp     5.800
3  1959-06-30  realgdp  2778.801
4  1959-06-30     infl     2.340
5  1959-06-30    unemp     5.100
6  1959-09-30  realgdp  2775.488
7  1959-09-30     infl     2.740
8  1959-09-30    unemp     5.300
9  1959-12-31  realgdp  2785.204
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值