用python预处理面板数据(续)

2019-10-21  本文已影响0人  伏星宇
大道至简,大音希声,大象无形。

依然是面板数据预处理问题。
这次总结经验,简化方法,用list规避了恼人的合并索引不匹配。
面对棘手的问题,最好的方法可能正是最简单暴力的方法,所谓快刀斩乱麻是也。
只要能解决问题,又何苦老是整些有的没的给自己挖坑?(身处坑底的我一脸认真的说)

原始数据格式:”和我一样的还有4个“
处理后效果
处理后效果(续)
舒服了

代码请参考:

# -*- coding: utf-8 -*-  
# 感谢pandas救我🐕命
import pandas as pd

# 拼接
def rs(filepath):
    df = pd.read_excel(filepath,sheet_name=0)
    df.columns = ['region', '2016','2015','2014', '2013','2012','2011', '2010','2009','2008']
    df = df.drop(labels = ['region'], axis=1)
    l = pd.Series()
    for i in range(1, 10):
        l = pd.concat([l, df.iloc[:,9-i]])
    l = list(l)
    return(l)


data1 = rs("客运量.xls")
data2 = rs("货运周转量.xls")
data3 = rs("固定资产投资.xls")
data4 = rs("邮电业务量.xls")
data5 = rs("技术市场成交额.xls")

# 年份
years = [2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016]
years = years*31
years = sorted(years)

# 地区编号,省份
rg=[
1,
2,
3,
4,
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15,
16,
17,
18,
19,
20,
21,
22,
23,
24,
25,
26,
27,
28,
29,
30,
31,
]
prv = [
'北京',
'天津',
'河北',
'山西',
'内蒙古',
'辽宁',
'吉林',
'黑龙江',
'上海',
'江苏',
'浙江',
'安徽',
'福建',
'江西',
'山东',
'河南',
'湖北',
'湖南',
'广东',
'广西',
'海南',
'重庆',
'四川',
'贵州',
'云南',
'西藏',
'陕西',
'甘肃',
'青海',
'宁夏',
'新疆'
]

rg = rg*9
prv = prv*9

# 输出
data = pd.DataFrame({
    'region': rg,
    'prv'   : prv,
    'years' : years,
    'pop'   : data1,
    'cmd'   : data2,
    'fin'   : data3,
    'inf'   : data4,
    'tec'   : data5,
})
# 用encoding="utf-8-sig"防止出现乱码
data.to_csv('effect.csv', index=False,encoding="utf-8-sig")

上一篇下一篇

猜你喜欢

热点阅读