Pandas 활용한 데이터 분석 입문(1) - Pandas소개, Series, DataFrame 생성

천호영·2021년 6월 21일
0

Pandas 라이브러리 소개

pandas는 데이터 분석을 위한 파이썬 기반의 라이브러리입니다.
특히, 2차원 데이터를 효율적으로 가공 및 처리할 수 있는 강력한 라이브러리입니다.

Pandas의 자료구조
Series : 1차원
DataFrame : 2차원

Pandas를 배운다는 것은?
Pandas라는 데이터 분석을 위한 도구의 사용법을 배우는 과정.
분석하고자 하는 데이터를 Series, DataFrame에 저장.
자료구도를 필요에 따라 추가, 수정, 삭제, 전처리할 수 있고,
자료구조에 저장된 데이터를 조회, 정렬, 연산할 수 있고,
다양한 데이터들을 원하는 부로 결합하여 활용할 수 있는
2차원 데이터로부터 의미를 도출하는 전과정에 필수적인 라이브러리를 학습하는 과정


Pandas의 기본 자료구조 - Series

Series는 1차원 데이터를 저장하는 Pandas의 기본 자료구조로, pd.Series(data)를 통해서 생성 가능합니다.

이때 리스트, 튜플, 딕셔너리 등의 파이썬 객체를 함수의 data 인자로 전달하여 다양한 형태로 생성할 수 있고, Series 객체는 동일한 데이터 타입의 값을 저장할 수 있다는 특징이 있습니다.

인덱스를 지정하지 않는 경우, 정수 0부터 시작되는 인덱스가 생성됩니다.

  • Series 의 주요 속성
    .index : 개별 데이터를 고유하게 식별하는 일종의 key 값
    .values : Series 객체 내 모든 데이터 값
    .dtype : Series 객체에 저장된 데이터의 타입
    .shape : Series 객체의 모양
    .name : Series 객체(데이터)의 이름
    .index.name : Series 객체의 인덱스(index) 의 이름
pd.Series(data,index,name)
  • index : Series 객체 생성시 index 설정하기
  • name : Series 객체 생성시 이름 지정하기

<실습코드>

# 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

Pandas의 기본 자료구조 - DataFrame 생성

DataFrame 은 행과 열을 가진 2차원 자료 구조로 Pandas 의 핵심 자료구조입니다.

DataFrame 은 pd.DataFrame ( data ) 을 통해 생성할 수 있고, 함수의 인자로는 다양한 파이썬 객체들이 입력될 수 있습니다.

또한 각 컬럼은 서로 다른 데이터 타입으로 구성될 수 있다는 특징이 있습니다. 1개의 컬럼은 Series 객체로 구성됩니다.

DataFrame의 생성

pd.DataFrame ( data, index, columns )
  • Parameters
    data : DataFrame 에 저장할 데이터 객체
    index : DataFrame 의 행의 인덱스, 순서를 지정
    columns : DataFrame 의 열의 인덱스, 순서를 지정

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

Pandas의 기본 자료구조 - DataFrame 생성 실습

<실습코드>

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

0개의 댓글