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 |