개념 정리/문법 정리

Pandas & Numpy & Matplotlib

히니1008 2022. 6. 19. 14:28

1.판다스(Pandas)

1)시리즈(Series)

 

시리즈 클래스는 1차원 배열의 값(values)에 각 값에 대응되는 index(인덱스)를 부여할 수 있는 구조를 갖고 있음

 

sr = pd.Series([17000, 18000, 1000, 5000],
               index=["피자", "치킨", "콜라", "맥주"])
print('시리즈 출력 :')
print('-'*15)
print(sr)

print('시리즈의 값 : {}'.format(sr.values)) print('시리즈의 인덱스 : {}'.format(sr.index))

시리즈의 값:  [17000 18000 1000 5000]시리즈의 인덱스: Index ( [ '피자' , '치킨', '콜라' , '맥주' ] , dtype = 'object' )

 

2)데이터프레임(DataFrame)

 

2차원 리스트를 매개변수로 전달함. 2차원이므로 행방향 인덱스(index)와 열방향 인덱스(column)이 존재다시 말해 행과 열을 가지는 자료구조. 시리즈가 인덱스(index)와 값(values)으로 구성된다면, 데이터프레임은 열(column)까지 추가되어 열(column),인덱스(index),값(values)으로 구성됨

 

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

index = ['one', 'two', 'three']

columns = ['A', 'B', 'C']

 

print('데이터프레임의 인덱스 : { }'.format(df.index))
print('데이터프레임의 열이름: { }'.format(df.colums))
print('데이터프레임의 값:')
print('-'*18)
print(df.values)

 

 

3)데이터 프레임의 생성

데이터 프레임은 리스트(List),시리즈(Series),딕셔너리(dict),Numpy의 ndarrays 또 다른 데이터프레임으로부터 생성할 수 있다. 여기서는 리스트와 딕셔너리를 사용하여 데이터프레임을 생성할 수 있다. 우선 이중 리스트로 생성하는 경우.

 

# 열이름 지정하고 출력하기

df = pd.DataFrame(data, columns=['학번', '이름', '점수'])
print(df)
     학번        이름     점수
0  1000     Steve  90.72
1  1001     James  78.09
2  1002    Doyeon  98.43
3  1003      Jane  64.19
4  1004  Pilwoong  81.30
5  1005      Tony  99.14

(1)딕셔너리로 생성하기

data = {
    '학번' : ['1000', '1001', '1002', '1003', '1004', '1005'],
    '이름' : [ 'Steve', 'James', 'Doyeon', 'Jane', 'Pilwoong', 'Tony'],
    '점수': [90.72, 78.09, 98.43, 64.19, 81.30, 99.14]
    }

df = pd.DataFrame(data)
print(df)

 

(2)리스트로 만들기

list_data = ['2019-01-02',3.14,'ABC',100,True]
series_data = pd.Series(list_data)
print(series_data)

 

 

(3) 튜플로 만들기

tup_data = ('용근','1995-02-08','남',True)
series_data = pd.Series(tup_data, index = ['이름','생년월일','성별','학생여부'])
print(series_data)

 

2. 넘파이(Numpy)

*판다스와 넘파이의 차이

Numpy: 같은 데이터 타입의 다차원 배열, 난수생성 가능, 연산 가능. 3차원 이상의 다차원 데이터를 담을 수 있음

Pandas: 다른 데이터 타입을 담을 수 있는 테이블, sql쿼리로 데이터 편집 가능. 최대 2차원 데이터만 담아서 활용할 수 있음

 

1)np.array( )

np.array( )는 리스트,튜플,배열로부터 ndarray를 생성함 파이썬 자료구조중 하나인 리스트를 가지고 1차워 배열을 생성해 보겠다.

 

# 1차원 배열
vec = np.array([1, 2, 3, 4, 5])
print(vec)

[1 2 3 4 5]

 

# 2차원 배열
mat = np.array([[10, 20, 30], [ 60, 70, 80]]) 
print(mat)

[[10 20 30]

[60 70 80]]

 

print('vec의 타입 :',type(vec))
print('mat의 타입 :',type(mat))

vec의 타입 : <class 'numpy.ndarray'>

mat의 타입 : <class 'numpy.ndarray'>

 

 

 

print('vec의 축의 개수 :',vec.ndim) # 축의 개수 출력
print('vec의 크기(shape) :',vec.shape) # 크기 출력
vec의 축의 개수 : 1
vec의 크기(shape) : (5,)
print('mat의 축의 개수 :',mat.ndim) # 축의 개수 출력
print('mat의 크기(shape) :',mat.shape) # 크기 출력
mat의 축의 개수 : 2
mat의 크기(shape) : (2, 3)

 

 

2)Numpy 슬라이싱

 

[[1 2 3]
 [4 5 6]]
# 첫번째 행 출력
slicing_mat = mat[0, :]
print(slicing_mat)
[1 2 3]
# 두번째 열 출력
slicing_mat = mat[:, 1]
print(slicing_mat)
[2 5]

3)Numpy 정수 인덱싱

 

mat = np.array([[1, 2], [4, 5], [7, 8]])
print(mat)
[[1 2]
 [4 5]
 [7 8]]
# 1행 0열의 원소
# => 0부터 카운트하므로 두번째 행 첫번째 열의 원소.
print(mat[1, 0])
4

 

3. 맷플롯립(Matplotlib)

 

'개념 정리 > 문법 정리' 카테고리의 다른 글

Matplotlib 여러 개의 그래프 그리기  (0) 2022.06.19
함수 파라미터 args  (0) 2022.06.19
append / extend / insert 함수  (0) 2022.06.18
if 조건문 포맷  (0) 2022.06.18
input함수  (0) 2022.06.18