如何在python中格式化面板数据分析的数据?

2024-06-28 14:56:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要对面板数据进行时间序列分析。数据当前的格式如下表所示:


+------+---------+---------+---------+---------+---------+---------+---------+---------+
|      |   Q1    |   Q2    |   Q3    |   Q4    |   Q1    |   Q2    |   Q3    |   Q4    |
+------+---------+---------+---------+---------+---------+---------+---------+---------+
| ID 1 | Value 1 | Value 1 | Value 1 | Value 1 | Value 2 | Value 2 | Value 2 | Value 2 |
| ID 2 | Value 1 | Value 1 | Value 1 | Value 1 | Value 2 | Value 2 | Value 2 | Value 2 |
| ID 3 | Value 1 | Value 1 | Value 1 | Value 1 | Value 2 | Value 2 | Value 2 | Value 2 |
| ID 4 | Value 1 | Value 1 | Value 1 | Value 1 | Value 2 | Value 2 | Value 2 | Value 2 |
+------+---------+---------+---------+---------+---------+---------+---------+---------+

我需要值1和2的季度数据按如下方式叠加:

^{pr2}$

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

我是初学者,所以我迷路了。在


Tags: 数据id面板value格式方式时间序列
2条回答

重命名列,然后pd.wide_to_long

样本数据

np.random.seed(123)
df = pd.DataFrame(np.random.randint(1,10,(4,8)), 
                  index=['ID 1', 'ID 2', 'ID 3', 'ID 4'])
df.columns = ['Q1', 'Q2', 'Q3', 'Q4']*2

      Q1  Q2  Q3  Q4  Q1  Q2  Q3  Q4
ID 1   3   3   7   2   4   7   2   1
ID 2   2   1   1   4   5   1   1   5
ID 3   2   8   4   3   5   8   3   5
ID 4   9   1   8   4   5   7   2   6

代码:

^{pr2}$

新列对象,stackreset_index

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()

      ID   T        X        Y
0   ID 1  Q1  Value 1  Value 2
1   ID 1  Q2  Value 1  Value 2
2   ID 1  Q3  Value 1  Value 2
3   ID 1  Q4  Value 1  Value 2
4   ID 2  Q1  Value 1  Value 2
5   ID 2  Q2  Value 1  Value 2
6   ID 2  Q3  Value 1  Value 2
7   ID 2  Q4  Value 1  Value 2
8   ID 3  Q1  Value 1  Value 2
9   ID 3  Q2  Value 1  Value 2
10  ID 3  Q3  Value 1  Value 2
11  ID 3  Q4  Value 1  Value 2
12  ID 4  Q1  Value 1  Value 2
13  ID 4  Q2  Value 1  Value 2
14  ID 4  Q3  Value 1  Value 2
15  ID 4  Q4  Value 1  Value 2

相关问题 更多 >