What is Pandas
import pandas as pd
판다스(Pandas)는 파이썬에서 데이터 처리를 위해 존재하는 가장 인기 있는 라이브러리입니다.
특히, 행과 열로 이뤄진 2차원 데이터를 효율적으로 가공/처리하고 데이터를 분석할 수 있는 다양한 기능들을 제공합니다.
판다스는 파이썬의 리스트, 컬렉션, 넘파이 등의 내부 데이터뿐만 아니라 CSV, Excel, json 파일 등을 쉽게 DataFrame으로 변경해 데이터의 가공과 분석을 편리하게 수행할 수 있게 합니다.
판다스에는 3가지의 데이터 구조체가 있습니다:
1. DataFrame : 2차원 - # col
2. Series : 1차원 - 1 col
3. Pannel
이 중 판다스의 핵심 객체는 DataFrame입니다. 그리고 이를 온전히 이해하기 위해서는 다른 중요 객체인 Series와 Index를 이해해야 합니다. 간단하게 말하자면, DataFrame은 Series들로 이루어졌으며, 둘은 모두 Index를 key값으로 가지고 있다고 말할 수 있습니다.
이것이 무슨 말인지는 밑의 코드를 보면서 확인해봅시다.
Series
간단하게 말하자면, Series는 1차원 배열에 인덱스를 부여하는 구조체입니다.
# Series
# 1차원 배열의 값에 인덱스 부여하는 구조
sr = pd.Series([17000,18000,1000,5000], index=["a", "b", "c", "d"])
print(sr)
print(sr.values)
print(sr.index)
[OUTPUT]
> a 17000
b 18000
c 1000
d 5000
dtype: int64
> [17000 18000 1000 5000]
> Index(['a', 'b', 'c', 'd'], dtype='object')
DataFrame
DataFrame은 2차원 리스트입니다. 다른 말로는 행렬로 이해하시면 됩니다.
2차원이기 때문에, Series와는 달리, 행 방향인 인덱스(index) 외에, 열 방향인 칼럼(column)을 지정해줄 수 있습니다.
즉, Series가 인덱스와 값으로 구성된다면, DataFrame은 열, 인덱스, 값으로 이루어집니다.
DataFrame이 중요한 이유는 우리가 흔히 데이터를 관리할 때, 어떤 형태로 관리하는지를 생각해보면 편합니다.
단순하게는 엑셀 파일을 생각해보면 되겠죠!
# DataFrame
# 2차원 리스트를 매개변수로 전달.
# 2차원이므로 행방향 인덱스(index)와 열방향 인덱스(column)이 존재함.
# 시리즈가 인덱스와 값으로 구성된다면, 데이터프레임은 열, 인덱스, 값으로 이루어짐
values = [[1,2,3],[4,5,6],[7,8,9]]
index = ['one', 'two', 'three']
columns = ['A','B','C']
df = pd.DataFrame(values, index=index, columns=columns)
print(df)
print(df.index)
print(df.columns)
print(df.values)
[OUTPUT]
> A B C
one 1 2 3
two 4 5 6
three 7 8 9
> Index(['one', 'two', 'three'], dtype='object')
> Index(['A', 'B', 'C'], dtype='object')
> [[1 2 3]
[4 5 6]
[7 8 9]]
DataFrame의 생성
기본적으로 DataFrame은 파이썬의 리스트, 딕셔너리, 넘파이 ndarray 등 다양한 데이터로부터 생성 가능합니다.
또한 이를 csv, txt 파일 등으로 뽑아내는 것도 가능하죠!
List, Dict, Ndarray => DataFrame
- 예시1: 파이썬 리스트를 이용한 데이터 프레임 생성
# 예시1 _ 리스트를 이용한 데이터 프레임 생성
data = [
['1000', 'Steve', 90.72],
['1001', 'James', 78.09],
['1002', 'Doyeon', 98.43],
['1003', 'Jane', 64.19],
['1004', 'Pilwoong', 81.30],
['1005', 'Tony', 99.14],
]
df = pd.DataFrame(data)
print("**기본 상태**")
print(df)
print("\n**열 지정 상태**")
df = pd.DataFrame(data,columns = ['학번', '이름', '점수'])
print(df)
- 예시2: 파이썬 딕셔너리를 이용한 데이터 프레임 생성
# 예시 2: 딕셔너리를 이용한 데이터프레임 생성
data = { '학번' : ['1000', '1001', '1002', '1003', '1004', '1005'],
'이름' : [ 'Steve', 'James', 'Doyeon', 'Jane', 'Pilwoong', 'Tony'],
'점수': [90.72, 78.09, 98.43, 64.19, 81.30, 99.14]}
df = pd.DataFrame(data)
print(df)
[OUTPUT]
> `학번 이름 점수
0 1000 Steve 90.72
1 1001 James 78.09
2 1002 Doyeon 98.43
3 1003 Jane 64.19
4 1004 Pilwoong 81.30
5 1005 Tony 99.14
- 예시 3: 넘파이 ndarray를 이용한 데이터 프레임 생성
# 예시 3: 넘파이 ndarray를 이용한 데이터프레임 생성
import numpy as np
col_name = ['A', 'B', 'C']
a = np.array([[1,2,3], [11,12,13]])
df = pd.DataFrame(a, columns = col_name)
DataFrame => List, Dict, Ndarray
많은 머신러닝 패키지가 기본 데이터 형으로 넘파이 ndarray를 사용합니다. 따라서 판다스로 데이터 핸들링을 하더라도 다시 ndarray로 돌려주어야 하는 경우가 빈번합니다.
굉장히 많이 사용되므로 밑의 코드는 꼭 알아두자!
# DataFrame을 ndarray로 변환
a = df.values
print(type(a))
# DataFrame을 list로 변환
b = df.values.tolist()
print(type(b))
# DataFrame을 dictionary로 변환
c = df.to_dict('list')
print(type(c))
'Data handling > Pandas' 카테고리의 다른 글
[Pandas] DataFrame의 수정과 삭제 (0) | 2020.06.12 |
---|---|
[Pandas] 외부 데이터 읽기: csv, txt, json (0) | 2020.06.11 |