Series(1차원), Dataframe(2차원), Panel(3차원)과 같은 여러 데이터 구조를 생성하고 변경할 수 있도록 도와 주는 라이브러리로 안정적으로 대용량 데이터들을 쉽게 처리할 수 있습니다.
obj = Series(['a','b','c','d'])
obj
#출력값
0 a
1 b
2 c
3 d
dtype: object
obj2 = Series([4,5,6,2]),index=['c','d','e','f'])
obj2
#출력값
c 4
d 5
e 6
f 2
dtype: Int64
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 즉, 값이 없을경우) isnull은 null인가를 묻기 때문에 True을 반환하고 값이 있을경우는 False를 반환.
notnull은 null이 아닌지를 묻는 것이다. 값이 존재할 경우 True를 반환, 아닌 경우 True를 반환
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은 가로축과 세로축이 있는 이차원 형태의 자료구조이기 때문에 행,열의 데이터를 얻어올 방법을 모두 사용할 수 있어야 한다.
# 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
# ch04/04_22.py
# 위와 같은 데이터
print(df.loc["2018-01-01"])
#출력값
Open 730
High 755
Low 700
Close 750
Name: 2018-01-01, dtype: int64
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