빅데이터 분석

  • 빅데이터 분석이 뭐지 하고 그냥 궁금증만 가지고 있었는데 이번 네이버 핵데이 주제에도 관련성이 있을 수 있겠다는 생각이 들어서 공부해보게 되었다.
  • 관련 강의로 홍참길 교수님이 추천해주신 캐글 강의를 통해 pandas를 이해하고 최종적으로 지리 데이터 분석인 geospatial Analysis까지 진행해보려 한다.
  • 캐글 강의를 따라가는 내용이 담겼으니 자세한 내용은 캐글 강의 링크를 따라가도 좋을 것 같다.
  • 캐글 pandas 강의 링크
  • 그럼 지금부터 pandas 1강 Creating, Reading, Writing을 따라가보자!

Introduction

  • Pandas는 Python으로 데이터를 분석하기 위한 Library이다.

Creating Data

  • Pandas에는 2가지 핵심 object으로 DataFrame과 Series가 있다.

DataFrame

  • DataFrame이란 2차원 어레이로 value를 가지고 있는 entries들이 있고 각각의 entry는 이에 해당하는 row와 column 값을 가지고 있다.
  • 예를 들어, 다음과 같은 데이터 프레임이 생성된 경우에는
import pandas as pd
pd.DataFrame({'Yes': [50, 21], 'No': [131, 2]})
  • 아래 그림과 같은 어레이가 생성된다.
  Yes No
0 50 131
1 21 2
  • 위의 표에서 보듯이 “0, No”에 해당하는 entry 값은 131이다.
  • 여기서 entries의 값은 integer에 국한되지 않는다.
pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 'Sue': ['Pretty good.', 'Bland.']})
  • DataFrame은 pd.DataFrame()이라는 생성자를 이용해서 만들어지게 된다.
  • 이 때 내부의 내용들은 Dictionary의 형태로 지정되는데 이때 key는 column값이 되고 각각의 값은 list로 주어지게 된다.
  • 이때 row는 자연스럽게 0,1,2,3,… 이런식으로 주어지게 되는데 이때 row의 label도 우리가 지정해줄 수 있다.
  • row의 label을 DataFrame의 index라고 한다.
  • 이 같은 constructor의 parameter로 지정해줄 수 있다.
  Bob Sue
ProductA I liked it. Pretty good.
ProductB It was awful Bland.
  • 위와 같은 표를 생성해주고 싶으면 아래와 같이 index 값을 지정해주면 된다.
pd.DataFrame({'Bob': ['I liked it.', 'It was awful.'], 
            'Sue': ['Pretty good.', 'Bland.']},
            index=['Product A', 'Product B'])

Series

  • Series는 그냥 data 값들의 열을 의미한다.
  • DataFrame이 table이라면 이건 그냥 list와 같다.
  • Series는 column이 하나인 data frame과 같다.
  • 그래서 data frame과 같이 Column값을 변경해줄 수 있는데 이때도 동일하게 index을 이용하면 된다.
  • 만일 아래와 같은 데이터를 얻고 싶다면
Flour     4 cups
Milk       1 cup
Eggs     2 large
Spam       1 can
Name: Dinner, dtype: object
  • 다음과 같이 코드를 짜주면 된다.
ingredients = pd.Series(
    ['4 cups', '1 cup', '2 large', '1 can'],
    index=['Flour', 'Milk', 'Eggs', 'Spam'],
    name='Dinner', dtype= 'object'
)
  • Series를 여러개 붙여놓으면 DataFrame이라고 보면 된다.

Reading data files

  • 이번에는 데이터를 생성하는 것 대신 존재하는 데이터를 읽어보자.
  • 데이터는 다양한 포맷을 가지고 있을 수 있는데 그중에 가장 humble한 CSV 파일을 읽어보자.
  • CSV 파일을 읽으면 다음과 같은 내용이 보이게 된다.
Product A,Product B,Product C,
30,21,9,
35,34,1,
41,11,11
  • 모든 데이터는 , 로 구분되어 있어서 이를 Comma-Separated Values, CSV라 칭하게 됐다.
  • CSV 파일을 읽기 위해서는 pd.read_csv() 함수를 사용하면 된다.
wine_reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv")
  • 위와 같이 파일을 읽어오게 되면 shape을 통해 데이터의 형태를 확인할 수 있다.
wine_reviews.shape

(129971, 14)
  • 이것은 130000에 가까운 record(row)에 14개의 column가 있는 데이터 형태를 가지고 있다는 의미이다. 8 이때 head()함수를 이용하면 첫 5개의 row를 찾아서 보여준다.
wine_reviews.head()
  • pd.read_csv() 함수는 다양한 파라미터를 직접 입력할 수 있게 해준다.
  • 예를 들어, pandas가 index column을 생성해주는 게 아니라 하나의 column을 index column으로 사용하고 싶다면 아래와 같이 index_col을 명시해줄 수 있다.
wine_reviews = pd.read_csv("../input/wine-reviews/winemag-data-130k-v2.csv", index_col=0)
wine_reviews.head()

Write data files

  • 이제 여기서 만들어진 dataframe을 다시 csv 파일로 저장하기 위해서는 to_csv()함수를 사용하면 된다.
  • 다음과 같은 내용이 저장되어있는 DataFrame animals를 csv로 저장하려면
animals = pd.DataFrame({'Cows': [12, 20], 'Goats': [22, 19]}, index=['Year 1', 'Year 2'])
  • dataframe의 내장함수인 to_csv함수를 사용하면 된다.
animals.to_csv("cows_and_goats.csv")
  • 이상으로 첫 강의 따라가기를 마치겠다!
  • Exercise를 통해 배운 내용을 연습해보자!