본문 바로가기
ML 인공지능

[AI] 데이터 분석 기본과정_ 라이브러리 (numpy, pandas, matplotlib)

by 딧피 2021. 8. 7.
728x90
반응형

** 아래의 내용은 elice 와 NIPA가 함께 제공하는 AI 교육과정에 참여하며 복기하기위해 정리한 내용입니다.

 

1. 라이브러리 Numpy 

Numericla Python 

python 에서 대규모 다차원 배열을 다룰 수 있게 도와줌.

숫자의 배열데이터를 반복문 없이 배열처리 가능, 리스트보다 빠른연산 지원/ 메모리 효율적 사용 

 

*특징

- 콤마 구분 

- 같은 데이터 타입만 가능(리스트는 다양 데이터 o) - dtype ( int, float, str, bool )

- ndarray : ndim(dimension차원) & shape

 

#[일반]

list_arr = list(range(5))

>결과 [0,1,2,3,4] - , 콤마 구분

 

#[numpy 활용]

import numpy as np

np_arr = np.array(range(5))

>결과 [ 0 1 2 3 4] - 공백 구분

 

 

#차원

- 1차원 : [0,1,2]

 

- 2차원 : [[0,1,2],[3,4,5]]

ndim : 2

shape : 2 ,3

matrix = np.arange(1, 13, 1).reshape(3, 4)
print(matrix)

//matrix 결과
//[ 1  2  3  4]
//[ 5  6  7  8]
//[ 9 10 11 12]]

//  range(start, stop, step)

     - start : list 시작
     - stop : list 끝
     - step : 증가값
import numpy as np

print("1차원 array")
array = np.array(range(10))
print(array)

# 1. array의 자료형을 출력해보세요.
print(type(array))

# 2. array의 차원을 출력해보세요.
print(array.ndim)


# 3. array의 모양을 출력해보세요.

print(array.shape)

# 4. array의 크기를 출력해보세요.

print(array.size)

# 5. array의 dtype(data type)을 출력해보세요.

print(array.dtype)

# 6. array의 인덱스 5의 요소를 출력해보세요.

print(array[5])

# 7. array의 인덱스 3의 요소부터 인덱스 5 요소까지 출력해보세요.

print(array[3:6])

- ndarray 조절 

.format(arr.shape)

.format(arr.size)

.format(len(arr)))

 

import numpy as np

print("2차원 array")
#1부터 15까지 들어있는 (3,5)짜리 배열을 만듭니다.
matrix = np.array(range(1,16))
matrix.shape = 3,5
print(matrix)


# 1. matrix의 자료형을 출력해보세요.

print(type(matrix))

# 2. matrix의 차원을 출력해보세요.

print(matrix.ndim)

# 3. matrix의 모양을 출력해보세요.

print(matrix.shape)

# 4. matrix의 크기를 출력해보세요.

print(matrix.size)


# 5. matrix의 dtype(data type)을 출력해보세요.

print(matrix.dtype)

# 6. matrix의 dtype을 str로 변경하여 출력해보세요.

print(matrix.astype('str'))

# 7. matrix의 (2,3) 인덱스의 요소를 출력해보세요.

print(matrix[2,3])

# 8. matrix의 행은 인덱스 0부터 인덱스 1까지, 열은 인덱스 1부터 인덱스 3까지 출력해보세요.

print(matrix[0:2,1:4])

 

- 함수 : astype() 
기존의 배열을 복사하여 데이터 자료형을 변환하여 반환

 

원하는 요소 가져오기 

 

- 1. Indexing & Slicing ( 배열의 일부분만 찾거나 가져오기 )

x = np.arang(7)
print(x[3])  # 3
print(x[1:4]  # [1 2 3]

Indexing과 Slicing을 조합해 사용가능

print(x[1:2, 2])
#[7]

print(x[[0,2], 2])
#[3 11]

print(x[[0,2], :2])
#[[ 1 2 ][ 9 10 ]]

 

- 2. Boolean indexing ( boolean 으로 원하는 값 추출 )

x = np.arange(7)
print(x[x < 3])  # [0 1 2]
print(x[x % 2 == 0])  # [2 4 6]

- 3. Fancy indexin ( 선택해서 전달 ) 

x = np.arange(7)
print(x[[1, 3, 5]]  # [1 3 5]
x = np.arange(1,13,1).reshape(3,4)
print(x)

# [[ 1  2  3  4]
  [ 5 6  7  8]
  [ 9 10 11 12]]

print(x[[0,2]])

# [[ 1  2  3  4]
   [ 9 10 11 12]]

2. 라이브러리 Pandas 

Numpy 기반으로 설계. pandas는 구조화된 데이터를 효과적으로 처리/저장. 데이터 조작 및 분석에 사용.

Numpy의 array가 보강된 형태. data와 index를 가짐(print(data)).

예) 숫자 테이블과 시계열 조작을 위해 데이터 구조와 연산을 제공.

 

- 1. 기본 자료 형태 Series

Numpy array가 보강 > Data, index로 구성

 

data = pd.Series

Values를 ndarray(넘피 배열)의 형태로 가지고 있음.

 

[ Series 객체생성 ]

  • ‘값’과 ‘인덱스’ 매개변수를 각각 넣어주는 방법 (A)
  • 딕셔너리를 매개변수로 넣어주는 방법 (B)

 

* A. 데이터타입 지정 하는 법

data = pd.Series([1,2], dtype = "float")

print(data.dtype)

 

* B. 딕셔너리로 Series 만들기

dict = {
'korea' : 5180,
'japan' : 12718,
'china' : 141500,
'usa' : 32676
}
country = pd.Series(dict)
print(country)


----result -----

korea      5180
japan     12718
china    141500
usa       32676
dtype: int64

 

- 2. 기본 자료 형태인 DataFrame

여러개의 시리즈 데이터로 데이터 프레임 생성가능

Series 와 차이 : 시리즈 데이터는 하나의 컬럼 값 / 데이터 프레임은 여러 개의 컬럼 값

country = pd.DataFrame({})

population 과 gdp 를 순서대로 넣어주면

 

최종 country (데이터 프레임) 의 모습

       population         gdp
korea        5180   169320000
japan       12718   516700000
china      141500  1409250000
usa         32676  2041280000

과정 >>

실행 결과
---------------------------
Population series data:
korea      5180
japan     12718
china    141500
usa       32676
dtype: int64 

GDP series data:
korea     169320000
japan     516700000
china    1409250000
usa      2041280000
dtype: int64 

Country DataFrame
Index(['korea', 'japan', 'china', 'usa'], dtype='object')
Index(['population', 'gdp'], dtype='object')
import numpy as np
import pandas as pd

# 두 개의 시리즈 데이터가 있습니다.
print("Population series data:")
population_dict = {
    'korea': 5180,
    'japan': 12718,
    'china': 141500,
    'usa': 32676
}
population = pd.Series(population_dict)
print(population, "\n")

print("GDP series data:")
gdp_dict = {
    'korea': 169320000,
    'japan': 516700000,
    'china': 1409250000,
    'usa': 2041280000,
}
gdp = pd.Series(gdp_dict)
print(gdp, "\n")


# 이곳에서 2개의 시리즈 값이 들어간 데이터프레임을 생성합니다.
print("Country DataFrame")
country = pd.DataFrame({
'population': population,
'gdp':gdp
}) 


print(country.index)
print(country.columns)

 


3. 라이브러리 Metropolip

 

728x90
반응형

댓글