Pandas 기초
import pandas as pd
Series : Pandas의 데이터를 구성하는 기본
- index, value로 구성
- 시리즈는 한 타입의 데이터만 가질 수 있다.
시간이용 : pd.date_range("20230101", period=6)
DataFrame : 가장 많이 사용되는 데이터형
- series 한줄 한줄이 모여 데이터프레임을 만든다.
- index, column, value로 구성
활 용
데이터 프레임 읽기
- df.index
- df.columns
- df.head() : 데이터프레임 앞 5개 행 출력
- df.info() : 기본정보
- df.describe() : 통계적 정보
[딕셔너리 안의 리스트 형태]
left = pd.DataFrame({
'key' : ['K0', 'K4' ,'K2' ,'K3'],
'A' : ['A0', 'A1' ,'A2' ,'A3'],
'B' : ['B0', 'B1' ,'B2' ,'B3']
})
[리스트 안에 딕셔너리 형태]
pd.DataFrame([
{'key' : 'K0', 'C' : 'C0', 'D':'D0'}
])
데이터 프레임 분석하기
- df.sort_values(by='columns', ascendding=False) : columns 기준으로 (오름/내림차순) 정렬
- df['columns'] : 특정 컬럼만 출력
- df[n:m] : 컬럼 슬라이싱 -> 일부 추출
- df.loc : 이름으로 위치 접근
- df.iloc : 번호(숫자)로 위치 접근
- df['E'].isin(['two', 'four']) : 특정 요소가 있는지 확인
- df.set_index 인덱스 재정비(변경)
예) df.set_index('col', inplace - True)
- del dataframe['columns''] : columns 삭제
- df['col'].drop(['col'], axis = 0/1) : columns 삭제
데이터 프레임 병합하는 방법 : pd.concat, pd.merge, pd.join
- pd.merge(left, right, how = '', on = 'columns') : 데이터프레임 병합
[how]
outer : 둘다 손상되지 않도록 기준으로 병합
inner : 두 데이터의 공통분모만 병합
left, right = 각자 기준으로
🔔 df.apply : 함수 적용
예) df['A'].apply('sum') : A columns에 합계 함수 적용한 값 출력
예) df['A'].apply('mean') : A columns에 평균 함수 적용한 값 출력
예) df['A', 'D'].apply('mean') : 여러 열로도 가능
▷ 람다 함수로 사용 가능
def plusminus(num):
retrun 'plus' if num > 0 else 'minus'
df['A'].apply(plusminus)
# 위와 동일하며 람다를 쓸 경우 훨씬 줄일 수 있다.
df['A'].apply(lambda num: 'plus' if num > 0 else 'minus')
Matplotlib
- 파이썬의 대표 시각화 도구
주피터 노트북 유저의 경우 %matplotlib inline 옵션으로 결과가 out session에 나오게 한다.
※ matpltlib 없이도 판다스로 그래프를 나타낼 수 있긴 함
예) df['cols].plot(kind = 'bar',figsize = (10, 10))
기초
import matplotlib.pyplot as plt
from matplotlib import rc
rc(''font', family = Malgu Gothic
%matplotlib inline
= get_ipyon().run_line_magic('matplotlib', 'inline')
그래프 요소
plt.figure(figsize = (10, 6))
plt.plot(t, np.sin(t), label = 'sin')
plt.plot(t, np.cos(t), label = 'cos')
plt.grid(True) #격자 유무
plt.legend(loc=2) #범례
plt.text(x, y, word, fontsize) #(x,y)에 글 적기
#오차가 큰 데이터 5개씩만 마커 옆에 인덱스를 넣는 식
예) for n in range(5):
plt.text(df['a'][n]*1.02, df['b'][n]*0.98, df.index[n])
plt.title('title')
plt.xlabel('name')
plt.ylabel('name')
plt.show()
Numpy를 이용한 1차 직선 만들기
- np.plotfit : 직선을 구성하기 위한 계수 계산
- np.poly1d : polyift으로 찾은 계수로 파이썬에 사용할 함수를 만들어 줌
예) fp1 - np.polyfit(df['number'], df['sum'], 1)
f1 = np.poly1d(fp1)
f1(4000)
- np.linspace(a, b, n) : a에서 부터 b까지 n개의 등간격 데이터 생성
참고
- 주피터 노트북에서 shift 탭으로 사용 설명을 볼 수 있다.
- 그래프 공식을 함수에 담으면 코드를 간결하게 쓸 수 있고, 쉽게 불러올 수 있다는 장점이 있다.