파이썬에서 ggplot2(지지플랏) 사용하기

목차

    2019. 7. 14. 10:45

    파이썬에는 다양한 데이터 분석 관련 패키지들이 있습니다. 데이터 시각화 관련된 패키지들도 종류가 많습니다. 어느 것을 우위로 뽑기는 어려우며 각각 장단점이 있습니다. 최근에 R의 ggplot 패키지를 접할 기회가 생겼는데, 생각보다 직관적이고 편리한 문법에 매료됐습니다. 그리고, 파이썬에서도 ggplot2를 사용하고 싶어 졌습니다.

    오늘은 파이썬에서 ggplot2(지지 플랏)을 사용하는 방법에 대해서 알아보겠습니다.

     

     

    R에는 시각화 관련 패키지로 ggplot2를 가장 많이 사용합니다. 거의 독보적이라고 할 수 있는데요. 처음에는 문법이 어색하고 사용하기 불편했지만, 알수록 좋은 패키지입니다.
    ( 참조: ggplot의 그래프 구조와 문법 알아보기ggplot 문법 알아보기, aes(aesthetic)이란?ggplot의 geom함수, geometry에 대해서 알아보기 )

     

    파이썬에도 ggplot2의 문법을 사용할 수 있게 해 주는 패키지가 있습니다. plotnine이라는 패키지인데요. plotnine은 matplotlib 패키지를 기본으로 하고 ggplot2의 문법을 사용할 수 있게 해 주는 패키지입니다. 하지만 파이썬의 문법이 R과는 다르기 때문에 완전히 일치하지는 않습니다. 가장 큰 차이점은 아래와 같습니다.

     

     

    1. ggplot을 괄호로 감싸줘야 합니다.

    ggplot의 +기호를 파이썬에서 어떻게 사용할 수 있나 궁금했는데, 결론적으로 사용이 가능합니다. 다만 ggplot 구문 전체를 괄호로 감싸줘야 합니다.

    from plotnine import *
    import matplotlib.pyplot as plt

    fig = plt.Figure()


    ( ggplot(df, aes(x="year")) 
      + geom_bar(stat="count")
    )

     

    특이사항으로는 matplotlib패키지를 기본으로 하기 때문에, 이를 import 해야 합니다.

     

    ggplot_바그래프
    plotnine-바그래프

     

    2. 변수명을 사용할 때 큰따옴표를 넣어야 합니다

     

    R에서는 변수명에 대부분 쌍따옴표를 넣지 않습니다. 가끔 특이하게 쌍따옴표를 넣어야 하는 경우가 있어야 헷갈립니다. 파이썬에서는 변수명에 쌍따옴표를 넣고, 이는 여기서도 동일합니다.

    from plotnine import *
    import matplotlib.pyplot as plt

    fig = plt.Figure()

    df["year"] = df["year"].astype(str)

    (ggplot(df, aes(x="sessions", y="bounceRate", fill="year"))
     + geom_point()
     )

     

    위의 코드에서 year는 numeric입니다. R에서는 factor함수를 이용해서 fill = factor(year)로 작성하면 되지만, 파이썬이니 위에서 스트링으로 바꿔주었습니다. 파이썬에서 geom_point를 그리니 아래와 같이 나왔습니다.

     

    geom_point-실행화면
    파이썬-plotnine-geom_point-그래프

     

    pltnine을 사용해보니 ggplot은 R에서 사용하는 것이 정신건강에 좋겠습니다. plotnine도 파이썬에서 ggplot의 문법을 충실히 구현하였지만, 차이점이 있습니다. 그리고 R보다 속도가 느려 답답함이 느껴집니다. 결국 데이터를 R에 옮겨와서 하는 것이 훨씬 덜 스트레스받고 사용할 수 있을 것 같다는 결론에 이르렀습니다.

     

     

    오늘은 이렇게 파이썬에서 ggplot2를 사용하는 방법에 대해서 알아보았습니다. plotnine이라는 패키지를 이용하여 ggplot2의 문법을 사용할 수는 있지만, 사용하다 보면 생각보다 심란합니다. 그냥 ggplot2는 R에서 사용하는 것이 좋겠습니다. 문법이 동일하지는 않지만, seaborn을 사용하는 것이 가장 편리했습니다.