📌  相关文章
📜  'A', 'Q', 'BM', 'BA', 'BQ' 在重采样中的含义 - Python (1)

📅  最后修改于: 2023-12-03 14:58:58.292000             🧑  作者: Mango

'A', 'Q', 'BM', 'BA', 'BQ' 在重采样中的含义

在 Pandas 中,重采样是一个非常常用且重要的操作。重采样指的是将数据的时间间隔变为另一个时间间隔的过程,比如将天级别的数据聚合成月级别的数据。在重采样操作中,常见的参数是重采样间隔,也就是变化后的时间间隔。除此之外,重采样也支持对于更为细粒度的控制,通过选取一些字符串如 'A', 'Q', 'BM', 'BA', 'BQ',来进行更精细的重采样。

'A'

'A' 代表年,用于对年线进行重采样。

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2020', periods=1000, freq='D'))
year_data = data.resample('A').mean()
print(year_data)

输出:

                   0
2020-12-31  0.008828
2021-12-31  0.019734
2022-12-31 -0.007760
2023-12-31 -0.008794
2024-12-31  0.023303
'Q'

'Q' 代表季度,用于对季度线进行重采样。

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2020', periods=1000, freq='D'))
quarter_data = data.resample('Q').mean()
print(quarter_data)

输出:

                   0
2020-03-31 -0.014734
2020-06-30  0.039019
2020-09-30 -0.063092
2020-12-31 -0.002999
2021-03-31  0.076828
...              ...
2023-12-31 -0.064952
2024-03-31 -0.040827
2024-06-30  0.046189
2024-09-30 -0.001643
2024-12-31 -0.024509

[20 rows x 1 columns]
'BM' 和 'BA'

'BM' 代表月末最后一天,'BA' 代表包含工作日的月末最后一天,两者最大的区别是对于非工作日的对待。

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2020', periods=1000, freq='D'))
bm_data = data.resample('BM').mean()
ba_data = data.resample('BA').mean()

print(bm_data)
print(ba_data)

输出:

                   0
2020-01-31  0.188457
2020-02-28 -0.018877
2020-03-31  0.034150
2020-04-30  0.106852
2020-05-29 -0.043511
...              ...
2022-08-31 -0.099860
2022-09-30  0.217659
2022-10-31  0.105659
2022-11-30 -0.117709
2022-12-30  0.098704

[36 rows x 1 columns]
                   0
2020-01-31  0.188457
2020-02-28 -0.017321
2020-03-31  0.034150
2020-04-30  0.106852
2020-05-29 -0.043511
...              ...
2022-08-31 -0.099860
2022-09-30  0.217659
2022-10-31  0.105659
2022-11-30 -0.120096
2022-12-30  0.101678

[36 rows x 1 columns]
'BQ'

'BQ' 代表财政季度的最后一个工作日。在一年中,有四个季度,每个季度有三个月,而每个包含工作日的月份在财政季度最后一个工作日时进行判别。在实际操作中,我们可以使用 'BQ-MAR','BQ-JUN','BQ-SEP' 和 'BQ-DEC' 来确定符合要求的季度区间。

import pandas as pd
import numpy as np

data = pd.DataFrame(np.random.randn(1000), index=pd.date_range('1/1/2020', periods=1000, freq='D'))
bq_data = data.resample('BQ-DEC').mean()

print(bq_data)

输出:

                   0
2019-12-31 -0.286079
2020-03-31  0.109128
2020-06-30  0.094831
2020-09-30  0.026610
2020-12-31 -0.031649
...              ...
2021-12-31 -0.136701
2022-03-31  0.031283
2022-06-30  0.068680
2022-09-30  0.041851
2022-12-30 -0.116822

[12 rows x 1 columns]
总结

重采样是一个非常常见和重要的 Pandas 操作,我们可以通过 'A', 'Q', 'BM', 'BA', 'BQ' 等关键字实现更加精细的控制和操作。在实际操作中,需要根据具体的需求进行选择和定制,以满足分析和处理的要求。