내가 다음 데이터 프레임에서 분기 대차 대조표의 자본 값의 차이를 찾기 위해 노력하고 누락 때 팬더 dataframe의 분기 별 행 값의 차이를 확인하는 방법 :가
이import pandas as pd
import numpy as np
df2= pd.DataFrame({'FirmID' : pd.Series(['ID001', 'ID001', 'ID001', 'ID001', 'ID001', 'ID001', 'ID001', 'ID001', 'ID001', 'ID001' ]),
'RSSD9999' : pd.Series([20060331, 20060630, 20060930, 20061231, 20070331,20070630, 20070930, 20080630, 20080930, 20081231]),
'year' : pd.Series([2006, 2006, 2006, 2006, 2007, 2007, 2007, 2008, 2008, 2008 ]),
'Q' : pd.Series([1, 2, 3, 4, 1, 2, 3, 2, 3, 4 ]),
'EquityEoQ' : pd.Series([112, 223, 333, 445, 126, 251, 376, 291, 291, 503 ]),
'NewEqRight': pd.Series([112, 111, 110, 112, 126, 125, 125, np.nan, 0 , 212, ])})
df2=df2[['FirmID','RSSD9999', 'year', 'Q', 'EquityEoQ','NewEqRight']]
프레임은 주식을 보여줍니다 연말 분기의 가치 : EquityEoQ
. 참고로 NewEqRight
은 2007Q4 및 2008Q2 값이 누락 된 상태로 값을 표시합니다.
행 값의 차이를 사용하여 분기 별 자본 변화를 확인할 수 있습니다. 예를 들어, 회사 ID001은 2006Q2에 111 개의 새로운 지분을 발행했습니다 (111 = 223 - 112).
데이터의 모든 분기 별 행이있는 경우 을 사용하여 지난 분기의 자본 (EquityEoLastQ)이있는 새 열과 EquityEoQ와 EquityEoLastQ의 차이가 기록 된 새 열을 만들어 자본의 변화를 얻을 수 있습니다.
df2['EquityEoLastQ'] = df2.groupby(['FirmID'])['EquityEoQ'].shift(1)
df2['NewEqWrong'] = df2['EquityEoQ']-df2['EquityEoLastQ']
df2.loc[df2['Q']==1, 'NewEqWrong'] = df2.loc[df2['Q']==1, 'EquityEoQ']
마지막 행은 Q1의 값을 수정합니다.
분기 별 행이 누락 된 경우 shift
가 엉망입니다. 예를 들어 데이터 프레임에서 2007Q4 및 2008Q1의 행이 누락되었습니다. shift
은 잘못된 분기를 나타 내기 때문에 잘못된 정보가 표시됩니다. 이 프레임에서이 접근법은 2008Q2의 음수가 NewEqWrong
인데 잘못된 값인 -85.0입니다.
원하는 데이터 세트 :
In [9]: df2
Out[9]:
FirmID RSSD9999 year Q EquityEoQ NewEqRight EquityEoLastQ NewEqWrong
0 ID001 20060331 2006 1 112 112.0 NaN 112.0
1 ID001 20060630 2006 2 223 111.0 112.0 111.0
2 ID001 20060930 2006 3 333 110.0 223.0 110.0
3 ID001 20061231 2006 4 445 112.0 333.0 112.0
4 ID001 20070331 2007 1 126 126.0 445.0 126.0
5 ID001 20070630 2007 2 251 125.0 126.0 125.0
6 ID001 20070930 2007 3 376 125.0 251.0 125.0
7 ID001 20080630 2008 2 291 NaN 376.0 -85.0
8 ID001 20080930 2008 3 291 0.0 291.0 0.0
9 ID001 20081231 2008 4 503 212.0 291.0 212.0
STATA 한 각각 시차과 차이점을 발견 L. D. 또는 다음 분기를 사용하여 시계열 주파수를 설정하고있다.
팬더가이 문제를 해결할 수있는 방법이 있습니까? Stata와 다소 비슷합니까? 당신이이 방법을 수행 할 수 있습니다
당신이 원하는 데이터 세트를 제공 할 경우, 우리가 당신을 도울 훨씬 쉬울 것 ... 내가 제공 – MaxU
데이터는 나의 점을 설명하지 :
이 링크를 참조하십시오. 원래 데이터에는 약 400,000 개의 행이 들어 있습니다. –
올바른 데이터 'NewEqRight'가있는 열을 추가했습니다. –