gpt4 book ai didi

python - python 中固定效应回归(面板数据)的格式化数据?

转载 作者:太空宇宙 更新时间:2023-11-03 10:48:14 28 4
gpt4 key购买 nike

我有一个大型数据集,需要对其进行时间序列分析。数据目前采用 excel 格式,格式如下:

+----+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+
| ID | Q1 09 variable X | Q2 09 variable X | Q3 09 variable X | Q4 09 variable X | Q1 10 variable X | Q2 10 variable X | Q3 10 variable X | Q4 10 variable X | Q1 09 variable Y | Q2 09 variable Y | Q3 09 variable Y | Q4 09 variable Y | Q1 10 variable Y | Q2 10 variable Y | Q3 10 variable Y | Q4 10 variable Y |
+----+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+
| 1 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
| 2 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
| 3 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
| 4 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
| 5 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
| 6 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
| 7 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
| 8 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
| 9 | X | X | X | X | X | X | X | X | Y | Y | Y | Y | Y | Y | Y | Y |
+----+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+------------------+

上表是一个例子。该数据集包含截至 2019 年第一季度所有季度的数据。我需要的数据如下所示:

+----+-------+------------+------------+
| ID | T | Variable X | Variable Y |
+----+-------+------------+------------+
| 1 | Q1 09 | X | Y |
| 1 | Q2 09 | X | Y |
| 1 | Q3 09 | X | Y |
| 1 | Q4 09 | X | Y |
| 1 | Q1 10 | X | Y |
| 1 | Q2 10 | X | Y |
| 1 | Q3 10 | X | Y |
| 1 | Q4 10 | X | Y |
| 2 | Q1 09 | X | Y |
| 2 | Q2 09 | X | Y |
| 2 | Q3 09 | X | Y |
| 2 | Q4 09 | X | Y |
| 2 | Q1 10 | X | Y |
| 2 | Q2 10 | X | Y |
| 2 | Q3 10 | X | Y |
| 2 | Q4 10 | X | Y |
| 3 | Q1 09 | X | Y |
| 3 | Q2 09 | X | Y |
| 3 | Q3 09 | X | Y |
| 3 | Q4 09 | X | Y |
| 3 | Q1 10 | X | Y |
| 3 | Q2 10 | X | Y |
| 3 | Q3 10 | X | Y |
| 3 | Q4 10 | X | Y |
| 4 | Q1 09 | X | Y |
| 4 | Q2 09 | X | Y |
| 4 | Q3 09 | X | Y |
| 4 | Q4 09 | X | Y |
| 4 | Q1 10 | X | Y |
| 4 | Q2 10 | X | Y |
| 4 | Q3 10 | X | Y |
| 4 | Q4 10 | X | Y |
| 5 | Q1 09 | X | Y |
| 5 | Q2 09 | X | Y |
| 5 | Q3 09 | X | Y |
| 5 | Q4 09 | X | Y |
| 5 | Q1 10 | X | Y |
| 5 | Q2 10 | X | Y |
| 5 | Q3 10 | X | Y |
| 5 | Q4 10 | X | Y |
| 6 | Q1 09 | X | Y |
| 6 | Q2 09 | X | Y |
| 6 | Q3 09 | X | Y |
| 6 | Q4 09 | X | Y |
| 6 | Q1 10 | X | Y |
| 6 | Q2 10 | X | Y |
| 6 | Q3 10 | X | Y |
| 6 | Q4 10 | X | Y |
| 7 | Q1 09 | X | Y |
| 7 | Q2 09 | X | Y |
| 7 | Q3 09 | X | Y |
| 7 | Q4 09 | X | Y |
| 7 | Q1 10 | X | Y |
| 7 | Q2 10 | X | Y |
| 7 | Q3 10 | X | Y |
| 7 | Q4 10 | X | Y |
| 8 | Q1 09 | X | Y |
| 8 | Q2 09 | X | Y |
| 8 | Q3 09 | X | Y |
| 8 | Q4 09 | X | Y |
| 8 | Q1 10 | X | Y |
| 8 | Q2 10 | X | Y |
| 8 | Q3 10 | X | Y |
| 8 | Q4 10 | X | Y |
| 9 | Q1 09 | X | Y |
| 9 | Q2 09 | X | Y |
| 9 | Q3 09 | X | Y |
| 9 | Q4 09 | X | Y |
| 9 | Q1 10 | X | Y |
| 9 | Q2 10 | X | Y |
| 9 | Q3 10 | X | Y |
| 9 | Q4 10 | X | Y |
+----+-------+------------+------------+

数据集非常大,总共有几千个数据点。

我之前就此问题发表过帖子,但我想我没有正确提出问题。我尝试了下面的代码,但它遗漏了 Y 列。

df.columns = [
df.columns.to_series().groupby(level=0).cumcount().map({0: 'X', 1: 'Y'}),
df.columns
]

df.stack().rename_axis(['ID', 'T']).reset_index()

最佳答案

我们可以使用 df.filter 将您的数据框按变量 (X, Y) 拆分.然后我们用 .melt 把你的列融化成行.最后,我们再次将分离的数据与 pd.concat 连接在一起。 .

最后一行是通过删除以下格式的所有内容来清理您的 T 列:变量 X

X = df[['ID']].join(df.filter(regex='X$')).melt(id_vars='ID', var_name='T', value_name='Variable X')
Y = df[['ID']].join(df.filter(regex='Y$')).melt(id_vars='ID', var_name='T', value_name='Variable Y')

df = pd.concat([X, Y[['Variable Y']]], axis=1).sort_values(['ID', 'T']).reset_index(drop=True)

df['T'] = df['T'].str.replace('\svariable\s[A-Za-z]', '')

输出

    ID      T Variable X Variable Y
0 1 Q1 09 X Y
1 1 Q1 10 X Y
2 1 Q2 09 X Y
3 1 Q2 10 X Y
4 1 Q3 09 X Y
5 1 Q3 10 X Y
6 1 Q4 09 X Y
7 1 Q4 10 X Y
8 2 Q1 09 X Y
9 2 Q1 10 X Y
10 2 Q2 09 X Y
11 2 Q2 10 X Y
12 2 Q3 09 X Y
13 2 Q3 10 X Y
14 2 Q4 09 X Y
15 2 Q4 10 X Y
16 3 Q1 09 X Y
17 3 Q1 10 X Y
18 3 Q2 09 X Y
19 3 Q2 10 X Y
20 3 Q3 09 X Y
21 3 Q3 10 X Y
22 3 Q4 09 X Y
23 3 Q4 10 X Y
24 4 Q1 09 X Y
25 4 Q1 10 X Y
26 4 Q2 09 X Y
27 4 Q2 10 X Y
28 4 Q3 09 X Y
29 4 Q3 10 X Y
.. .. ... ... ...
42 6 Q2 09 X Y
43 6 Q2 10 X Y
44 6 Q3 09 X Y
45 6 Q3 10 X Y
46 6 Q4 09 X Y
47 6 Q4 10 X Y
48 7 Q1 09 X Y
49 7 Q1 10 X Y
50 7 Q2 09 X Y
51 7 Q2 10 X Y
52 7 Q3 09 X Y
53 7 Q3 10 X Y
54 7 Q4 09 X Y
55 7 Q4 10 X Y
56 8 Q1 09 X Y
57 8 Q1 10 X Y
58 8 Q2 09 X Y
59 8 Q2 10 X Y
60 8 Q3 09 X Y
61 8 Q3 10 X Y
62 8 Q4 09 X Y
63 8 Q4 10 X Y
64 9 Q1 09 X Y
65 9 Q1 10 X Y
66 9 Q2 09 X Y
67 9 Q2 10 X Y
68 9 Q3 09 X Y
69 9 Q3 10 X Y
70 9 Q4 09 X Y
71 9 Q4 10 X Y

[72 rows x 4 columns]

关于python - python 中固定效应回归(面板数据)的格式化数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57052876/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com