본문 바로가기

Programming/CxO를 위한 코딩

(18)
04-5 데이터 프레임(pandas.DataFrame) pandas 패키지의 DataFrame은 엑셀 데이터와 유사합니다. 엑셀이 가로 세로의 각 칸에 데이터가 있고, 세로축의 행과 가로축의 열이 있듯이, DataFrame도 동일한 구조를 가집니다. data : 실제 데이터 값들 index: 데이터를 구분하는 값들 columns: 데이터 항목들 아래 그림을 보면 DataFram의 data, index, columns가 뭔지 쉽게 파악이 될 것입니다. Pandas 설치하기 Pandas도 Numpy와 마찬가지고 파이썬의 기본 라이브러리가 아니기에, 추가로 설치를 해줘야 합니다. 설치 방법은 Numpy설치 때와 마찬가지로 'pip install'을 사용하면 됩니다. 1) 윈도즈 명령어 창을 연다. : "윈도 키 + R" --> "cmd" 타이핑 2) 'pip in..
04-4 배열(numpy.array) 이번 페이지에서는, 수학에서의 '행렬' 데이터를 처리할 수 있는 자료형인 numpy.array에 대해서 알아보겠습니다. 넘파이(NumPy)는 파이썬에서 과학/수학 계산을 할 수 있도록, 여러 가지 과학/수학용 자료형/함수들이 들어있는 라이브러리입니다. (과학자/수학자들이 파이썬으로 프로그래밍하다가, 필요한 기능들을 만들었고, 이것들을 집대성해서 일반인도 쓸 수 있게 공개한 것이 '넘파이' 라이브러리입니다.) 여기서는 넘파이의 행렬 계산 기능을 중심으로 살펴볼 것입니다. 왜 행렬이 필요한가? (왜 행렬까지 공부해야 하는가?) 파이썬의 기본 자료형인 리스트(list), 딕셔너리(dict), 튜플(tuple), 집합(set)을 공부했는데, 기본 자료형도 아닌 numpy.array라는 것을 왜 알아야 하는 걸까..
04-4 집합(set) 집합(Set)은 수학에서의 '집합'과 같은 성질을 같습니다. 생성은 set( [원소1, 원소2, ...] )와 같이, set( ) 메서드에 리스트를 전달해서 생성 중복된 원소가 없음 (중복된 원소를 가질 수 없음) 원소간의 순서가 없음. 집어넣은 차례대로 원소가 있는게 아님 --> 인덱스 번호로 원소를 읽을 수 없음 집합간의 연산을 통해서 교집합/합집합/차집합을 구할 수 있음 a = set([1,2,3,4]) b = set([4,5,6]) 합 = a | b print(합) # {1, 2, 3, 4, 5, 6} 교 = a & b print(교) # {4} 차 = a - b print(차) # {1, 2, 3} 위 내용만 읽고 전부 이해 되었다면, 아랫 부분에 있는 내용들 스킵하고 다음글로 넘어가도 됩니다...
04-3 튜플(tuple) 튜플(tuple)은 리스트(list)와 비슷한 기능을 가지는데, 차이점은 한 번 만든 튜플 자료들을 추가/삭제를 못한다는 것입니다. 즉, 처음에 만든 자료를 읽기만 하는 용도로 쓸 데 사용합니다. 그럼 추가/삭제를 할 수있는 리스트만 사용하지 왜 튜플이란 걸 만들어서 귀찮게 할까요? 속도 때문입니다. 추가/삭제할 수 없는 튜플은 리스트에 비해서 생성 및 읽기 속도가 빠릅니다. 리스트는 나중에 추가/삭제가 가능한 구조로 데이터를 생성하느라 시간이 걸리는데 반해, 튜플은 그런 작업이 없기에 빠릅니다. 그래서, 추가/삭제가 필요 없을 것 같은 데이터를 처리할 때는 튜플을 사용하면 좀 더 낫긴 한데, 자료가 수만 건 이상이 되지 않는 한, 사실 속도 차이를 느끼기 힘듭니다. 그냥 리스트만 사용해도 충분합니다. ..
04-2 딕셔너리(dict) 앞 페이지에서 리스트(list)에 대해 알아봤습니다. a = [1, 3, 5, 7, 9] '10보다 작은 홀수' 혹은 '어떤 학생에 대한 국어/영어/수학 점수'처럼, 여러 개의 값들을 뭉치로 다룰 수 있는 것이 '리스트'였습니다. 그런데, `학생 A의 국어/영어/수학 점수, 학생 B의 국어/영어/수학 점수,...'처럼 100명의 학생에 대한 점수들을 다뤄야 한다면 어떻게 할까요? '학생 A'에 대응하는 `국/영/수 점수`, '학생 B'에 대응하는 `국/영/수 점수` 같은 자료가 만들어져야 할 것입니다. 이러한 처리가 가능하도록 만들어진 자료형이 딕셔너리(Dictionary)입니다. 1. 생성하기 (Create) 비어있는 딕셔너리 만들기 a = {} 딕셔너리는 중괄호를 이용해서 만듭니다. (리스트는 대괄호..
04-1 리스트(list) 앞 장의 '기본 문법 익히기'에서, 어떤 약속된 문자에다가 값을 지정하고 그 값을 바꾸면서 사용할 수 있는 것을 본 바 있습니다. 변수라는 것이죠. 1부터 100까지의 합을 구하는 코드는 아래와 같고, 여기서 'sum'이 변수입니다. sum = 0 for i in range(1,101,1): sum = sum + i sum 변수가 처음에는 0이었다가 1 -> 3 -> 5 -> ... -> 5050 이렇게 변하게 됩니다. 그런데, 여기서 sum이 한 가지 값만 가지는 것이 아니고, 이렇게 변하는 모든 값을 덩어리로 가지고 있으려면 어떻게 해야 할까요? 이런 요구를 만족시킬 수 있는 게 리스트(list)입니다. 리스트형 변수를 만들면 이 변수에 여러 개의 값들을 저장할 수 있습니다. 이제 이 리스트형 변수를..
04장. 데이터 다루기 이번 장에서는 데이터를 다룰 수 있는 방법을 익힙니다. 파이썬에서 데이터를 다루기 위해서 익혀야하는 자료형은 6가지입니다. 4가지는 파이썬에서 기본으로 제공하는 것이고 2가지는 추가로 설치해야하는 라이브러리입니다. 기본 제공 리스트(list) 딕셔너리(dictionary) 튜플(tuple) 집합(set) 외부 라이브러리 배열(array) : Numpy 데이터프레임(DataFrame): Pandas 여기서는 기본 제공되는 라이브러리중 리스트와 딕셔너리를 집중으로 보고, 튜플과 집합은 간단히 설명할 것입니다. 주로 리스트와 딕셔너리가 사용되기 때문입니다. 넘파이(Numpy)의 배열과 판다스(Pandas)의 데이터 프레임도 이번 챕터에서 다룹니다. 04장 목차 04-1 리스트(list) 04-2 딕셔너리(di..
03-3 if 구문 익히기 앞 페이지에서 만든 gugu 함수는 아래와 같았습니다. def gugu(i): for j in range(1,10): print(i, 'x', j, '=', i * j) 입력으로 들어온 i가 어떤 수라도 다 처리합니다. 0이건 음수이건. 이것을 2단~19단까지만 수용하고, 다른 수가 들어올 때는 '2단~19단까지만 지원해요!'라는 메시지를 나타나게 하려면 어떻게 해야 할까요? 들어오는 i에 대해 판단을 하면 됩니다. if 구문을 쓰는 거죠. def gugu(i): if i19: print('2단~19단까지만 지원해요!') return for j in range(1,10): print(i, 'x', j, '=', i * j) i가 1 미만이거나 19를 초과하면, 메시지 띄우고 return 해버리는 겁니다...
03-2 함수 만들기 앞에서 for를 이용해서 2단부터 9단까지의 구구단을 출력해 봤습니다. 근데, 2단만 출력하려면 어떻게 하면 될까요? i=2 for j in range(1,10): print (i, 'x', j, '=', i*j) 2단 하고 5단 만을 출력하려면 어떻게 하면 될까요? i=2 for j in range(1,10): print (i, 'x', j, '=', i*j) i=5 for j in range(1,10): print (i, 'x', j, '=', i*j) 2단, 4단, 6단, 8단, 10단, 12단을 출력하세요. def gugu(i): for j in range(1,10): print(i, 'x', j, '=', i * j) for dan in range(2,13,2): gugu(dan) 코드가 예상과..
03-1 반복작업 시키기 (for) 컴퓨터의 가장 큰 특징 중 하나가 시키는 것을 불평 없이 반복해서 할 수 있는 것입니다. 반복해서 뭔가를 시키는 명령이 for 입니다. 1에서부터 100까지 자연수를 더해라라는 명령을 하려면, 어떤 변수의 값을 1에서 100까지 증가시키면서 반복해서 더하게 하면 될 겁니다. sum = 0 for i in range(1,101,1): sum = sum + i print(sum) # 5050 출력될 것임 위 코드를 실행하면 5050이 출력될 겁니다. 코드에서 대해서 한 줄씩 설명하겠습니다. (처음이니깐 장황하게 설명) sum = 0 더해지는 값을 저장할 변수를 sum이라는 이름으로 했고, 초기값으로 0을 넣었습니다. 이 sum 변수가 최종에는 5050이 되겠죠. (5050은 1~100까지 더한 값) 변수는 ..