有时候回归分析常需要整理面板数据
就是把这样一行一行的数据
转化成这样一列一列的面板数据
我习惯用list的方法来整理,但是这样消耗的时间比较久。
好在只有1w条不到的数据,时间上不到1s,所以日常处理应该是够用的。
Running time: 0.13164949417114258 Seconds
import pandas as pd
data = pd.read_excel(".\建设高铁时间表.xlsx")
# 留出三个list存放数据
name_list = []
value_list = []
year_list = []
for i in range(len(data)):
# 让每个城市的名字重复n次,n=面板涵盖的年份数
name = list(np.full(len(list(data.iloc[i,:]))-1,list(data.iloc[i,:])[0]))
# 这里extend能实现list的横向合并
name_list.extend(name)
# 这里去除每一行第一个单元格的城市名,留下values
value = list(data.iloc[i,1:])
value_list.extend(value)
# 每次循环也将年份加入列表
year_list.extend(list(data.columns)[1:])
# 循环结束后,每一列表中的数据按次序一一对应
# 先建立字典,后转化为dataframe,输出为excel
highwaydf = {
'city':name_list,
'hashighway':value_list,
'year':year_list
}
highwaydf = pd.DataFrame(highwaydf)
highwaydf.to_excel("highway.xlsx")