[BigData] Pandas 기본
2023. 3. 14. 01:01ㆍComputer Sciences/BigData
Series
Pandas에서 제공하는 1차원 배열과 같은 자료구조이다. 파이썬의 딕셔너리나 리스트로 만들 수 있다.
import pandas as pd
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
s = pd.Series(data=d, index=['a', 'b', 'c'])
print(s)
# a 1
# b 2
# c 3
# dtype: int64
# 데이터를 딕셔너리로 쓰면서 인덱스가 맞지 않으면 NaN으로 입력된다.
d = {'a': 1, 'b': 2, 'c': 3, 'd': 4}
s = pd.Series(data=d, index=['x', 'y', 'z'])
print(s)
# x NaN
# y NaN
# z NaN
# dtype: float64
# 인덱스를 따로 지정하지 않으면 0부터 시작하는 정숫값 사용
l = [1, 2, 3, 4]
s = pd.Series(l)
print(s)
# 0 1
# 1 2
# 2 3
# 3 4
print(s[0]) # 1
s = pd.Series(l, index=['a', 'b', 'c', 'd'])
print(s)
# a 1
# b 2
# c 3
# d 4
# dtype: int64
d = {'a': (1, 2), 'b': (3, 4), 'c': (5, 6)}
s = pd.Series(d)
print(s)
# a (1, 2)
# b (3, 4)
# c (5, 6)
# dtype: object
# Pandas의 Series는 인덱싱이 다른 경우에도 알아서 인덱싱이 같은 값끼리 연산을 수행
mine = pd.Series([10, 20, 30], index=['naver', 'sk', 'kt'])
yours = pd.Series([10, 30, 20], index=['kt', 'naver', 'sk'])
merge = mine + yours
print(merge)
# kt 40
# naver 40
# sk 40
# dtype: int64
mul = mine * yours
print(mul)
# kt 300
# naver 300
# sk 400
# dtype: int64
DataFrame
Pandas에서 제공하는 2차원 형태의 자료구조이다. 딕셔너리를 사용해서 쉽게 만들 수 있다.
import pandas as pd
raw_data = {'col0': [1, 2, 3, 4],
'col1': [10, 20, 30, 40],
'col2': [100, 200, 300, 400]}
data = pd.DataFrame(raw_data)
print(data)
# col0 col1 col2
# 0 1 10 100
# 1 2 20 200
# 2 3 30 300
# 3 4 40 400
print(data['col0'])
# 0 1
# 1 2
# 2 3
# 3 4
# Name: col0, dtype: int64
# 인덱싱을 통해 접근한 리스트는 Series이다
# 즉, DataFrame은 여러 개의 Series로 구성된 2차원 자료구조이다.
print(type(data['col0']))
# <class 'pandas.core.series.Series'>
# 인덱스를 정해주지 않으면 기본적으로 0으로 시작하는 정숫값이 들어간다.
daeshin = {'open': [11650, 11100, 11200, 11100, 11000],
'high': [12100, 11800, 11200, 11100, 11150],
'low' : [11600, 11050, 10900, 10950, 10900],
'close': [11900, 11600, 11000, 11100, 11050]}
daeshin_day = pd.DataFrame(daeshin)
print(daeshin_day)
# close high low open
# 0 11900 12100 11600 11650
# 1 11600 11800 11050 11100
# 2 11000 11200 10900 11200
# 3 11100 11100 10950 11100
# 4 11050 11150 10900 11000
# DataFrame 객체 생성 시 columns 파라미터를 통해 컬럼 순서를 지정할 수 있다.
daeshin_day = pd.DataFrame(daeshin, columns=['open', 'close', 'high', 'low'])
print(daeshin_day)
# open close high low
# 0 11650 11900 12100 11600
# 1 11100 11600 11800 11050
# 2 11200 11000 11200 10900
# 3 11100 11100 11100 10950
# 4 11000 11050 11150 10900
# DataFrame 객체 생성 시 index 파라미터를 통해 인덱싱에 사용할 값을 지정할 수 있다.
date = ['16.02.29', '16.02.26', '16.02.25', '16.02.24', '16.02.23']
daeshin_day = pd.DataFrame(daeshin, columns=['open', 'close', 'high', 'low'],
index=date)
print(daeshin_day)
# open close high low
# 16.02.29 11650 11900 12100 11600
# 16.02.26 11100 11600 11800 11050
# 16.02.25 11200 11000 11200 10900
# 16.02.24 11100 11100 11100 10950
# 16.02.23 11000 11050 11150 10900
# DataFrame의 column에 접근할 때는 칼럼 이름으로 접근한다.
day_col = daeshin_day['open']
print(day_col)
print(type(day_col))
# 16.02.29 11650
# 16.02.26 11100
# 16.02.25 11200
# 16.02.24 11100
# 16.02.23 11000
# Name: open, dtype: int64
# <class 'pandas.core.series.Series'>
# DataFrame의 row에 접근할 때는 DataFrame.loc[key] 로 접근한다.
day_data = daeshin_day**.loc**['16.02.24']
print(day_data)
print(type(day_data))
# open 11100
# close 11100
# high 11100
# low 10950
# Name: 16.02.24, dtype: int64
# <class 'pandas.core.series.Series'>
'Computer Sciences > BigData' 카테고리의 다른 글
[BigData] 데이터 시각화 (0) | 2023.04.17 |
---|---|
[BigData] 데이터 정규화 (0) | 2023.04.17 |
[BigData] 데이터 이해 (1) | 2023.04.17 |
[BigData] Numpy 기본 (0) | 2023.03.13 |