본문 바로가기
파이썬 (Python)/Pandas

Python 파이썬 데이터 조작과 분석을 위한 절대 병기 Pandas 라이브러리 파헤치기 Part 1

by ★√★ 2021. 1. 28.

안녕하세요, Davey 입니다. 오늘은 Deep Learning 할 때, 개발자들이 정말 많이 사용하고 있는, 라이브러리인, pandas에 대해서 posting 하려고 합니다. 여러 번의 posting을 통해서, 설명 드릴 예정이니, 차근 차근 살펴보시면 도움이 되실 거라고 생각합니다.

 

일단, panda에 대해서 간단하게 아래와 같이 설명 드리겠습니다. 

[참조 자료 : https://g.co/kgs/DWskDM - 위키백과 ]

 

- pandas는 데이터 조작 및 분석을 위해 Python 프로그래밍 언어로 작성된 소프트웨어 라이브러리입니다. 특히, 숫자 테이블 및 시계열 조작을위한 데이터 구조 및 조작을 제공합니다. 공개 된 무료 소프트웨어입니다. 즉, 대량의 데이터를 다루고, 조작, 그리고 분석하는데 이용하는 라이브러리 중에 가장 많이 쓰인다라고 생각하시면 됩니다. (제가 틀릴 수는 있다는 건 고려 부탁 드립니다.)


1. panda 설치 or 설치 내용 확인 하기

- Anaconda를 설치하였으면, 자동적으로 pandas는 설치되어 있는 상태입니다. 혹시, 모르니까, 아래 사진과 같이, Anaconda navigator에 들어가셔서, Environment의 메뉴의 검색창에서 확인 부탁 드립니다. 

 

 

 

- 혹시 설치가 되지 않았으면 검색을 통해서 pandas 라이브러리를 설치를 하셔야 합니다.

 

2. panda 라이브러리 선언

 : 라이브러리 선언은 아래 코드를 통해서 선언하시면 됩니다. 보통, as pd를 쓰는데 다른 용어로 대체하셔도 무방합니다. 

 

========================================================

 

import pandas as pd

 

========================================================

 

3. panda 함수 Series 활용하기

 1) Serise의 기본 구문 및 기본 식 실행 

  - Serise 기본 식 : 'Serise를 통한 데이터 테이블을 집어넣을 테이블 변수' = pd.Series([값1, 값2.... ])

 

 - 쉬운 이해를 돕기 위해 아래 예제를 통해서 설명 드리도록 하겠습니다. numpy도 같이 사용하도록 하겠습니다. 전체적으로 보면, 인덱스를 가진 데이터 테이블을 예제로 만들어 볼겁니다. 

 

=========================================================================

import numpy as np                 # numpy 라이브러리를 선언

import pandas as pd                # pandas 라이브러리를 선언

 

test01= pd.Series([1,2,3])

test02= pd.Series(['test01', 'test02','test03'])

 

test03 = pd.Series(np.arange(100))      # numpy를 이용하여, 100개의 값을 리스트화 하여, panda 함수 값에 입력

 

print(test01)

 

print()

 

print(test02)

 

print()

 

print(test03)

 

==========================================================================

 

위 코드를 실행을 하면 아래와 같은 결과를 보실 수 있습니다. 일단 Serise를 통해서, list화 한 내용을 데이터 테이블 화 하여, 출력을 해줍니다. 그리고 test03에 들어가는 numpy를 이용한 리스트 값도 데이터 테이블 화 하여 출력 되는 걸 확인 하실 수 있습니다. 

 

 

 

2) Series의 데이터와 Index를 동시에 구현하기

 : Serise의 데이터와 Index를 동시에 설정하여, 테이블 화 할 수 있습니다. 이번에 설명 드렸듯이, Shift + Tap을 누르면 그 함수의 관련 속성값을 보실 수 있습니다. Serise 속성값 구성은 아래와 같습니다. 즉, data 항목과, index 항목의 값을 입력하면, 원하는 index에 맞게, 값을 테이블 화 할 수 있습니다.  

 

 

 

- 쉬운 이해를 돕기 위해 아래 예제를 통해서 설명 드리도록 하겠습니다.

 

==========================================================================

 

import numpy as np

import pandas as pd

 

test01= pd.Series([1,2,3],['a','b','c'])                                    # test01의 index를 ['a','b','c'] 로 설정함.

test02= pd.Series([10,20,30], index = test01.index)               # test01의 index를 이용하여, test02에 적용함.

 

 

print(test01)

 

print()

 

print(test02)

 

==========================================================================

 

위 코드를 실행을 하면 아래와 같은 결과를 보실 수 있습니다. 즉, 설정한, index화 되어있는 데이터 테이블이 출력이 되고, test01의 index를 이용하여, test02에 입력하는 것도 확인 하실 수 있습니다.

 

 

 

위 코드와 더불어, numpy를 이용하여, index 값을 random 값을 설정하여, 출력해보도록 하겠습니다. 아래 예제 코드 참조 부탁 드립니다.

 

==========================================================================

 

import numpy as np

import pandas as pd

 

resource01 = np.random.randint(1,100, size=(10))

print(resource01)

 

print()

 

test01 = pd.Series(np.random.randint(1,100, size=(10)))      # numpy를 이용하여, index 값을 random 값을 설정

test01

==========================================================================

 

위 코드를 실행을 하면 아래와 같은 결과를 보실 수 있습니다. 즉, numpy를 이용하여, index 값을 random 값을 설정한 사항이 반영되어, 출력되는 걸 확인 하실 수 있습니다.

 

 

 

3) Index를 이용한, 수정, 편집 그리고 출력 기능 

 : 기존에 Series로 구현한, 데이터 테이블을 Index를 이용하여 수정, 편집 그리고 출력해 보도록 하겠습니다. 이 부분도, 쉬운 이해를 돕기 위해서, 아래와 같이 예제를 통해서 설명해드리도록 하겠습니다.

 

Case #1 Index를 이용하여, 출력 그리고 존재하지 않은 Index를 이용하여 출력 시 Error message

==========================================================================

 

import numpy as np

import pandas as pd

 

resource01 = np.random.randint(1,100, size=(10))

print(resource01)

 

print()

 

test01 = pd.Series(np.random.randint(1,100, size=(10)))

print('----기존에 만든 Series 데이터 테이블----')

 

print()

 

print(test01)

 

print()

 

print(test01[0]) # index 0 인 값을 출력

 

print(test01[10]) # index 10인 상태에서 출력을 하게 되면, Error message가 발생한다.

==========================================================================

 

위 코드를 실행을 하면 아래와 같이, 기존에 존재하는 Index를 이용하여, 출력 그리고 존재하지 않은 Index를 이용하여 출력 시 Error message가 나오는 걸 확인 하실 수 있습니다.

 

 

 

 

Case #2 Index가 존재하지는 않지만, 새로운 index와 값을 동시에 입력하면서 값을 추가

           그리고 기존 Index를 이용하여, 기존 값을 수정

==========================================================================

import numpy as np

import pandas as pd

 

resource01 = np.random.randint(1,100, size=(10))

print(resource01)

 

print()

 

test01 = pd.Series(np.random.randint(1,100, size=(10)))

print('----기존에 만든 Series 데이터 테이블----')

 

print()

 

print(test01)

 

print()

 

print(test01[0]) # index 0 인 값을 출력

 

test01[0] = 100000

 

print(test01[0])

 

print()

 

# print(test01[10]) # index 10인 상태에서 출력을 하게 되면, Error message가 발생한다.

 

test01[10] = 200000

 

print()

 

print(test01[10])

 

==========================================================================

 

위 코드를 실행을 하면 아래와 같이, 기존 데이터를 비교해보시면, test01[0] 의 값이 수정되고, test01[10] 값을 추가적으로 입력함으로써, index가 없어도, 새로운 값을 입력함으로써, 그 값을 출력할 수 있는 걸 확인 하실 수 있습니다.

 

 

 

 

4) Data Type 설정

 : 간단하게 구문을 짜자면, 아래와 같습니다. 즉, 3번째 dtype의 속성값에 원하는 data type을 기입하시면 됩니다. 생략하게되면, 사용자가 사용하는 운용체제에 맞게 알아서 맞춰서 출력type을 결정합니다.

 - pd. Seriese ([1,2,3], [인덱스], dtype = 원하는 Data type)

이 부분도, 쉬운 이해를 돕기 위해서, 아래와 같이 예제를 통해서 간단하게 설명해드리도록 하겠습니다.

 

==========================================================================

import numpy as np

import pandas as pd

 

resource01 = np.random.randint(1,200, size=(20))               

 

test01 = pd.Series(resource01, np.random.randint(1,200, size=(20)), dtype = np.int16 )

# data 값과 index 값을 모두 random하게 받고, 그 타입은 int16으로 하겠다는 구문.



print(test01)

 

==========================================================================

 

 

이상입니다. pandas의 첫 posting을 하게 되었는데, 너무나도 재미있고, 기본적인 구문이 아닌, 랜덤한 수를 집어 넣는다는가, 아니면 그 행렬을 1차 행렬로 만들어야 하는 조건 까지 같이 보여 드릴려고 보니까, 시간이 좀 오래 걸렸습니다. 아무쪼록, 제 posting이 programming 공부하시는데 도움이 되셨으면 합니다. 항상 애기 드리지만, 같이 성장하시죠! 감사합니다. 

 

제 Posting이 조금이나마 정보 전달에 도움이 되셨길 빌며, 되셨다면, 구독, 댓글, 공감 3종 세트 부탁 드립니다. 감사합니다.


[저작권이나권리를 침해한 사항이 있으면 언제든지 Comment 부탁 드립니다검토  수정  삭제 조치 하도록 하겠습니다그리고기재되는 내용은 개인적으로 습득한 내용이므로 오류가 발생할  있을 가능성이 있으므로기재된 내용은 참조용으로만 봐주시길 바랍니다게시물에오류가 있을때도, Comment 달아 주시면검증 결과를 통해수정하도록 하겠습니다.]

728x90

댓글