AI Study[Pandas, Series]

이도환·2023년 9월 23일

AI

목록 보기
2/4
post-thumbnail

코드링크

pandas 기본 연산

pandas란?

Pandas는 데이터 분석 및 조작을 위한 Python 라이브러리로, 인공 지능 (AI) 및 머신 러닝 (ML) 프로젝트에서 다양한 이유로 사용된다. Pandas를 AI 프로젝트에서 사용하는 주요 이유는 다음과 같다:

  • 데이터 전처리: AI 모델을 학습시키기 전에 데이터를 처리하고 정리해야 한다. Pandas는 데이터를 로드하고, 결측치를 처리하며, 이상치를 검출하고, 데이터를 정규화하고, 특징 엔지니어링을 수행하는 데 유용한 도구를 제공한다.

  • 데이터 시각화: Pandas는 데이터를 시각적으로 탐색하고 이해하기 위한 기능을 제공한다. Matplotlib, Seaborn과 같은 시각화 라이브러리와 함께 사용하여 데이터 분포, 상관 관계, 트렌드 등을 시각화하고 시각적 인사이트를 얻을 수 있다.

  • 데이터 조작 및 필터링: Pandas는 데이터를 필터링하고 조작하는 데 유용하다. 예를 들어, 데이터를 정렬하거나 특정 조건을 충족하는 행을 선택할 수 있다. 이는 훈련 데이터를 준비하거나 모델의 입력 데이터를 준비하는 데 필수적이다.

  • 시계열 데이터 처리: 시계열 데이터는 많은 AI 응용 분야에서 중요한 역할을 합니다. Pandas는 시계열 데이터를 다루는 데 효과적인 도구를 제공하며, 주식 가격, 날씨 데이터, 경제 지표 등과 같은 시계열 데이터를 다루기에 적합하다.

  • 데이터 변환: AI 모델에 데이터를 공급하기 전에 데이터를 원하는 형식으로 변환해야 할 때가 있다. Pandas를 사용하여 데이터를 다른 형식으로 변환하고 모델이 수용할 수 있는 형태로 가공할 수 있다.

  • 통계 분석: Pandas는 기초 통계 분석을 수행하는 데도 사용된다. 데이터의 요약 통계, 분포 분석, 상관 분석 등을 수행하여 데이터에 대한 통계적인 통찰력을 얻을 수 있다.

기본적으로

import pandas as pd

형식으로 판다스를 임폴드 해와

s = pd.Series(arr)

위와 같이 Series나 DataFrame을 사용할때 사용한다.

pd.Series란?

pd.Series는 Pandas 라이브러리에서 제공하는 데이터 구조 중 하나로, 1차원 배열과 유사한 형태의 데이터를 저장하는 데 사용된다. 이 데이터 구조는 Python의 리스트나 배열과 비슷하지만, 각 데이터 요소에 레이블 또는 인덱스를 부여할 수 있어 더 유용하게 활용할 수 있다.

data = [100,200,300]
index = ["월","화","수"]
s = pd.Series(data,index)

월 100
화 200
수 300
dtype: int64

시리즈는 원하는 인덱스의 고유값도 부여할 수 있으며 인덱스 값 외에도 고유 행번호를 가지고 있다.
s.index
Index(['월', '화', '수'], dtype='object')
s.values
array([100, 200, 300])
s.iloc[0] 해당 열 번호로 value 불러오기
100
s.loc["화"] 인덱스 값으로 value 불러오기
200
s.iloc[0:2] 열번호 0번부터 2번 미만까지
월 100
화 200
dtype: int64
s.loc["월":"수"] 인덱스 월부터 수(포함)까지
월 100
화 200
수 300
dtype: int64
s.loc["목"] = 400 데이터 추가하기
s
월 100
화 200
수 300
목 400
dtype: int64
s1 = s.drop("월") 데이터 삭제의 경우 해당 원본데이터는 변경 되지 않기 때문에 새로운 변수에 변경된 데이터를 삽입한다.
s1
화 200
수 300
목 400
dtype: int64
s.drop("수",inplace= True) 해당 원본 데이터를 수정하고 싶으면 inplace = true를 활용하여 수정한다.
s['월'] = 3000
s.iloc[1] = 4000 해당 행번호와 인덱스로 value 값 변경

이제Series의 활용 연산을 해보자

import pandas as pd
#브로드 캐스팅
s = pd.Series([100,200,300])
s+10

0 110
1 210
2 310
dtype: int64

high = pd.Series([120,130,160])
low = pd.Series([20,40,10])
diff = high - low
diff

0 100
1 90
2 150
dtype: int64

s = pd.Series([100,300,400,500])
cond = s>300
cond

0 False
1 False
2 True
3 True
dtype: bool

# 필터링
s = pd.Series([100,300,400,500])
cond = s>300
s[cond]

2 400
3 500
dtype: int64

a = pd.Series([93000,83200,99100,81000,72300],
             ['05/14','05/15','05/16','05/17','05/18'])
b = (a[0:]>80000) & (a[0:]<90000)
b

파이썬의 and 대신 & 를 활용한다.
05/14 False
05/15 True
05/16 False
05/17 True
05/18 False
dtype: bool

a[b]

05/15 83200
05/17 81000
dtype: int64

profile
개발 블로그

2개의 댓글

comment-user-thumbnail
2023년 9월 24일

좋은글 보고 갑니다 . . . ..

1개의 답글