AI 머신러닝 딥러닝/AI 수학 입문 공부일지

AI 인공지능 수학 공부일지 3. 판다스 pandas 모듈

Tomitom 2022. 10. 21. 14:49
반응형

두 개의 모듈을 추가로 설치하고 이번 포스팅에는 판다스 모듈만 정리해볼게요. 

 

1. pandas
2. openpyxl

 

 

설치하는 방법은 지난 번 포스팅을 참고해주세요. 

https://blue-dot.tistory.com/32

 

AI 인공지능 수학 공부일지 1. 파이썬 개발 환경 아나콘다Anaconda 설치하기, 주피터 Jupyter 실행하기

오늘부터 인공지능 수학을 공부합니다. 인공지능용 수학은 필요한 분야의 수학이 정해져 있습니다. 벡터, 행렬, 텐서 등을 다루는 선형대수, 상미분, 편미분, 연쇄법칙 등을 다루는 미분, 표준편

blue-dot.tistory.com

 

데이터 구조를 분석하는 판다스의 데이터 프레임에 대해서 알아볼게요. 

데이터의 가장 흔한 형태 중 하나는 바로 '행과 열'의 2차원 구조입니다. 
파이썬 외부 모듈 pandas 는 행과 열 형태로 데이터를 관리하는 클래스 DataFreame 을 제공합니다.

이를 활용하면 데이터를 쉽게 관리할 수 있을 뿐 아니라, 행열 기반의 다른 형식으로 변환하는 작업 또한 쉽게 처리할 수 있습니다.

일반적으로 행의 개수는 데이터의 개수를, 열의 개수는 데이터가 가진 항목의 수를 의미합니다. 

 

파이썬의 딕셔너리와 리스트는 파이썬에 한정적이기 때문에 다른 곳에서 범용적으로 사용하기 위해 

행열구조로 바꿔서 내보낼 수 있습니다. 

그럼 데이터 프레임 만들기 가장 기본적인 방법부터 해볼게요. 

 

● 딕셔너리 베이스입니다. (파이썬의 기본 데이터 베이스) 

딕셔너리 베이스는 딕셔너리의 값이 열로 표현됩니다.

import pandas as pd

#데이터프레임 만들기 방법 1. 딕셔너리 베이스 

numbers = {
    "odd" : [1, 3, 5, 7],
    "even": [2, 4, 6, 8]
}

# 행과 열 형태로 변환!
# index : 행이름 리스트를 전달하는 매개변수 

df = pd.DataFrame(numbers, index=["숫자1","숫자2","숫자3","숫자4"])
print(df)

결과값

     odd  even
숫자1    1     2
숫자2    3     4
숫자3    5     6
숫자4    7     8

딕셔너리 키가 열 위에 표현이 됩니다. 

열 위에 표시되는 데이터 이름을 head 라고 합니다. 

즉, 딕셔너리의 키 이름은 헤더로 사용이 됩니다. 

 

숫자1, 2, 3, 4로 표현된 열의 이름도 index=[] 로 바꿀 수 있습니다. 

 

 

● 두 번째로 리스트 베이스 입니다. 

리스트 베이스는 행으로 표현됩니다. 

 

import pandas as pd

# 데이터 프레임 만들기 방법 2. 리스트 베이스 

numbers = [
    [1, 3, 5, 7],
    [2, 4, 6, 8]
]

# columns 는 열 이름을 지정하는 매개변수 

df= pd.DataFrame(numbers, index=["홀수", "짝수"],
                 columns=["숫자1", "숫자2", "숫자3", "숫자4"])
                 
print(df)

결과 값은 이렇게 나옵니다. 

숫자1  숫자2  숫자3  숫자4
홀수    1    3    5    7
짝수    2    4    6    8

pandas 데이터는 엑셀과 비슷한 프레임 구조를 가지고, 엑셀 파일로 전환도 용이합니다.

 

그럼 pandas 데이터를 어떻게 접근하는지 직접 해볼게요.

열에 접근할 때에는 그냥 [] <- 대괄호로 인덱스에 접근할 수 있고

행에 접근할 때에는 .iloc (index location) 으로 접근해야 합니다. 

 

import pandas as pd

stocks = [
    ["삼성전자", 56000],
    ["카카오", 49000],
    ["이엔소프트", 31000]
]

sdf = pd.DataFrame(stocks)


# 요소 접근하기 . 키를 이용해서 접근이 가능

print(sdf[0])  # 열 접근 
print("\n")
print(sdf.iloc[0])  # 행 접근index location 
print("\n")
print(sdf.iloc[1,1])   # 하나의 자료에 접근하는 방법 1행 2열 접근 
print("\n")

# 접근 방법과 동일하게 변경도 할 수 있다. 

sdf[0] = ["lg화학","한화생명","국민카드"] 
print(sdf)
print("\n")
sdf[2] = [200, 300, 400] # 열 추가 
print(sdf)

sdf.to_excel("stock.xlsx")  # 하위 폴더에 엑셀로 변환해서 저장

값은 아래와 같습니다. 

0     삼성전자
1      카카오
2    이엔소프트
Name: 0, dtype: object


0     삼성전자
1    56000
Name: 0, dtype: object


49000


      0      1
0  lg화학  56000
1  한화생명  49000
2  국민카드  31000


      0      1    2
0  lg화학  56000  200
1  한화생명  49000  300
2  국민카드  31000  400

여기까지 확인하고 다음은 Numpy를 해볼게요! 

반응형