기출문제

FDA1급_제8회_확정답안.pdf
1.35MB

 


예제파일

암호 : python

분개장_08회_1급_1.csv


판다스 답안


13번

# 판다스 라이브러리 불러오기
import pandas as pd

# 파일 임포트
df_전체 = pd.read_csv("분개장_08회_1급_1.csv", encoding = 'utf-8', sep = ',')

# 외상매출금 계정코드 리스트 처리 
외상매출금_계정코드 = [10080, 10081,10082,10083,10084,10085]

# 매출 계정코드 리스트 처리
매출_계정코드 = [40001, 40002, 40003, 40004, 40005, 40006, 40007, 40008, 40009,
               40010, 40011, 40012, 40013] 
               
# 외상매출금_차변빈도, 매출액_대변빈도 칼럼 삽입
df_전체['외상매출금_차변'] = [1 if i[0] in 외상매출금_계정코드 and (i[1] > 0 or i[2] < 
0) else 0 for i in zip(df_전체['계정코드'], df_전체['차변금액'], df_전체['대변금액'])]
    
df_전체['매출_대변'] = [1 if i[0] in 매출_계정코드 and (i[1] < 0 or i[2] > 0) else 0 
    for i in zip(df_전체['계정코드'], df_전체['차변금액'], df_전체['대변금액'])]
    
# groupby : 전표번호, 전표일자
gb_전표번호_일자 = df_전체.groupby(['전표일자','전표번호'])
    
# 전표_인덱스 칼럼 삽입
df_전체['전표_인덱스'] = gb_전표번호_일자.ngroup()  

# df_외상매출금매출_총괄 dataframe 만들기 
df_외상매출금매출_총괄 = pd.DataFrame(
 {'외상매출금_차변_빈도': gb_전표번호_일자['외상매출금_차변'].sum(),
 '매출_대변_빈도': gb_전표번호_일자['매출_대변'].sum(),
 '차변합계': gb_전표번호_일자['차변금액'].sum(),
 '대변합계': gb_전표번호_일자['대변금액'].sum()}
 ).reset_index()
 
# 외상매출금_차변_빈도가 0 초과하면서 매출_대변_빈도가 0 초과하는 경우 발췌
df_외상매출금매출_발췌 = df_외상매출금매출_총괄[(df_외상매출금매출_총괄['외상매출금_차변_빈도'] >0) 
  & (df_외상매출금매출_총괄['매출_대변_빈도'] >0)]


# 상세분석 리스트 
상세분석_리스트 = [i for i in df_외상매출금매출_발췌['전표_인덱스']]
print(len(상세분석_리스트))

14번

import pandas as pd

# 파일 임포트
df_전체 = pd.read_csv("분개장_08회_1급_1.csv", encoding = 'utf-8', sep = ',')

# 외상매입금_1 계정과목 발췌
df_외상매입금_1 = df_전체[(df_전체['계정코드'] == 20001) & (df_전체['대변금액'] > 0)]

# groupby : 거래처 
gb_1 = df_외상매입금_1.groupby('거래처코드')

# 칼럼 삽입
df_외상매입금_1['거래처_인덱스'] = gb_1.ngroup()
df_외상매입금_1['대변_Max'] = gb_1['대변금액'].transform(lambda x : x.nlargest(1).max())
df_외상매입금_1['대변_2nd_Max'] = gb_1['대변금액'].transform(lambda x : x.nlargest(2).min())
df_외상매입금_1['대변_RSF'] = [ i[0]/i[1] if i[1] != 0 else -1
                    for i in zip(df_외상매입금_1['대변_Max'], df_외상매입금_1['대변_2nd_Max'])]
 # RSF 요약 테이블 작성
df_RSF = pd.DataFrame(
 {'대변_Max': gb_1['대변_Max'].max(),
 '대변_2nd_Max': gb_1['대변_2nd_Max'].max(),
 '대변_RSF': gb_1['대변_RSF'].max()
 }).reset_index()

df_RSF_2 = df_RSF[df_RSF['대변_RSF'] > 2].reset_index()

print(df_RSF_2)

15번

 

# 판다스 라이브러리 불러오기
import pandas as pd

# 파일 임포트
df_전체 = pd.read_csv("분개장_08회_1급_1.csv", encoding = 'utf-8', sep = ',')

# 계정코드_1 칼럼 삽입
df_전체['계정코드_1'] = [ i[2] if i[0] > 0 and i[1] == 0 
    else(-i[2] if i[0] < 0 and i[1] == 0      
    else(-i[2] if i[0] == 0 and i[1] > 0
    else( i[2] if i[0] == 0 and i[1] < 0
    else( i[2] if i[0] == 0 and i[1] == 0
    else 0))))
    for i in zip(df_전체['차변금액'], df_전체['대변금액'], df_전체['계정코드'])
 ]
 
# groupby : 전표번호, 전표일자
gb_전표번호_일자 = df_전체.groupby(['전표일자','전표번호']) 
 
# 칼럼 삽입
df_전체['계정코드_1_합계_중복제외'] = gb_전표번호_일자['계정코드_1'].transform(lambda x: x.unique().sum())
df_전체['계정코드_1_표준편차_중복제외'] = gb_전표번호_일자['계정코드_1'].transform(lambda x: x.unique().std())
df_전체['계정코드_1_개수_중복제외'] = gb_전표번호_일자['계정코드_1'].transform('nunique')

df_전체['전표_인덱스'] = gb_전표번호_일자.ngroup()

# groupby : 계정코드_1_합계_중복제외,계정코드_1_표준편차_중복제외
gb_계정코드_1_중복제외 = df_전체.groupby(['계정코드_1_합계_중복제외', '계정코드_1_표준편차_중복제외'])

# 인덱스 칼럼 삽입
df_전체['계정코드_1_중복제외_index'] = gb_계정코드_1_중복제외.ngroup()

 # df_분개패턴 summarize 생성
df_분개패턴_1 = pd.DataFrame({
 '계정코드_1_중복제외_레코드': gb_계정코드_1_중복제외['계정코드_1_개수_중복제외'].max(),
 '계정코드_1_전표세트_중복제외_빈도': gb_계정코드_1_중복제외['전표_인덱스'].nunique(),
 '차변합계': gb_계정코드_1_중복제외['차변금액'].sum(),
 '차변Max': gb_계정코드_1_중복제외['차변금액'].max()
 }).reset_index()

# 인덱스 칼럼 삽입
df_분개패턴_1.insert(0, 'S2_index', range(0, len(df_분개패턴_1)))

# 필터링
df_분개패턴_1_발췌 = df_분개패턴_1[df_분개패턴_1['계정코드_1_전표세트_중복제외_빈도'] == 2]

print(len(df_분개패턴_1_발췌))

 

+ Recent posts