# Series를 활용한 데이터 생성
import pandas as pd
s = pd.Series(seq_data)
- Series()의 인자로는 시퀀스 데이터(seq_data)가 들어간다.
- 시퀀스 데이터로는 리스트와 튜플 타입의 데이터를 모두 사용할 수 있지만, 주로 리스트 데이터를 이용한다.
- Series 데이터에서는 세로축 라벨을 index라고 하고, 입력한 시퀀스 데이터를 values라고 한다.
s1 = pd.Series([10, 20, 30, 40, 50])
s1
# 0 10
# 1 20
# 2 30
# 3 40
# 4 50
# dtype: int64
s1.index # RangeIndex(start=0, stop=5, step=1)
s1.values # array([10, 20, 30, 40, 50], dtype=int64)
- NumPy의 경우 배열의 모든 원소가 데이터 타입이 같아야 했지만, Pandas의 경우에는 원소의 데이터 타입이 달라도 된다.
s2 = pd.Series(['a', 'b', 'c', 1, 2, 3])
s2
# 0 a
# 1 b
# 2 c
# 3 1
# 4 2
# 5 3
# dtype: object
- 데이터가 없으면, NumPy를 임포트한 후에 np.nan으로 데이터가 없다고 표시할 수 있다.
import numpy as np
s3 = pd.Series([np.nan, 10, 30]) # NaN: 결측치, missing values
s3
# 0 NaN
# 1 10.0
# 2 30.0
# dtype: float64
- Series 데이터를 생성할 때, 인자로 index를 추가할 수 있다.
s = pd.Series(seq_data, index = index_seq)
- 인자로 index를 명시적으로 입력하면 Series 변수(s)의 index에는 자동 생성되는 index 대신 index_seq가 들어가게 된다.
- index_seq도 리스트와 튜플 타입의 데이터를 모두 사용할 수 있지만, 주로 리스트 데이터를 이용한다.
- 주의: seq_data 항목의 개수와 index_seq 항목의 개수는 같아야 한다.
index_date = ['2018-10-07', '2018-10-08']
s4 = pd.Series([200, 195], index = index_date)
s4
# 2018-10-07 200
# 2018-10-08 195
# dtype: int64
- 딕셔너리를 이용하면 데이터와 index를 함께 입력할 수 있다.
s = pd.Series(dict_data)
- 딕셔너리 데이터의 키(keys)와 값(vlaues)이 각각 Series 데이터의 index와 values로 들어간다.
data_dict = {
'국어': 100,
'영어': 95,
'수학': 90
}
s5 = pd.Series(data_dict)
s5
# 국어 100
# 영어 95
# 수학 90
# dtype: int64
# 날짜 자동 생성
pd.date_range(start=None, end=None, periods=None, freq='D')
- start: 시작 날짜, end: 끝 날짜, periods: 날짜 데이터 생성 기간, freq: 날짜 데이터 생성 주기
- start는 반드시 있어야 하며, end나 periods는 둘 중 하나만 있어도 된다.
- freq를 입력하지 않으면 'D' 옵션이 설정되어 달력 날짜 기준으로 하루씩 증가한다.
pd.date_range(start='2024/01/01', end='2024.01.07')
# DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04',
# '2024-01-05', '2024-01-06', '2024-01-07'],
# dtype='datetime64[ns]', freq='D')
pd.date_range(start='2024/01/01', periods = 7)
# DatetimeIndex(['2024-01-01', '2024-01-02', '2024-01-03', '2024-01-04',
# '2024-01-05', '2024-01-06', '2024-01-07'],
# dtype='datetime64[ns]', freq='D')
pd.date_range(start='2024/01/01', periods = 4, freq = '2D')
# DatetimeIndex(['2024-01-01', '2024-01-03', '2024-01-05', '2024-01-07'],
# dtype='datetime64[ns]', freq='2D')
pd.date_range(start='2024-01-01 08:00', periods = 4, freq = 'H')
# DatetimeIndex(['2024-01-01 08:00:00', '2024-01-01 09:00:00',
# '2024-01-01 10:00:00', '2024-01-01 11:00:00'],
# dtype='datetime64[ns]', freq='H')
# DataFrame을 활용한 데이터 생성
df = pd.DataFrame(data [, index = index_data, columns = columns_data])
- DataFrame()의 인자인 data에는 리스트와 형태가 유사한 데이터 타입은 모두 사용할 수 있다. 즉, 리스트와 딕셔너리 타입의 데이터, NumPy의 배열 데이터, Series나 DataFrame 타입의 데이터를 입력할 수 있다.
- DataFrame의 세로축 라벨: index, 가로축 라벨: columns, 관심 있는 데이터: values
- 주의: DataFrame의 data의 행 개수와 index 요소의 개수, data 열의 개수와 columns 요소의 개수가 일치해야 한다.
- index와 columns는 선택사항이므로 입력하지 않을 수 있는데, 그러면 index와 columns에는 자동으로 0부터 숫자가 생성되어 채워진다.
table_data = {
'연도': [2015, 2016, 2016, 2017, 2017],
'지사': ['한국', '한국', '미국', '한국', '미국'],
'고객 수': [200, 250, 450, 300, 500]
}
table_data
# {'연도': [2015, 2016, 2016, 2017, 2017],
# '지사': ['한국', '한국', '미국', '한국', '미국'],
# '고객 수': [200, 250, 450, 300, 500]}
data = pd.DataFrame(table_data)
data
data.index # RangeIndex(start=0, stop=5, step=1)
data.values
# array([[2015, '한국', 200],
# [2016, '한국', 250],
# [2016, '미국', 450],
# [2017, '한국', 300],
# [2017, '미국', 500]], dtype=object)
data.values.shape # (5, 3)
data.columns # Index(['연도', '지사', '고객 수'], dtype='object')
728x90
'Python' 카테고리의 다른 글
[Python] Requests와 BeautifulSoup를 활용한 크롤링 (2) | 2024.01.31 |
---|---|
[Pandas] 데이터 연산 (0) | 2024.01.17 |
[NumPy] NumPy 조건문 (0) | 2024.01.17 |
[NumPy] 배열의 인덱싱과 슬라이싱 (0) | 2024.01.17 |
[NumPy] 배열의 연산 (0) | 2024.01.17 |