4.2 pandas/matplotlib 기초

소리·2023년 10월 1일
0

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 탭으로 사용 설명을 볼 수 있다.
  • 그래프 공식을 함수에 담으면 코드를 간결하게 쓸 수 있고, 쉽게 불러올 수 있다는 장점이 있다.
profile
데이터로 경로를 탐색합니다.

0개의 댓글