본문 바로가기
프로그램/SKT FLY AI

SKT FLY AI : 1일차 - 끄적이는 글(2). pandas

by hsloth 2023. 6. 26.

Pandas란

  • 데이터 조작 및 분석을 위한 파이썬 프로그래밍 라이브러리
  • 넘파이를 기반으로하며 처리 속도가 빠르다.

Series 객체

  • 1차원 배열 구조를 가지며, index를 가진다
  • dtype 속성과 shape 속성 등을 가진다.

DataFrame 객체

  • 2차원 배열 구조를 가지며, 인덱스를 가진다.
  • 행과 열로 구성되고, 각 열은 이름을 가진다.
  • 각 열은 각각의 데이터 타입을 가지며, Series 객체로 표현할 수 있다.
  • dtype 속성과 shape 속성 등을 가진다.
# pandas 설치
! pip install pandas

import pandas as pd

ser = pd.Series([1,2,3], index=['a','b','c'])
ser # a : 1, b:2, c:3, dtype: int64

ser.loc['a'] # 1

ser.loc['b':'c'] # b:2, c:3, dtype: int64
ser.loc[['a','c']]

ser.loc[[True, False, True]] # a:1, c:3, dtype: int64

ser.loc[ser != 2] # a:1, c:3, dtype: int64 # 2는 출력하지 않는다.

ser.iloc[1] # 2. index로 값을 찾는다.

ser.iloc[1:3] # b:2, c:3, dtype: int64

ser != 2 # a:True, b:False, c:True, dtype: bool

DataFrame


  • shape : 데이터의 행과 열의 수를 튜플 자료형으로 정의
  • dtypes : 각 열의 데이터 타입
  • columns : 칼럼명
  • index : 행의 인덱스
  • head() : 데이터 프레임의 처음부터 설정한 개수만큼 표시
  • tail() : 데이터 프레임의 끝에서 설정한 개수만큼 표시
  • info() : 데이터 프레임의 정보를 표시
  • describe() : 각 열의 통계 정보를 표시

# 딕셔너리 이용
data = {
'Name':['Jackson', 'Emma', 'Noah', 'James'],
'Wight':[68, 74, 77, 78],
'Option':[True, True, False, False],
'Rate':[0.21, 1.1, 0.89, 0.91],
'Type':['A','A','C','C']
}
df = pd.DataFrame(data)

# 배열 이용
data = [ [1, 10, 100], [2,20,200], [3,30,300] ]
df = pd.DataFrame(data, index=['r1', 'r2', 'r3'], columns=['c1','c2','c3'])



df.loc['r2', :] # c1: 2, c2: 20, c3: 200, Name: r2, dtype: int64

df.loc[['r2','r3'], 'c2':'c3'] # 새로 r2, r3를 행으로 해서 Df생성
df.loc[['r1','r3'], ['c1','c3']]

df['c2'] > 10 # r1:False, r2:True, r3:True, Name: c2, dtype: bool

df.loc[df['c2'] > 10]

# 연산
df.loc[(df['c1']>1)]

df.loc[(df['c1']>1) & (df['c3'] < 300)]

csv파일 읽기

penguins = pd.read_csv('./datasets/penguins.csv')

print('type :', type(penguins))    # type : <class 'pandas.core.frame.DataFrame'>
print('shape :', penguins.shape)    # shape : (344, 7)

xlsx파일 읽기

penguins = pd.read_excel('./datasets/penguins.xlsx',
            sheet_name='Sheet1', engine='openpyxl')

Pandas + Matplotlib


import pandas as pd
import matplotlib.pyplot as plt

csv = './animation.csv'
df = pd.read_csv(csv, index_col=0, parse_dates=['Date'])
df.head()

plt.style.use('ggplot')
plt.rc('font', family='NanumBarunGothic')
fig = plt.figure(figsize=(10,4))
ax = fig.add_subplot(111)
ax.plot(df.index, df['TOEI ANIMATION'], label='TOEI ANIMATION')
ax.plot(df.index, df['IG Port'], label='IG Port')
ax.set_title('주가 등락률 2년간 추이')
ax.set_xlabel('년월')
ax.set_ylabel('주가등락률')
ax.legend() # 범례
plt.show()