[데이터 분석] 데이터 준비하기 : 다듬기, 변형, 병합

이미지
 미국 농무부는 음식의 영양소 정보 데이터베이스를 제공하고 있습니다. 영국 해커 애슐리 윌리엄스는 이 데이터베이스를 Json 형식으로 웹사이트 ( http://ashleyw.co.uk/project/food-nutrient-database )에 제공하고 있습니다.  각 음식에는 수자로 된 고유 ID와 영양소 및 제공량을 담고 있는 두 가지 리스트가 있으나 이 데이터 형식은 분석하기 좋지 않으므로 데이터 형식을 바꿔 보도록 하겠습니다.   웹사이트에서 데이터를 내려받은 다음 압축을 해제하고 선호하는 JSON 라이브러리를 사용해서 파이썬에 읽어오도록 하겠습니다.  db에 있는 각 엔트리는 한 가지 음식에 대한 모든 정보를 담고 있는 사전형입니다. 'nutrients' 필드는 사전의 리스트이며 각 항목은 한 가지 영양소에 대한 정보를 담고 있습니다.  사전의 리스트를 DataFrame으로 바꿀 때 추출할 필드의 목록을 지정해줄 수 있습니다. 음식의 이름과 그룹, id 그리고 제조사를 추출해 보도록 하겠습니다.  그리고 value_counts 메서드를 이용해서 음식 그룹의 분포를 확인해 볼 수 있습니다.  이제 모든 영양소 정보를 분석해 보도록 하겠습니다. 먼저 더 쉽게 분석을 하기 위해 각 음식의 영양소 정보를 하나의 테이블에 담아보겠습니다. 그러기 위해서는 몇 가지 과정을 거쳐야 하는데 먼저 음식의 영양소 리스트를 하나의 DataFrame으로 변환하고 음식의 id를 위한 칼럼을 하나 추가합니다. 그리고 이 DataFrame을 리스트에 추가합니다. 마지막으로 이 리스트를 concat 메서드를 사용해서 하나로 합쳐보겠습니다.  문제가 없다면 nutrients는 다음과 같을 것입니다.   총 389355개의 데이터가 있습니다. 하지만 이 DataFrame에는 중복된 데이터가 있으므로...

[책 리뷰] 프로페셔널의 조건

이미지
 서평  노트를 뒤적거리다 작년에 읽은 피터드러커의 프로페셔널의 조건이란 책에 대해 간단하게 메모해 놓은 것을 발견했다. 작년에 들은 어떤 강의에서 자기 개발서의 원조격인 책이라고 이것만 보면 다른 자기 개발서들은 이 책을 보고 저자들이 주석을 달아 놓은 수준이라 굳이 읽을 필요가 없다고 한 강사님의 말을 기억해 두었다가 도서관에서 빌려서 봤었다. 읽어보고 느낀점은 그 분야의 고전에 해당하는 책들은 다르구나라는 느낌과 다른 자기 개발서들은 이 책에서 하는 말들의 일부분을 더 알아듣기 쉽게 설명했구나라는 생각이 들었다. 그리고 항상 명심해두고 있어야할 말들이 있는 것 같아 다시 한번 정리해 봤다. 요약  효과적인 사람, 지속적인 성장을 할 수 있는 사람, 변화 할 수 있는 사람이 되어라  그리고 이책에서 내가 제일 인상깊게 보았던 7가지가 있다. 1. 나에겐 분명 한 번더 도전해 볼 의무가 있다.  - 실패 한다고 해서 포기하지 말라는 의미였던것 같다. 2. 완벽은 나를 피해가겠지만 나는 다시 한 번 완벽을 추구 할 것이다.  - 내가 생산하는 생산물 중 가장 완벽한 것은 내가 바로 다음에 할 것이다. 3. 항상 '신들이 보고있다.' 라는 생각을 해라.  - '누가 보는것도 아닌데 대충하지뭐'라는 마음가짐을 버리라는 뜻인것 같다. 4. 잘한일, 잘하고자 한일, 잘하고자 충분히 노력하지않은일, 실패한일에 대한 검토를 하라  - 피드백을 하라 5. 새로운 일을 할 때에는 그에 걸맞는 사람이 되어라.  - 자리가 사람을 만든다는 수동적 의미가 아닌 내가 그 자리에 맞는 사람이 스스로 되라는    것 같다. 6. 어떤 일을 할 때에는 예상하는 결과를 기록하고 그 이후에 그 기록과 비교할 것  - 이것도 피드백과 비슷한 말인것 같다. 7. 음... 내가 기록하면서 누...

[Digital Signage] Xibo 설치

이미지
 이번에는 Digital Signage용 오픈소스 OS인 Xibo를 설치하는 방법에 대해 알아보겠습니다. Xibo는 php기반이기 때문이 php가 설치되어 있어야 합니다. php 설치가 필요하신 분들은  http://cd4761.blogspot.kr/2016/02/it-php.html 로 가셔서 설치를 하신다음 진행해주시기 바랍니다.   http://xibo.org.uk/  에 접속해서 아래 그림과 같이 표시된 것들을 다운로드 받습니다.  먼저 CMS를 설치해 보도록 하겠습니다. CMS CMS란?  CMS는 Content Management System의 약자로 말그대로 Digital Signage를 통해 보여줄 컨텐츠들을 관리하는 시스템이라 보시면 됩니다. CMS는 PHP/ MySQL 웹 어플리케이션 이며 Apache, nginx 그리고 Microsoft IIS에서 작동 합니다. CMS설치 다운로드 받은 CMS파일을 압축 푼 다음 C:\Bitnami\wampstack-5.5.31-0\apache2\htdocs에 다음과 같이 위치 시켜줍니다. Xibo폴더 내부는 다음과 같습니다. 그 다음 브라우저에 localhost/Xibo를 입력하면 다음과 같은 화면이 출력됩니다. 하지만 사진을 보시면 각 항목이 체크 표시가 된 경우도 있고 x표시가 된 경우도 있을 것 입니다. 그럴 경우 C:\Bitnami\wampstack-5.5.31-0\php 폴더에 있는 php.ini 파일을 열면  위와 같은 부분이 있을 것입니다. 저는 Fileinfo와 SOAP Extension에 문제가 있다고 되어있는데 이럴경우 저 부분에 extension=php_fileinfo.dll과 extension=php_soap.dll을 입력해주시면 해결이 됩니다.  나머지 설치를 진행해주시고 설치가 완료된 후에 로그인을 하면 ...

[기타IT] php설치

이미지
 이번에는 php 설치하는 법에 대해 알아보겠습니다. 저는 개발할 때 node.js를 사용 하지만 이번에 프로젝트하는데 필요한 xibo가 php기반이라 설치하게 되었습니다. php란?  php(약칭 : Hypertext Preprocessor)는 프로그래밍 언어의 일종으로 동적 웹 페이지를 만들기 위해 설계되었습니다. php는 일반적으로 혼자 설치되지 않고 apache와 MySql과 함께 설치되는 것이 일반적입니다.  php는 apache를 통해 브라우저로 정보를 전송하고 MySql을 이용해 사용자의 정보를 저장하기 때문에 일반적으로 함께 사용되고 설치됩니다. 이를 APM이라 하는데 Window에 설치하는 APM을 WAPM이라 합니다. 이걸 각각 설치 할 수도 있지만 난이도가 있기 때문에 Bitnami를 이용해 한번에 설치해 보도록 하겠습니다. php설치 먼저 https://bitnami.com/stack/wamp 에 접속하여 설치파일을 다운로드 받습니다.  다운로드가 완료되면 설치파일을 실행합니다. 다른 구성요소들은 굳이 필요하지 않으니 체크박스를 해제해줍니다. php에서 쓰는 MySql의 root사용자 비밀번호를 설정해주는 화면입니다. 6자리 이상의 비밀번호를 입력하시면 됩니다. 설치가 되고 있는 화면입니다.  설치가 완료되고 브라우저 주소창에 localhost를 쳤을 때 다음과 같은 화면이 출력되면 제대로 설치가 된것입니다.

[기타IT] 파싱

이미지
 파이썬 공부를 하다가 파싱에 관한 코드를 보고 파싱이 도대체 무엇인지 궁금해져서 파싱에 대해 알아 봤습니다.  파서(Parser)란? Compiler의 일부  즉, Compiler 나 Interpreter에서 원시 프로그램을 읽어 들여, 그 문장의 구조를 알아내는 구문 분석(parsing)을 행하는 프로그램을 파서라고 합니다. 파싱 형태 - DOM, SAX DOM과 SAX란?  하나의 API로서, XML 문서를 구조화 - XML문서에 있는 Data를 효과적으로 다루기 위해 필요합니다. 이번에는 DOM방식에 대해서만 알아보도록 하겠습니다. XML 파서의 분류  DOM(Document Object Model) : 트리 기반의 파서  SAX(Simple API for XML) : 이벤트 기반의 파서 -> DOM과 SAX 방식의 차이점은 문서 접근 방식의 차이라고 합니다. 즉, DOM은 임의적 접근을 하고 SAX는 순차적 접근을 합니다. DOM - 객체 지향 모델  DOM 문서의 물리적 구조와 문서가 접근되고 다루어지는 방법을 정의하는 방식 입니다. XML 문서를 하나의 Tree 구조 로 본다는 특징이 있고 파서가 모든 이벤트들을 잡아서 그 결과를 메모리 상에 트리 형태로 만들고 application이 그 결과를 이용하도록 합니다.   DOM의 특징으로는 1. XML 문서를 메모리에 올려놓고 데이터를 찾아 들어가는 방식을 사용 2. 모든 데이터를 다 읽기 때문에 큰 문서일 경우 로딩 시간이 걸리거나 메모리 낭비를 낭비    하게 됨 3. 문서 편집 가능 4. 데이터를 저장된 순서대로 받음 과 같은 것들이 있습니다.   그리고 DOM의 목적으로는 1. 다양한 환경과 application에서 사용할 수 있는 표준적 프로그래밍 인터페이스 제...

[머신러닝] 최소자승법(Least Square Method)

이미지
 이번에는 시계열 분석에 사용되는 최소자승법 에 대해 알아보겠다. 예를 들어, 대학교 입학성적이 대학교 재학 중 학업성적에 미치는 영향을 조사하기 원한다고 가정하자. 이를 위해 6명의 재학생의 입학성적( x 1 =수능성적,   x 2 =학생부 성적)과 학생들의 대학 재학시 총 평균학점(y=GPA)의 자료를 얻었다. 이 자료를 근거로 재학생의 학업 성취도가 대학 입학성적과 어떤 연관이 있는지 살펴 보려면  Y = a 1 x 1  + a 2 x 2     (1.1)  을 만족하는  a 1,  a 2  값을 정하면 된다. 여기서  a 1 은 수능성적이 1점 상승할 때 대학에서의 GPA가 얼마나 오르는지에 대한 증가량을 나타내며  a 1 >0 이면 수능 성적이 높을 수록 GPA가 높아짐을 의미한다. 모든 자료가 식 1.1을 만족시키는 것은 불가능하기 때문에 오차항(error)  e i 을 이용하면 i 번째 학생의 경우 y i = a 1x x 1i  + a 2 x 2i + e i    (1.2) 라는 모형식을 가정 할 수 있다. 이를 행렬식으로 표시하면 y = Xa+e 라고 할 수 있다. 그리고 여기서 a값을 결정하기 위해 흔히 사용하는 방법은 오차항의 길이 제곱을 최소로 하는 방법인데, 이를 최소자승법이라고 한다.  기하학적으로 오차항의 길이를 최소로 하는 방법은 벡터 y를 열공간 C(X)에 투영시켰을 때의 a값을 얻는 거이며, 이때 투영된 그림자를 y^이라 하고 그 때의 a값을 a^이라고 한다면  y^ = Py = X(X T X) -1 X T y = Xa^   (1.3) 로 부터 a^ = (X­ T X) -1 X T y   (1.4) 라는 값이 얻어지고 이를 '최소자승추정량(Least Sq...

[데이터 분석] 파이썬에서 소셜 데이터 수집과 분석

이미지
이 글은 정광윤님이 DB Guide.net에 연재한 개발자를 위한 파이썬 분석을 정리한 내용입니다. ---------------------------------------------------------------------------------------------------  트위터에서 트윗되고 있는 데이터 중에서 파이썬, 자바스크립트, 루비(Ruby)의 인기도를 분석해 보자. 0. 준비하기 먼저 필요한 패키지들은 다음과 같다. 1. pandas 2. matplotlib 3. json 4. re 5. tweepy 여기서 3,4번은 이미 내장되어 있는 패키지이다. 1,2 번은 pip install을 사용해 설치하면 되기 때문에 tweepy 설치 방법만 알아 보겠다. 1. Twitter API key 획득하기  Application Programming Interface의 약자인 API라는 것이 있다. 이 API 덕분에 우리가 데이터를 흔하게 접할 수 있고 쉽게 데이터를 획득 할 수 있다. API는 즉, 프로그래밍 언어로 어플리케이션에 접근할 수 있는 인터페이스이다.  트위터로부터 데이터를 가져오기 위해서는 아래 4가지 정보가 필요하다. 1. API Key 2. API Secret 3. Access Token 4. Access Token Secret  이 네가지 정보를 얻기 위해서는 트위터 계정이 있어야하고 계정에 본인의 핸드폰 번호도 등록되어 있어야 한다. 1. https://apps.twitter.com/에 접속한다. 2. 우측 상단의 'Create New App'을 클릭한다. 3. 양식들에 값들을 적당히 채운다.(이름, 설명, 웹사이트(아무거나 입력 가능)만 입력하면 된다.) 4. 'Create your Twitter application'을 클릭한다. 5. 'Keys and Access Tokens' 탭으로 이동하면 Consumer Key(A...