pandas-td0.8.0에 magic function이 도입되어 더욱 편리해졌습니다!

pandas-td에 magic function이 도입되어 더욱 편리해졌습니다! 라는 이야기를 씁니다.

pandas라든지가 뭔가 하는 이야기는 이쪽의 TreasureData와 Pandas와 Jupyter로 대화식으로 데이터를 시각화합니다. 를 봐 주세요.

그러나 pandas를 간단하게 말하면 통계 분석이라 할 수 있는 라이브러리이지만, 여러가지 데이터 소스에 접속하기 위한 인터페이스로 할 수 있어 편리합니다.

개인적인 유스 케이스로서는, 고객의 문의가 있으면, TD상의 로그라든지 RDB라든지로부터 필요한 정보를 가져와 붙이기도 합니다. 그리고는 그 조사한 결과를 jupyter를 사용하고 있으므로, github로 간단하게 공유할 수 있도록(듯이) 하고 있습니다.

그리고 이번 pandas-td 0.8에서 도입된 magic function 은 사전에 함수를 만들어 두면 % , %%만으로 그 함수를 호출할 수 있는 기능입니다.
이것만으로는, 무엇이 편리한지 알기 어렵기 때문에, 실제로 사용해 봅시다.

지금까지



는, 아래와 같이 1개 1개의 접속 정보를 만들어, 함수를 사용해, 라고 copipe에서는 끝나지만 필요한 기재가 상당히 있어, 단지 SQL을 발행하는 것만으로도 Python력이 필요했습니다.
import os
import pandas_td as td

# Initialize connection
con = td.connect(apikey=os.environ['TD_API_KEY'], endpoint='https://api.treasuredata.com/')
engine = con.query_engine(database='sample_datasets', type='presto')

# Read Treasure Data query into a DataFrame.
df = td.read_td('select * from www_access', engine)

Magic Function을 사용하면



이것입니다.
%td_use sample_datasets

%%td_presto
select count(1) cnt
from nasdaq

게다가 %%td_use 뒤에 테이블명을 치면 스키마도 볼 수 있다
nasdaq

image0

게다가 컬럼명의 탭 보관도 유효하게 된다!

image3
%matplotlib inline 를 활성화하고 %%td_presto_plot 의 매직 코멘트로 쿼리를 던지면 즉시 시각화 해줍니다! !

image4

편리.

어떻게 사용합니까?


  • 환경 변수에 APIKEY 설정
  • $ export TD_API_KEY=1234/abcd...
    
  • 매직 코멘트를 자동으로 로드시켜 둔다 (수동으로도 좋지만)
  • ~/.ipython/profile_default/ipython_config.py 에 다음 내용을 저장한다.
    c = get_config()
    
    c.InteractiveShellApp.extensions = [
        'pandas_td.ipython',
    ]
    

    어쩐지 말하지만,



    이것만으로, 나머지는 Jupyter(ipython)를 기동시키면, 자동으로 로드되어 잡을 수 있게 되어요!

    image1

    쿼리도!
    image2

    탭 보관도!
    image3

    간단한 시각화도!
    image4

    아직 조금 귀찮은 곳



    취득한 데이터의 캐릭터 라인이 길거나, 컬럼수가 많거나로 생략 표시되어 있는 경우에, 조금 컬럼의 데이터를 보고 싶을 때에,
    일일이 커맨드 실행하는 것이 까다롭다.
    지금은 to_csv에서 CSV 출력을하고 편집기에서 마지막으로 볼 수 있습니다.

    그리고는, x = %td_databases 라고 하는 대입은 할 수 있지만, x = %%td_presto 라고 하는 방법으로 대입을 할 수 없기 때문에, 거기가 할 수 있는 방법이 있으면 기쁘다.

    너무 스크립트적인 내용을 필요로 하는 경우에는 이것으로 충분하다고 하면 충분하네요.

    짱짱.

    보충



    @k24d 씨에게 _ 를 사용하면 이전 실행 결과의 값을 대입할 수 있거나 Out[5]의 결과를 대입할 수 있음을 가르쳐 주셨습니다.

    즉, 아래에
    %%td_presto
    select
      td_date_trunc('hour', time) as time,
      COUNT(1) as code200_cnt
    from
      www_access
    WHERE code = 200
    group by
      1
    
    x = _
    

    또는
    x = Out[40]
    

    에서 할 수 있었습니다!
    편리! !

    좋은 웹페이지 즐겨찾기