2022. 12. 23. 17:28ㆍ자격증(다다익선)/파이썬
https://chanytv.tistory.com/137
https://chanytv.tistory.com/138
https://chanytv.tistory.com/139
[파이썬] Pandas와 DataFrame
Pandas는 일종의 파이썬용 Excel 개념 인 듯하다. Pandas의 DataFrame를 이용하면 Excel 형식처럼 만들 수 있다.
일단 작업을 하려면 역시나 환경 구성을 해줘야 한다.
import pandas as pd
import numpy as np
pandas와 numpy를 불러왔다. 넘파이는 찾아보니 'Numerical Python'의 줄임말이라 한다. 뜻 그대로 '수의 관한 파이썬'이다. pandas도 찾아보니 'Panel Data System'이라고 한다.
기초적인 구문으로 테스트를 해보자.
data = {
'name' : ['영수','철수','영희','소희'],
'age' : [20,15,38,8]
}
df = pd.DataFrame(data)
# 행 추가하기
doc = {
'name':'세종',
'age':14,
}
df = df.append(doc,ignore_index=True)
# Colums 추가하기
df['city'] = ['서울','부산','부산','서울','서울']
# 특정 Column만 뽑아보기
df[['name','city']]
# 원하는 조건에 맞는 행만 뽑아보기
df[df['age'] < 20]
# 특정 행에서의 뽑아보기
df.iloc[-1,0] # 마지막 행
df.iloc[0,0] # 첫 행
쓰다보면 익숙해지겠지만, 특정 cloumn을 뽑아내는 방식은 암기가 필요하다고 한다. 대괄호 두 번.
다 쓰긴 쓰지만 뭣보다도 마지막 '특정 행에서의 뽑아보기'를 가장 많이 쓴다고 하니 암기가 필요할 듯하다.
iloc = integer location = 정수 로케이션
df.sort_values(by='age',ascending=True)
엑셀을 좀 다루다 보니 뭣보다도 가장 많이 쓰는 요소 중에 하나는 역시나 정렬이다.
해당 구문은 필히 암기를 해야 할 듯하다.
True = 내림차순 / False = 오름차순 | ※앞에 대문자 안 하면 오류남.※
sort_ values = 분류 값
# 조건에 맞는 열을 추가하기
np.where(df['age'] > 20,'성인','청소년')
df['is_adult'] = np.where(df['age'] > 20,'성인','청소년')
더불어 정렬만큼이나 많이 사용하는 것이 특정 조건의 값을 추가하는 기능 이 또한 필히 암기를 해야 할 듯하다.
그 외에 많이 쓰는 구문들은 아래와 같다.
df['age'].mean()
df['age'].max()
df['age'].min()
df['age'].count()
똑같은 결과 값을 불러오더라도 방식을 여러 가지다. 아래 내용 참고
# 서울에 사는 사람 중 나이가 가장 많은 사람은 몇 살?
# 1
df[df['city'] == '서울']['age'].max()
# 2
df[df['city'] == '서울'].sort_values(by='age',ascending=False).iloc[0,1]
'=='은 이미 '='을 코드에서 사용 중이라 '=='형태로 쓴다고 한다.
엑셀의 내용을 복붙 하면 당연히 구문이 엉망이 될 것이다. 그래서 pandas에서는 엑셀을 불러올 때 아래와 같은 명령어를 사용해야 한다.
pd.read_excel('종목데이터.xlsx')
df = pd.read_excel('종목데이터.xlsx')
df.head() # 위에서부터 아래로
df.tail() # 아래에부터 위로
df.head(20) # 위에서부터 20개만
df.tail(20) # 아래에서부터 20개만
소수점 아래 반올림도 있다 아래 코드 참조
pd.options.display.float_format = '{:.2f}'.format
아마 '{;.2f}'에서 숫자만 변경하면 셋째, 넷째 반올림 가능 할 듯하다. (아직 안 해봄.)
기초적인 기능은 여기까지다. 이 기능들만 알면 아래처럼 다양한 값들을 쉽게 불러올 수 있다.
(막상 써보니 엑셀보다 더 편하게 값을 도출할 수 있는 부분도 많은 것 같다.)
# 어제 오른 종목들만 골라보기
df[df['change_rate'] > 0]
# per가 0 인 종목들을 제거하기
df = df[df['per'] > 0]
# 순이익, 종가를 추가하기
df['earning'] = df['marketcap'] / df['per']
df['close'] = df['per'] * df['eps']
# date 컬럼을 없애기
del df['date']
# pbr < 1 & 시총 1조 이상 & per < 20 을 추려보기
cond = (df['marketcap'] > 1000000000000) & (df['pbr'] < 1) & (df['per'] < 20)
df[cond]
# 시총이 큰 순서대로 보기
df[cond].sort_values(by='marketcap', ascending=False)
# 평균, 표준편차 등의 정보를 보기 (함께하기)
df[cond].describe()
'자격증(다다익선) > 파이썬' 카테고리의 다른 글
[파이썬] Open API (0) | 2022.12.28 |
---|---|
[파이썬] yfinance을 이용한 해외 주식 정보 분석 (0) | 2022.12.24 |
[파이썬] openpyxl / 파일 업로드, 다운로드 (0) | 2022.12.16 |
[파이썬] 스크래핑(크롤링) (0) | 2022.12.15 |
[파이썬] 변수&기본연산 / 리스트,딕셔너리 / 함수 / 조건문 / 반복문 (0) | 2022.12.15 |