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()