1. DataFrame을 활용한 데이터 생성
🍯 표 Table와 2차원 데이터 처리를 위해 DataFrame을 제공
▶️ 데이터 Data를 담는 틀 Frame이라는 뜻
1) 데이터 생성
df = pd.DataFrame(data [, index = index_data, columns = columns_data])
🐰 data 인자에는 리스트와 형태가 유사한 데이터 타입은 모두 사용 가능
🥕 리스트, 딕셔너리, numpy의 배열 데이터, Series나 DataFrame 타입의 데이터 입력 가능
🐰 세로축 라벨을 index라 하고, 가로축 라벨을 columns 라고 함
🐰 index와 columns를 제외한 부분을 values라고 함
import pandas as pd
d1 = pd.DataFrame([[1,2,3], [4,5,6], [7,8,9]])
d1
🥕 values 부분에는 입력한 data가 순서대로 입력 돼 있고 가장 좌측의 열과 가장 윗줄의 행에는 각각 숫자가 자동으로 생성되어 index, columns를 구성
▶️ 명시적으로 입력하지 않더라도 자동으로 index, columns가 생성
📁 numpy의 배열 데이터를 입력해 생성한 DataFrame 데이터의 예
import numpy as np
data_list = np.array([[10,20,30], [40,50,60], [70,80,90]])
print(data_list)
'''
[[10 20 30]
[40 50 60]
[70 80 90]]
'''
d2 = pd.DataFrame(data_list)
d2
📁 data뿐만 아니라 index와 columns도 지정한 예
data = np.array([[1,2,3], [4,5,6], [7,8,9], [10,11,12]]) # values
index_date = pd.date_range('2019-09-01', periods=4)
columns_list = ['A', 'B', 'C']
d3 = pd.DataFrame(data=data, index=index_date, columns=columns_list)
d3
📁 딕셔너리 타입으로 2차원 데이터를 입력한 예
📌 리스트나 넘파이 배열은 행 단위로 입력이 되고, 딕셔너리는 열 단위로 입력됨
table_data = {'연도': [2015, 2016, 2016, 2017, 2017],
'지사': ['한국', '한국', '미국', '한국', '미국'],
'고객 수': [200, 250, 450, 300, 500]}
d4 = pd.DataFrame(table_data)
# 입력시 키의 순서를 지정할 수도 있음.
d5 = pd.DataFrame(table_data, columns=['지사', '고객 수', '연도'])
d5
📁 DataFrame 데이터에서 index, columns, values을 각각 구한 예
d5.index
# RangeIndex(start=0, stop=5, step=1)
d5.columns
# Index(['지사', '고객 수', '연도'], dtype='object')
d5.values
# 0,한국,200,2015
# 1,한국,250,2016
# 2,미국,450,2016
# 3,한국,300,2017
# 4,미국,500,2017
2. 데이터 연산
🍯 Pandas의 Series()와 DataFrame()으로 생성된 데이터 끼리는 사칙연산이 가능
🍯 파이썬의 리스트와 numpy의 배열과 달리 pandas의 데이터 끼리는 서로 크기가 달라도 연산이 가능
▶️ 이 경우 연산을 할 수 있는 항목만 연산을 수행
1) Series()로 생성한 데이터의 예
import pandas as pd
s1 = pd.Series([1,2,3,4,5])
s2 = pd.Series([10,20,30,40,50])
# 덧셈
s1 + s2
'''
0 11
1 22
2 33
3 44
4 55
dtype: int64
'''
# 뺄셈
s2 - s1
'''
0 9
1 18
2 27
3 36
4 45
dtype: int64
'''
# 곱셈
s1 * s2
'''
0 10
1 40
2 90
3 160
4 250
dtype: int64
'''
# 나눗셈
s2 / s1
'''
0 10.0
1 10.0
2 10.0
3 10.0
4 10.0
dtype: float64
'''
2) 데이터의 크기가 다른 경우
🐰 연산할 수 있는 부분만 연산한 결과를 보여주고 연산할 수 없는 부분은 NaN으로 표시
s3 = pd.Series([1,2,3,4])
s4 = pd.Series([10,20,30,40,50])
# 덧셈
s3 + s4
'''
0 11.0
1 22.0
2 33.0
3 44.0
4 NaN
dtype: float64
'''
# 뺄셈
s4 - s3
'''
0 9.0
1 18.0
2 27.0
3 36.0
4 NaN
dtype: float64
'''
# 곱셈
s3 * s4
'''
0 10.0
1 40.0
2 90.0
3 160.0
4 NaN
dtype: float64
'''
# 나눗셈
s4 / s3
'''
0 10.0
1 10.0
2 10.0
3 10.0
4 NaN
dtype: float64
'''
3) DataFrame 연산
🐰 Series와 마찬가지로 DataFrame도 연산할 수 있는 항목 끼리만 연산하고 그렇지 못한 항목은 NaN으로 표시
🥕 공간은 차지하되 데이터는 없는 상태
# DataFrame()으로 생성한 데이터의 예
table_data1 = {'A': [1,2,3,4,5],
'B': [10,20,30,40,50],
'C': [100,200,300,400,500]}
df1 = pd.DataFrame(table_data1)
df1
table_data2 = {'A': [6,7,8],
'B': [60,70,80],
'C': [600,700,800]}
df2 = pd.DataFrame(table_data2)
df2
df1 + df2
[ 내용 참고 : IT 학원 강의 ]
'Programming Language > Python' 카테고리의 다른 글
[Python] Pandas | 데이터 파일 저장 to_csv(), 데이터 확인 메소드 (0) | 2024.03.12 |
---|---|
[Python] Pandas | 통계 메서드, 판다스 데이터 읽기 read_csv() (0) | 2024.03.12 |
[Python] 판다스(Pandas) | 정의, Series(), np.nan, data_range() 함수, 날짜 및 시간 생성 (0) | 2024.03.12 |
[Python] 넘파이(NumPy) | 배열의 연산, 배열의 인덱싱과 슬라이싱 (0) | 2024.03.11 |
[Python] 넘파이(Numpy) | 정의, 배열 생성 방법 및 관련 함수, 데이터 형식 (0) | 2024.03.11 |