파이썬 데이터 분석 | (Pandas)

이상우·2021년 8월 18일
0

Pandas

Series(1차원), Dataframe(2차원), Panel(3차원)과 같은 여러 데이터 구조를 생성하고 변경할 수 있도록 도와 주는 라이브러리로 안정적으로 대용량 데이터들을 쉽게 처리할 수 있습니다.

  • 데이터 처리와 분석을 위한 라이브러리
  • 행과 열로 이루어진 데이터 객체를 만들어 다룰 수 있음
  • 대용량의 데이터들을 처리하는데 매우 편리

Series(1차원) 객체

  • 1차원 배열과 같은 자료구조, index가 같이 출력됨
  • DataFrame의 한 개의 column에 해당하는 데이터의 모음 object, 즉 column vector를 표현
  • 정렬되지 않은 값

1.Series 생성

obj = Series(['a','b','c','d'])
obj

#출력값
0 a
1 b
2 c
3 d
dtype: object
  • index를 지정하여 series 생성
obj2 = Series([4,5,6,2]),index=['c','d','e','f'])
obj2

#출력값
c 4
d 5
e 6
f 2
dtype: Int64

2.Dictionary로 Series 생성

data = {
	'kim': 3400,
    'hong': 2000,
    'kang': 1000,
    'lee': 2400
    }
obj3 =pd.Series(data)

#출력값
hong 2000
kang 1000
kim 3400
lee 2400
dtype: Int64

누락된 데이터를 찾을 때 사용하는 함수:isnull, notnull
null=(값이 Nan 즉, 값이 없을경우) isnullnull인가를 묻기 때문에 True을 반환하고 값이 있을경우는 False를 반환.
notnullnull이 아닌지를 묻는 것이다. 값이 존재할 경우 True를 반환, 아닌 경우 True를 반환

Dataframe(2차원) 객체

Dataframe은 일반적으로 파일 혹은 웹페이지에 데이터가 저장되어 있어, 사용자 편의를 위해 파일 혹은 웹페이지에 저장된 데이터를 가져오는 함수를 제공한다.
저장된 데이터를 가져오는 방법은 세가지가 있다.

  • pd.read_excel("파일경로")
    판다스가 제공하는 read_excel함수는 엑셀 파일을 읽어 DataFrame 객체로 변환한다.

  • pd.read_csv("파일경로")
    read_csv 함수는 csv파일을 읽어 DataFrame 객체로 변환한다.

  • pd.read_html(url)
    read_html()함수는 웹페이지를 DataFrame으로 변환한다.

예시

# ch04/04_20.py
import pandas as pd 
url = "https://finance.naver.com/item/sise_day.nhn?code=066570" 
df = pd.read_html(url) 

DataFrame 인덱싱/슬라이싱

DataFrame은 가로축과 세로축이 있는 이차원 형태의 자료구조이기 때문에 행,열의 데이터를 얻어올 방법을 모두 사용할 수 있어야 한다.

  • DataFrame의 열 이름을 사용하는 방법
    그 열에 해당하는 데이터를 가져온다. 이때 가져온 데이터는 Series이다.
# ch04/04_21.py
data = {"open": [730, 750], "high": [755, 780], "low": [700, 710], "close": [750, 770]} 
df = DataFrame(data , index=["2018-01-01", "2018-01-02"]) 
print(df['open'])

#출력값
2018-01-01    737
2018-01-02    750
Name: open, dtype: int64
  • loc 메서드 사용하는 방법
    loc["인덱스명"]을 넘겨주면 해당하는 행의 데이터를 Series로 반환
# ch04/04_22.py
# 위와 같은 데이터
print(df.loc["2018-01-01"])

#출력값
Open      730 
High       755 
Low        700 
Close      750 
Name: 2018-01-01, dtype: int64
  • iloc 메서드 사용하는 방법
    인덱스가 없는 경우 iloc[index번호] 메서드를 사용하면 자동으로 맵핑되는 숫자 index로 값을 얻어올 수 있다.

loc와 iloc차이

DataFrame 객체에서 행을 가져올 때 loc나 iloc를 사용할 수 있는데 상황에 따라 적절한 메서드를 호출하는 것이 중요하다. 예를 들어 2018-04월의 일봉 데이터가 DataFrame 객체로 저장되어 있을 때 첫 번째 거래일의 일봉 데이터를 얻어와야 하는 경우를 생각해봅시다. 만약 날짜를 이용해서 첫 번째 거래일의 데이터를 얻어오려면 먼저 2018-04월의 첫 번째 거래일을 알아야 하는데 이는 쉬운 일이 아닙니다. 참고로 4월 1일은 일요일이어서 첫 번째 거래일은 4월 2일입니다. 이런 경우에는 iloc[0]을 사용해서 행 데이터를 가져가는 편이 좋다.

참고 사이트

https://eunguru.tistory.com/220 - Series 객체
https://wikidocs.net/21898 - 파이썬을 이용한 비트코인/4장 웹스크래핑과 Pandas/04-4

profile
구상한것을 구현할 수 있는 개발자가 되고 싶습니다.

0개의 댓글