deadline是第一生產(chǎn)力
1. 簡介
最近寫論文要用stata做面板回歸妥粟,需要對(duì)原始數(shù)據(jù)進(jìn)行預(yù)處理。
原始數(shù)據(jù)是各省份的3個(gè)指標(biāo)(Y吏够,K勾给,L)滩报,格式如圖1。
stata需要的輸入數(shù)據(jù)格式如圖2(31省份9年锦秒,共計(jì)279行)。
圖1 Y數(shù)據(jù)原始格式(K喉镰、L與之類似)
圖2 目標(biāo)格式(279x5)
將任務(wù)分解旅择,有三件工作要做:
(1)將各指標(biāo)沿各自第一列方向拼接;
(2)做region列代表地區(qū)(279x1)侣姆;
(3)做years列代表年份(279x1生真,每個(gè)年份重復(fù)31次)。
為方便處理捺宗,用excel將各指標(biāo)第一行第一列剔除(如圖3格式)柱蟀,并分開保存為3個(gè)csv文件。
在excel中做一個(gè)1到31的地區(qū)編號(hào)(31x1)蚜厉,保存為region.csv长已。
圖3 輸入csv格式
2. 步驟和代碼
import pandas as pd
#讀取csv
y = pd.read_csv("y.csv", header=None)
k = pd.read_csv("k.csv",header=None)
l = pd.read_csv("l.csv", header=None)
region = pd.read_csv("region.csv", header=None)
#(1)將各指標(biāo)沿各自第一列方向拼接
def rs(table):
x = pd.Series()
for _ in range(9):
x = pd.concat([x, table.iloc[:, _]], axis = 0)
return(x)
y = rs(y)
k = rs(k)
l = rs(l)
#(2)做region列代表地區(qū)(279x1),保存為region1
region1 = pd.Series()
for i in range(9):
region1 = pd.concat([region1, region])
region1 = region1.iloc[:, 0]
#做years列代表年份(279x1昼牛,每個(gè)年份重復(fù)31次)
years = [2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016]
years = years*31
years = sorted(years)
years = pd.Series(years)
#合并前重新編碼index防止報(bào)錯(cuò)
region1 = region1.reset_index(drop= True)
years = years.reset_index(drop= True)
y = y.reset_index(drop= True)
k = k.reset_index(drop= True)
l = l.reset_index(drop= True)
#合并术瓮,修改列名
data = pd.concat([region1, years,y, k, l], axis = 1)
data.columns = ['region', 'years', 'y', 'k', 'l']
#保存csv
data.to_csv('data.csv', index=False)