스파르타코딩클럽 파이썬 금융데이터 2주차

NameError·2022년 9월 5일
0
corp = yf.Ticker('WMT')
name = corp.info['shortName']
sheet = corp.balance_sheet.loc[['Cash']]
df0 = pd.Series({'name':name})
columns = sheet.columns

sheet.rename(columns={columns[0]:'2022',columns[1]:'2021',columns[2]:'2020',columns[3]:'2019'},inplace=True)
sheet['diff'] = sheet['2021']-sheet['2020']
sheet['name'] = df0[0]


월마트의 캐시플로우와 2020년과 2020년의 차잇값, 그리고 월마트 회사 이름이 출력된 데이터프레임을 다듬어서 주어진 형식대로 출력하는 미션이다

컬럼 이름 리네임 과정이 까다로운 이유는 yfinance의 기업 캐시플로우 데이터의 컬럼명이 문자열이나 int가 아니라 datetime이라서 호출하기가 까다로워서 컬럼 리스트에서 몇 번째라는 식으로 호출을 해야 하기 때문이었다

여기에서 순서를 바꾸고 2022년과 2019년은 제거한다

cols = sheet.columns.tolist()
cols = cols[-1:]+cols[:-1]
sheet = sheet[cols]
sheet = sheet.drop(columns=['2022','2019'])

데이터프레임의 컬럼 순서를 바꾸려면 그냥 순서가 바뀐 리스트를 만들어서 그 컬럼 리스트에 대한 데이터프레임으로 재정의하면 된다고 한다
여기에서는 맨 마지막 컬럼('name')을 첫 컬럼으로 만들려고 하니까 맨 마지막 컬럼만 있는 리스트에 맨 마지막 컬럼만 뺀 리스트를 붙여주면 된다

그래서 위와 같이 출력되었고

마지막으로 yfinance의 balance sheet에서 왔기 때문에 Cash라는 타이틀이 있는데 이것을 제거해 주고 그냥 row의 제목을 0으로 바꾼다

sheet.rename(index={'Cash':'0'},inplace=True)
sheet

그래서 이렇게 주어진 형식대로 완성되었다

이번에는 아직 내가 아는 파이썬 기초 내용이 많이 나오기 때문에 가급적 수업을 다 듣기 전에 기억을 되살려서 스스로 미션을 해 보는데 치중했는데

참 쓸데없는 삽질이 많았다 ㅋㅋㅋ

예를 들어 파이썬의 list는 append를 하면 그대로 아이템이 추가되지만 DataFrame에서는 append를 한 데이터프레임을 다시 df = df.append(...) 이런 식으로 재정의를 해줘야 하는 것이라든가

자꾸 keyError가 나서 내가 뭘 잘못했나 화를 내고 있었는데(...) 원 데이터에 진짜로 결측값이 있었던 경우라든가 ㅋㅋㅋ

아무튼 아무렇게나 검색해서 막 했는데 맞게 된 것 같아서 보람차게 2주차가 끝났다 ㅋㅋㅋ

profile
매일 공부하며 살고 있구나

0개의 댓글