[데이터분석] week2. Pandas / DataFrame

Jake·2023년 1월 9일

1. Pandas 기초

  • 1) 기본 DataFrame 만들기

    data = {
        'name' : ['영수','철수','영희','소희'],
        'age' : [20,15,38,8]
    }

    ⇒ 그리고, 다음을 입력해서 DataFrame을 만들어봅니다.

    df = pd.DataFrame(data)

    ⇒ 여기서 df 를 입력하면, 표를 볼 수 있습니다.
    ⇒ 이렇게, DataFrame은 “딕셔너리” 형태로 표현된 데이터를 표로 바꿔주는 역할을 한답니다.
    ⇒ 맨 왼쪽은 이 데이터들의 “index”라는 것이에요. 지금은 자동으로 생성이 되었네요!

  • 2) DataFrame 다루기 - 기초

    1. 행 추가하기

      doc = {
      	'name':'세종',
      	'age':14,
      }
      df = df.append(doc,ignore_index=True)
    2. Colums 추가하기

      df['city'] = ['서울','부산','부산','서울','서울']
    3. 특정 Column만 뽑아보기

      ⇒ 대괄호를 두 번 해야 DataFrame 형식으로 반환된다는 점을 잊지 마세요!

      df[['name','city']]
    4. 원하는 조건에 맞는 행만 뽑아보기

      df[df['age'] < 20]
    5. 특정 행에서의 뽑아보기

      ⇒ 보통 정렬을 활용하기 때문에, 이렇게 데이터를 얻을 일이 많아요!

      df.iloc[-1,0] # 마지막 행
      df.iloc[0,0] # 첫 행
  • 3) DataFrame 다루기 - 연산

    1. 열을 정렬하기

      df.sort_values(by='age',ascending=True)
    2. 조건에 맞는 열을 추가하기

      np.where(df['age'] > 20,'성인','청소년')
      df['is_adult'] = np.where(df['age'] > 20,'성인','청소년')
    3. 평균, 최대값, 최소값, 갯수 구하기

      df['age'].mean()
      
      df['age'].max()
      
      df['age'].min()
      
      df['age'].count()
    4. 퀴즈 - 서울에 사는 사람 중 나이가 가장 많은 사람은 몇 살?

      df[df['city'] == '서울']['age'].max()

      ⇒ 또는

      df[df['city'] == '서울'].sort_values(by='age',ascending=False).iloc[0,1]

2. 엑셀 가져오기

👉 데이터분석가들은 엑셀보다 Pandas를 선호한답니다!
  • 1) 실제 데이터 import 해보기
    • [코드스니펫] 종목데이터

      [종목데이터.xlsx](https://s3-us-west-2.amazonaws.com/secure.notion-static.com/c56afbb0-804e-4202-af8c-48d68d2b25ae/종목데이터.xlsx)

      ⇒ 엑셀파일을 끌어다가 colab에 붙여볼게요!

  • 2) 엑셀을 DataFrame으로 읽기 ⇒ 무척 쉬워요! 한 줄이면 끝!
    pd.read_excel('종목데이터.xlsx')
    ⇒ 이렇게, df 변수에 넣어둘까요?
    df = pd.read_excel('종목데이터.xlsx')
    ⇒ 이렇게 하면 긴 줄을 모두 볼 필요 없이 앞의 5개만 볼 수 있습니다.
    df.head()
    
    df.tail()
    
    df.head(20)
    df.tail(20)
    ⇒ 소수점 둘째자리까지만 보면 좀 더 심플합니다.
    • [코드스니펫] 소수점둘째자리

      ```python
      pd.options.display.float_format = '{:.2f}'.format
      ```
      pd.options.display.float_format = '{:.2f}'.format

3. Pandas 실전

  • 1) 어제 오른 종목들만 골라보기

    df[df['change_rate'] > 0]
  • 2) per가 0 인 종목들을 제거하기

    df = df[df['per'] > 0]
  • 3) 순이익, 종가를 추가하기
    👉 per = 시가총액 / 순이익 = 주가 / 주당순이익

     df['earning'] = df['marketcap'] / df['per']
     df['close'] = df['per'] * df['eps']
  • 4) date 컬럼을 없애기

    del df['date']
  • 5) pbr < 1 & 시총 1조 이상 & per < 20 을 추려보기

    cond = (df['marketcap'] > 1000000000000) & (df['pbr'] < 1) & (df['per'] < 20)
    df[cond]

    ⇒ 시총이 큰 순서대로 보기

    df[cond].sort_values(by='marketcap', ascending=False)

    ⇒ 평균, 표준편차 등의 정보를 보기 (함께하기)

    df[cond].describe()

4. 해외주식 다루기 - yfinance

🌎 시작하기 전에 코드 창을 깔끔하게 정리해볼까요?
  • 1) yfinance 라이브러리 설치하기 ⇒ 우선, yfinance 를 가져와야 합니다.
    pip install yfinance
  • 2) yfinance 실행해보기
    👉 아주 기초적인 내용을 먼저 둘러보겠습니다.
    ⇒ 우선, 라이브러리를 불러옵니다.
    import yfinance as yf
    company = yf.Ticker('TSLA')
    company.info

🌎 전체 사용법을 둘러보고 싶다면 → https://pypi.org/project/yfinance/

  • 1) 기본 정보 얻기 ⇒ 예) 회사명, 산업, 시가총액, 매출
    name = company.info['shortName']
    industry = company.info['industry']
    marketcap = company.info['marketCap']
    revenue = company.info['totalRevenue']
    
    print(name,industry,marketcap,revenue)
  • 2) 재무제표에서 3년치 데이터 얻기 ⇒ 대차대조표, 현금흐름표, 기업 실적
    company.balance_sheet
    
    company.cashflow
    
    company.earnings
  • 3) 그 외 정보들 ⇒ 주주정보, 애널리스트 추천 등
    company.institutional_holders
    
    company.recommendations
    
    company.calendar
    news = company.news
    
    for n in news:
      print(n['title'])
profile
Walk on the water!

0개의 댓글