본문 바로가기

프로그래밍/python

파이썬 pandas 기초 정리 데이터 읽고 쓰기..1

반응형

파이썬 pandas 기초 정리..1

 

본 포스팅은 https://www.learndatasci.com/tutorials/python-pandas-tutorial-complete-introduction-for-beginners/ 를 참고하여 한국말로 재정리 한 포스트 입니다.

 

판다스의 기능들을 pdf로 묶은 경로입니다. 이것도 한번 봐보시면 도움이 되실 겁니다.

pandas.pydata.org/Pandas_Cheat_Sheet.pdf

판다스 10분 완성 

dataitgirls2.github.io/10minutes2pandas/

 

판다스란 무엇인가?

 

판다스는 데이터를 정리하고 변형시키고 분석하도록 도와줍니다.

예를들면, CSV 파일에 저장된 데이터들을 탐구하고 싶을 때 그 정보들을 DataFrame 형식으로 추출하면서 다음과 같은 일들을 합니다.

 

  • 통계를 계산하며 각 열에 속해있는 데이터들의 평균값, 중간값, 최소값, 최대값을 구하며 또는 A열과 B열이 비슷한지,  C열 값의 분포도는 어떤지 등을 알 수가 있습니다.
  •  
  • 빠져 있는 데이터를 지우거나 필터링을 통해 정리가 가능합니다.
  •  
  • 데이터를 Matplotlib, Plot bars, histograms, lines 등을 이용해 시각화가 간능합니다.
  •  
  • 정리되고 변형된 데이터들을 CSV또는 데이터베이스에 저장합니다.

 

판다스의 핵심 컴퍼넌트: Series, DataFrames

 

두개의 핵심적인 판다스의 요소는 Series 와 DataFrames입니다.

Series는 하나의 열을 나타내고 DataFrame은 다차원 테이블(multi-dimensional table)을 나타냅니다.

 

DataFrame과 Series는 서로 비슷한 형식이기에 이것들을 같이 조합하고 활용해서 빈 곳을 채우거나 평균치를 구하는 등을 할 수가 있습니다.

 

 

간단하게 DataFrames를 만들어보기

DataFrame을 만드는 방법은 여러가지가 있습니다. 하지만 여기에서 좋은 방법은 간단하게 파이썬의 dict를 이용하는 법입니다.

 

여기에서 apple와 orage를 판매한 데이터가 있다고 가정합시다. 여기서 행 데이터로 각각의 과일들이 담기고 열 데이터로 구매자별 데이터를 담고 싶다고 가정합니다. 그렇다면 pandas를 이용하기 위한 dictionary 데이터의 모습은 다음과 같습니다.

 

data = {
    'apples': [3, 2, 0, 1], 
    'oranges': [0, 3, 7, 2]
}

 

그다음 pandas의 DataFrame 생성자에 넣어보겠습니다.

purchases = pd.DataFrame(data)
print(purchases)

 

다음과 같이 data안에 각각의 (key, value) 는 DataFrame의 column값으로 구성이 되어집니다.

 

DataFrame의 index는 숫자로 0-3까지 나타내지고 있는데, 여기에 DataFrame을 구성할 때 특별한 값을 넣어줄 수 있습니다. 다음과 같이 구매자의 이름을 index란에 리스트형식으로 넣어줍니다.

purchases = pd.DataFrame(data, index=['June', 'Robert', 'Lily', 'David'])
print(purchases)

 

이제 구매자의 이름을 이용해서 거기에 맞는 값을 출력할 수 있습니다.

purchases.loc['June']

 

 

data를 읽는 방법

여러 파일 포맷에 저장된 데이터를 DataFrame 으로 변환시키는 것은 쉽습니다. 다음의 예제에서 apples와 orages데이터를 계속 이용하면서 읽는 방법을 보여드리겠습니다.

다음 예제에 나오는 파일들은 아래의 링크에 있습니다.

github.com/LearnDataSci/articles/tree/master/Python%20Pandas%20Tutorial%20A%20Complete%20Introduction%20for%20Beginners

 

 

 

CSV 에서 데이터 읽기

df = pd.read_csv('purchases.csv')
print(df)

CSV에는 DataFrames 처럼 인덱스가 없기때문에 처음 데이터를 읽을 때 index_col 을 이용합니다.

 

df = pd.read_csv('purchases.csv', index_col=0)
print(df)

 

JSON에서 데이터 읽기

 

JSON 파일은 근본적으로 python의 dict 형식을 이용하기 때문에 pandas는 쉽게 데이터를 읽을 수 있습니다.

df = pd.read_json('purchases.json')
print(df)

SQL database에서 데이터 읽기

 

SQL 데이터베이스를 통해서 데이터를 읽고 있다면 pysqlite3 를 설치해야합니다. 

sqlite3은 데이터베이스와의 연결을 위해 사용됩니다. 따라서 첫번재로 SQLite 데이터베이스에 연결합니다.

import sqlite3
con = sqlite3.connect("database.db")

SQLite 데이터베이스 파일은 purchases라는 테이블에 저장돼 있으며, index는 "index"라는 column에 저장돼 있습니다.

SELECT 쿼리를 다음과 같이 입력함으로써 테이블을 불러올 수 있습니다.

df = pd.read_sql_query("SELECT * FROM purchases", con)
print(df)

CSV처럼 index_col='index' 를 이용하여 index필드를 설정할 수 있습니다.

df = df.set_index('index')
print(df)

set_index()를 이용해서 어느 column에서나 어느 타이밍에 Series와 DataFrame을 인덱싱을 하는것은 매우 일반적인 task로써 데이터 조작에 편의성을 가져다 줍니다.

 

CSV JSON SQL로 컨버팅하기 

이제 데이터를 정리하고 저장하고 싶을 때는 이전에 읽었을 때랑 비슷하게 저장하는 커맨드가 있습니다.

df.to_csv('new_purchases.csv')

df.to_json('new_purchases.json')

df.to_sql('new_purchases', con)

JSON과 CSV로 저장할 때 적절한 파일 확장자와 이름을 넣어주어야 합니다. SQL에서는 새로운 파일을 만들지는 않지만 이전의 con 변수에서 사용하고 있는 db파일에 데이터를 입력하게 됩니다.

 

그 다음에는 현실에 있는 데이터를 이용해서 좀 더 디테일하게 데이터를 조작하는 법을 배우도록 하겠습니다.

반응형