大道至简,大音希声,大象无形。
依然是面板数据预处理问题。
这次总结经验,简化方法,用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")
本文链接:https://my.lmcjl.com/post/4759.html
4 评论