pandas는 데이터 분석을 위한 파이썬 기반의 라이브러리입니다.
특히, 2차원 데이터를 효율적으로 가공 및 처리할 수 있는 강력한 라이브러리입니다.
Pandas의 자료구조
Series : 1차원
DataFrame : 2차원
Pandas를 배운다는 것은?
Pandas라는 데이터 분석을 위한 도구의 사용법을 배우는 과정.
분석하고자 하는 데이터를 Series, DataFrame에 저장.
자료구도를 필요에 따라 추가, 수정, 삭제, 전처리할 수 있고,
자료구조에 저장된 데이터를 조회, 정렬, 연산할 수 있고,
다양한 데이터들을 원하는 부로 결합하여 활용할 수 있는
2차원 데이터로부터 의미를 도출하는 전과정에 필수적인 라이브러리를 학습하는 과정
Series는 1차원 데이터를 저장하는 Pandas의 기본 자료구조로, pd.Series(data)를 통해서 생성 가능합니다.
이때 리스트, 튜플, 딕셔너리 등의 파이썬 객체를 함수의 data 인자로 전달하여 다양한 형태로 생성할 수 있고, Series 객체는 동일한 데이터 타입의 값을 저장할 수 있다는 특징이 있습니다.
인덱스를 지정하지 않는 경우, 정수 0부터 시작되는 인덱스가 생성됩니다.
pd.Series(data,index,name)
<실습코드>
# Pandas 라이브러리 로딩
import pandas as pd
# 설치된 버전 출력
print(pd.__version__)
'''
# 리스트 데이터로 Series 객체 생성하기
'''
year = ['2019', '2020', '2021', '2022']
result = pd.Series(data=year)
print('\nType:', type(result))
print(result)
'''
# Series 객체의 주요 속성
'''
print('\nIndex: ', result.index )
print('Data: ', result.values )
print('DType: ', result.dtype )
print('Shape: ', result.shape )
print('\n')
'''
# Series 객체의 이름 지정
'''
result.name = 'Year'
result.index.name = 'No.'
print(result)
print('\n')
'''
# 인덱스 추가하여 Series 객체 생성하기
'''
year = ['2019', '2020', '2021', '2022']
idx = ['a', 'b', 'c', 'd']
result = pd.Series(data=year, index=idx, name='Year')
print(result)
print('\n')
'''
# 딕셔너리 데이터로 Series 객체 생성하기
'''
score = {'Kim':85, 'Han':89, 'Lee':99, 'Choi':70}
result = pd.Series(data=score, name='Score')
print(result)
<실행결과>
1.2.3
Type: <class 'pandas.core.series.Series'>
0 2019
1 2020
2 2021
3 2022
dtype: object
Index: RangeIndex(start=0, stop=4, step=1)
Data: ['2019' '2020' '2021' '2022']
DType: object
Shape: (4,)
No.
0 2019
1 2020
2 2021
3 2022
Name: Year, dtype: object
a 2019
b 2020
c 2021
d 2022
Name: Year, dtype: object
Kim 85
Han 89
Lee 99
Choi 70
Name: Score, dtype: int64
DataFrame 은 행과 열을 가진 2차원 자료 구조로 Pandas 의 핵심 자료구조입니다.
DataFrame 은 pd.DataFrame ( data ) 을 통해 생성할 수 있고, 함수의 인자로는 다양한 파이썬 객체들이 입력될 수 있습니다.
또한 각 컬럼은 서로 다른 데이터 타입으로 구성될 수 있다는 특징이 있습니다. 1개의 컬럼은 Series 객체로 구성됩니다.
DataFrame의 생성
pd.DataFrame ( data, index, columns )
DataFrame의 주요 속성
.index : DataFrame 객체의 행 인덱스
.columns : DataFrame 객체의 열 인덱스
.values : DataFrame 객체에 저장된 데이터에 접근
.dtypes : DataFrame 객체에 저장된 각 컬럼별 데이터 타입 출력
.shape : DataFrame 객체에 저장된 행과 열에 대한 크기 정보 반환
<실습코드>
import pandas as pd
'''
# 파이썬 딕셔너리 객체 이용하여 DataFrame 생성하기
'''
score = {'name': ['Jessi', 'Emma', 'Alex', 'Tom'],
'score': [100, 95, 80, 85],
'grade': ['A', 'A', 'B', 'B']}
df = pd.DataFrame(data=score)
print(type(df))
print(df)
'''
# DataFrame 주요 속성 실습-1
'''
print('-Index: ', df.index)
print('-Columns: ', df.columns)
print('-Values:\n', df.values)
'''
# DataFrame 주요 속성 실습-2
'''
print('-DTypes:\n', df.dtypes)
print('-Shape: ', df.shape)
print('\n')
'''
# index, columns 지정하여 DataFrame 생성하기
'''
score = {'name': ['Jessi', 'Emma', 'Alex', 'Tom'],
'score': [100, 95, 80, 85],
'grade': ['A', 'A', 'B', 'B']}
i = ['a', 'b', 'c', 'd']
c = ['score', 'grade', 'name', 'email']
df = pd.DataFrame(data=score, index=i, columns=c)
print(df)
<실행결과>
<class 'pandas.core.frame.DataFrame'>
name score grade
0 Jessi 100 A
1 Emma 95 A
2 Alex 80 B
3 Tom 85 B
-Index: RangeIndex(start=0, stop=4, step=1)
-Columns: Index(['name', 'score', 'grade'], dtype='object')
-Values:
[['Jessi' 100 'A']
['Emma' 95 'A']
['Alex' 80 'B']
['Tom' 85 'B']]
-DTypes:
name object
score int64
grade object
dtype: object
-Shape: (4, 3)
score grade name email
a 100 A Jessi NaN
b 95 A Emma NaN
c 80 B Alex NaN
d 85 B Tom NaN
<실습코드>
import pandas as pd
import numpy as np
'''
주어진 series 데이터를 이용하여 DataFame 을 생성하세요.
'''
series = {'one': pd.Series([1., 2., 3.], index=['a', 'b', 'c']),
'two': pd.Series([1, 2, 3, 4], index=['a', 'b', 'c', 'd'])}
result = pd.DataFrame(series)
print(result)
print('\n')
'''
딕셔너리가 저장된 리스트 객체(data)를 이용하여
index 가 있는 DataFrame 을 생성하세요.
'''
data = [{'a': 1, 'b': 2}, {'a': 5, 'b': 10, 'c': 20}]
idx = ['row1', 'row2']
result = pd.DataFrame(data, index=idx)
print(result)
print('\n')
'''
주어진 ndarray 데이터를 이용하여
index 와 column이 지정된 DataFrame 을 생성하세요.
'''
arr = np.array([[1, 2, 3], [4, 5, 6], [7, 8, 9]])
col = ['col1', 'col2', 'col3']
idx = ['row1', 'row2', 'row2']
result = pd.DataFrame(arr, columns=col, index=idx)
print(result)
<실행결과>
one two
a 1.0 1
b 2.0 2
c 3.0 3
d NaN 4
a b c
row1 1 2 NaN
row2 5 10 20.0
col1 col2 col3
row1 1 2 3
row2 4 5 6
row2 7 8 9