레이블이 파이썬인 게시물을 표시합니다. 모든 게시물 표시
레이블이 파이썬인 게시물을 표시합니다. 모든 게시물 표시

2023년 3월 21일 화요일

23년 첫번째 도서 리뷰 "파이썬 라이브러리를 활용한 텍스트 분석"

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


올해 첫 리뷰 책으로 파이썬을 이용한 텍스트 분석 책을 선택 했다.

기존에 봤던 파이썬을 이용한 데이터 분석 책의 대부분은 수치 데이터에 대한 이야기 였다면
이번 책은 글에 대한 이야기 이다.


컴퓨터에서 수는 비교적 다루기 쉬운 데이터에 속하는 편이다.

오죽하면 컴퓨터는 글자도 내부적으로 숫자로 처리 할까....(2진수 밖에 못다루니 당연한 얘기지만...)


책은 총 13장으로 구성되어 있으며 제목에서와 같이 텍스트 데이터를 모으고, 정리하고, 필요에 맞게 가공하고 그 결과물에서 데이터가 말하고 싶어 하는 의미있는 무언가를 찾는 과정을 설명 하고 있다.


그 과정에서 웹사이트 크롤링 같은것도 잠시 다루고 있는데 요즘 여기저기서 크롤링에 대한 요구가 많아서 상당히 유용한듯 하다.


텍스트 데이터를 다루는 만큼 기존에 데이터 분석에서 사용했던 라이브러리들과는 다른 라이브러리들을 많이 사용하고 있다.

이 책에서 많이 등장하는 라이브러리는 아래 두 가지가 대표적인 것으로 보이는데 scikit-learn은 기계학습을 위한 라이브러리이고 spaCy는 자연언어 처리를 위한 라이브러리 이다.

아래는 각 라이브러리의 설명을 링크해 두었다.

- scikit-learn : https://ko.wikipedia.org/wiki/Scikit-learn

- spaCy : https://en.wikipedia.org/wiki/SpaCy


위와 같은 라이브러리를 이용하여 유엔총회의 일반 토의 내용이나 로이터 웹사이트의 기사, 자바 개발도구 버그 리포트 내용등을 가지고 텍스트 데이터를 정형화 하여 분석 하는 내용을 다루고 있다.


대부분이 머신러닝과 자연어어 처리 과정을 통하는 내용이어서 그 쪽 방면으로는 크게 경험이 없는 나로서는 역시 익숙하지 않음에서 오는 생소하고 재미있는 내용들이 많은 듯 했다.

특히나 자연언어 처리라고는...대학때 전공과목이 있기는 했지만, 그 당시에는 학부생이 접근해서 이해 하기엔 너무 난해한 내용이었고 요즘 chatGPT처럼 뭔가 직접 경험 해 볼 만한 서비스도 존재 하지 않았었다.


그러다 보니 책에서 소개하는 단어 가방 모델(bag of words model) 같은 내용은 따로 찾아 보지 않으면 어떤 내용인지 쉽게 와 닿지가 않았었다.(이제 책볼때 점점 검색 하는 내용이 많아 지는거 같다...늙어 가고 있단....ㅜㅜ)


전체적으로 평하자면, 전체적으로 내용도 좋고 많이 접하지 못했던 분야의 내용이라 재미도 있는 좋은 책인 것 같다.

보다보니 이 책도 O'Reilly 책인데, 개인적으로 O'Reilly 책이 실패한 적이 별로 없고 내용이나 구성이 나랑 잘 맞는거 같다는 생각이 든다.




2022년 5월 20일 금요일

22년 세번째 도서 리뷰 "엑셀이 편해지는 파이썬"

표지 사진

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

분명 개발일을 하는 개발자이지만....이런저런 이유로 엑셀을 많이 사용하게 된다.

분석을 위한 통계자료를 만든다던가, 보고서를 만든다던가, 심지어 그냥 문서를 엑셀로 만드는 경우도 있다.

오늘도...엑셀로 보고서 하나 만들어 투척하고 퇴근했다!

 

서비스 추세를 분석해서 숫자들을 만들어 내고 그 숫자들을 다시 엑셀로...

거의 매일 진행하는 업무 중 하나이다.

그래서 늘 어떻게 하면 노가다를 좀 줄여볼까 고민을 하고 있던차에 이번 리뷰 도서로 "엑셀이 편해지는 파이썬"을 제공받게 되었다.

물론 업무에 활용가능한 내용들이 많을것 같은 사심을 품고 신청한거긴 하지만...ㅎㅎㅎ

 

지금까지 대부분의 한빛 도서가 그랬지만 개인적으로는 눈에 잘 들어 오는 편이다.

그리고 무려 라이브러리 만든 사람이 직접 쓴 책이기도 하다!!!

 

전체적인 내용을 보면 챕터1에서는 파이썬의 기본적인 내용을 다룬다. 여기까진 뭐....

챕터2 에서는 넘파이, 판다스를 이용한 데이터를 조작하는 방법에 대해서 설명하고 있다. 여기 까지도 뭐...

챕터3은 판다스와 몇 가지 reader, writer 패키지를 이용한 액셀 조작에 대해서 소개 하고 있다.

챕터3의 내용은 다른 파이썬 서적들도 일부 다루는 내용이기도 하다.

 

챕터4에서 드디어 엑셀윙스를 이용한 엑셀 다루는 방법등을 소개하고 있다.

이 부분이 아마 이 책의 백미가 아닐까 생각 한다. 백미...너무...나이든 티가...ㅜㅜ

 

예전에는 엑셀에 프로그래밍을 적용 하려면 VBA가 거의 유일한 방법이었고 이 때문에 Windows가 아닌 다른 OS에서는 엑셀 애플리케이션을 만드는것이 거의 불가능 했었다.

하지만 파이썬이 등장하고 엑셀윙스같은 라이브러리가 만들어지면서 Windows 뿐만 아니라 Linux나 MacOS에서도 엑셀 애플리케이션을 만들수 있게 되었다.

책에서는 데이터를 다루는 방법과 데이터를 이용하여 차트등으로 시각화 하는 방법 등에 대해서 소개 하고있다.

그 외에도 엑셀윙스를 사용할때 성능을 올리는 방법이나 MacOS에서 활용하는 방법 등에 대해서도 다루고 있다.

또 엑셀을 FrontEnd로 사용하는 방법 등도 소개 하고 있다.

 

엑셀윙스를 다루는 대부분의 내용은 사용방법에 대한 내용이기 때문에 이해가 안될 경우 한번 따라 해 보면 "아~" 하면서 이해 할 수 있는 내용들인것 같다.

라이브러리를 사용하는데 어떻게 만들어 졌는지 까지는...

 

요즘 이런저런 바쁜 업무들이 지나가고 나면 책에 내용, 특히 엑셀윙스 부분 내용들을 천천히 보면서 평소 노가다성 엑셀 파일 생성 업무를 좀더 효율적으로 바꾸는 시간을 가져 봐야겠다.

 

근데....왠지 내가 하지 않고 시킬것만 같은....;;;

2021년 9월 16일 목요일

도서리뷰 8번째 "파이썬 라이브러리를 활용한 데이터 분석"

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."

 

책 표지 사진

지금까지 리뷰한 책들 중에서 파이썬 책이 절반 정도 되는것 같다.

그 중에 상당수는 초급자를 위한 책이 아니었다.

이번 책도 마찬가지로 초급자를 위한 책은 아닌것 같다.

 

시작부터 데이터 분석에 많이 사용하는 라이브러리들을 소개 하고 있다.

그리고 설치에 관한 내용과 기초에 관한 내용을 잠시 다루고나서는 바로 자료구조, 함수, 파일로 넘어간다.

따라서 파이썬을 처음 접하는 사람에게는 맞지 않는 책이다.

 

개인적으로 요즘 로그 분석등에 자주 파이썬을 활용하고 있다.

급할땐 별로 찾아 보지 않고 생각 나는데로 필요한 기능을 구현해서 사용하고 있는데

이런 책을 볼때 마다 '아...numpy 사용해서 해봐야 하는데...' 라는 생각을 한다.

pandas도 마찬가지고...

 

이 책은 numpy, pandas를 시작으로 여러곳에서 많이 사용하는 xml, json등을 다루는 방법등 다양한 데이터를 다루는 내용으로 초반부를 시작한다.

이후 시각화에 대한 내용을 거쳐서 나에게 중요한 시계열 데이터 다루는 방법에 대해서도 상세하게 소개하고 있다.

 

후반으로 넘어 가면 pandas나 numpy의 고급 내용에 대해서 다루는데 이 부분들은 좀더 시간을 내어 차근 차근 살펴 보면 좋을것 같다.(나에게...)

 

전반적으로 각 라이브러리 자체에 대해서 상세하게 다루고 있는 편인듯 해서 어느정도 프로그래밍 지식이 있다면 필요한 기능을 구현할때 참고 서적으로 상당히 도움이 되리라 생각 한다.

사실 뭔가 구현하려고 필요한 것들을 검색 해 보면 짤막하고 동일한 내용이 담긴 블로그들이 많이 나와서 검색하다 지칠때가 있는데 이런 책이 옆에 있다면 많은 도움이 될것 같다.

2021년 8월 12일 목요일

도서리뷰 일곱번째 "처음 시작하는 파이썬(2판)"

"한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다."


제목을 쓰다가 응? 영문 제목이 Introducing Python인데...따로 한글 제목을...이유가...

난 여전히 업무에서 로그분석이나 통계자료 생성 등에 파이썬을 많이 활용 하고 있다.
프로젝트들 몇개 정리해서 통합본 만들거나 GUI 만들어 넣어봐야 하는데....

늘 그렇듯 기술 서적은 목차부터 확인 하게 된다.

이번 책은 근래 리뷰했던 기술 서적들 중에서 가장 페이지수가 많은것 같다.
그래서인지 기초부터 실무에 쓰이기 좋은 내용까지 두루 다루고 있다.

Part1은 파이썬 기초를 다루는데 우리가 흔히 알고 있는 내용들이다.
소개로 시작해서, 데이터 타입, 변수, 제어문, 반복문, 문자열, 튜플, 딕셔너리를 거쳐 함수, 모듈 패키지로 넘어가는...

Part2는 어떤 내용은 이미 활용중이고 어떤 내용은 어렴풋이 있는 정도만 알고 있던 내용들로 구성되어있다.

볼때 마다 햇갈리는 정규표현식이나 자주 사용하는 날짜와 시간, 파일과 디렉터리...
날짜, 시간, 파일, 디렉터리는 로그 분석때문에 정말 많이 사용하고 있다.

프로세스나 스레드는 아직 파이썬으로는 구현 해본적은 없고
파일, 데이터 베이스는 반반?
네트워크 파트에서는 뒤쪽에 나오는 원격 프로시저나 빅데이터, 클라우드 관련 내용은 파이썬으로 아직 다루어본적이 없는 내용들이라 흥미도 많이 생기고 업무에 도입 해 보고 싶다는 생각이 든다.

웹 파트나 파이 비즈니스, 파이 과학 챕터 역시 시간을 두고 천천히 살펴보면 업무에 도움이 될 만한 내용이 상당히 있을듯 하다.

전반적으로 평가 해 보자면 종합 선물셋트 같은 책이란 생각이 든다.
기초부터 차근차근 잘 다루고 있고 책 2/3의 분량이 활용에 관한 내용들이라 프로그래밍에 어느정도 지식이 있다면
누구나 이 책을 통해 파이썬을 도입하고 활용하는데 많은 도움이 되리라 생각 한다.

물론 기술 서적 특성상 처음부터 줄줄 읽어 가기엔 좀...
필요하다면 part1의 기초 부분만 천천히 따라하며 공부하고 뒤쪽 part2는 필요한 부분만 찾아서 활용하면 좋을것 같다.

이 책...나도 나지만 팀에 후임에게도 소개 해 줘야 겠다.
나보다 그 친구가 활용도가 높을듯...ㅎㅎ

2021년 4월 3일 토요일

도서리뷰 세번째 : 이것이 데이터 분석이다 with python

먼저 이렇게 생긴 책이다.

이전까지는 리뷰 도서 신청할때 원하는 책의 정보를 조금 찾아보고 신청 했었는데
이번엔 일이 바빠서 그러지 못하고 제목만 보고 신청을 했다.
그게 실수라면 실수일까....

먼저 프로그래밍 초보자를 위한 책은 아니다.
파이썬에 대한 설명은 없다고 봐야 한다.

그렇다고 고급 사용자를 위한 책이라 보기도 조금 힘들거 같다.
사실 떡하니 초급자 책이라고 사이트에 표시가....
난 제목만 보고 중급자 이상일줄....ㅠㅠ

간단히 요약 하면 판다스나 넘파이, matplotlib 등을 활용하여
데이터를 시각화 하고 분석하는데 도움을 줄 수 있도록 하는 수준 까지라고 보면 된다.

웹 크롤링등 데이터 수집을 위해서 사용하는 몇가지 기술들도 공부하는 입장에서는 도움이 될거 같다.

조금 아쉬운점은 데이터베이스와 연동하여 대량의 데이터를 가지고 와서 분석 하거나
대량의 데이터에 대한 분석이나 시각화에 대한것도 좀더 다루었으면 어떨까 하는 점이다.

그래서 초급(초보자가 아니다!)이나 초중급 정도에서 보면 꽤 유용하고 도움이 될 책이란 결론을 내려본다.

파이썬을 어느정도 알고 있다면 쉽게 따라 하면서 활용할수 있는 내용들을 잘 정리해두었다.
특히 데이터 시각화나 분석에서 많이 사용하는 대표적인 라이브러리 세가지에 대해서 다루고 있어서 데이터 분석 관련 입문자 들에게는 좋은 참고 도서가 될거라 생각 한다.

다음번에 리뷰 도서 선택할땐 좀더 사전 정보를 찾아보고 선택해야 할거 같다.
리뷰 할때 하더라도 나에게 도움이 될 수 있는 책을 하면 좋으니...
그런 의미에서 지난번 진지한 파이썬은 꽤 좋은것 같다.

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다.

2021년 2월 4일 목요일

도서리뷰 : 진지한 파이썬(한빛미디어)

얼마전 한빛미디어에서 도서리뷰어 이벤트를 진행하기에 응모하였다.
그 후에 리뷰어로 선정되었음을 메일로 알려왔고 리뷰를 진행할 여러 책들 중에서 선택하는 과정을 거쳐서 위 책을 받게 되었다.

습관적으로 저자의 인사말과 목차부터 살펴보다가 깨닭은건 초급자를 위한 책은 아니란것이었다.
강의때문에 최근 초급자를 위한 파이썬 책을 몇권 보다보니 의례히 초급자용 책인가 싶었던것 같다.

목차에서 소개한 책의 내용이나 아무 생각없이 읽기 시작한 1장의 내용은 개인적으로 상당히 도움이 될것 같다는 생각을 하게 만들었다.

컴퓨터공학을 전공하고 2003년부터 지금까지 개발일을...물론 몇년 전부터는 관리업무가 더 많긴 하지만...
2014년부터 작년까진 대학에서 강의도 하면서...

그러면서 뭔가 구현에만 급급하고 타성에 빠져서 엉망으로 개발을 해온게 아닌가 하는 생각이 들었다.

1장의 제목이 '프로젝트 시작하기' 이다.
아주 기본적인것들에 대한 내용을 다루는데 여기서부터 반성을 시작하게 된것 같다.
알고는 있었지만 간과하고 대충대충하며 넘어갔던 것들.
물론 파이썬에 특화된 내용을 바탕으로 적혀 있기는 하지만 다른 언어역시 같은 내용들을 모두 가지고 있는 그런 기본에 대한 내용들이었다.

아직 책을 다 읽어보지는 못했다.

이후 다루는 내용들이 문서화와 모범 API사례, 배포, 단위테스트, 성능과 최적화...
계속해서 읽어 가면서 더 반성을 하게 되지 않을까 생각한다.

요약해보자면
파이썬 입문자 또는 초심자를 위한 책은 아님.
분명히 개발 경험이나 어느정도의 사전지식이 필요.
중급자 또는 중급으로 넘어가려는 단계에서는 꽤 도움이 될만한 책.
파이썬을 배웠고 파이썬으로 프로젝트를 해보적이 있다면, 파이썬으로 좀더 좋은 프로그램을 만들기 위해서 어떻게 해야 할지에 대한 고민을 덜어 줄 수 있는 책.

일단 여기까지 쓰고...
책을 마저 읽어보고 나서 리뷰 내용을 좀더 생각해 보는것이 좋을것 같다.

2019년 4월 25일 목요일

웹 크라울링(Web Crawling)

코드 원 제작자께서 허락해주셔서 올리게 되는 파이썬 웹 크라울링!

딴게 게시판에서 어느분이 기존 코드 웹 크라울링 코드를 수정해 달라고 글을 올리셨다.
쪽지와 메일이 오가면서 소스를 받고 필요하신 사항을 정리한 후에 수정을해서 드렸다

예전에 자바에서  html 태그 파싱해서 사용한적이 있는데
확실히 파이썬이 그 보다는 수월하게 구현되는것 같다.(파이썬 만세)

간략히 내용을 정리 하자면
먼저 태그 파싱을 위해서 BeautifulSoup  이라는 라이브러리를 사용한다.

아래와 같은 코드로 특정 url의 내용르 받아서 BeautifulSoup 객체로 받아낸다.
soup = BeautifulSoup(source_code_from_URL, 'html.parser', from_encoding='UTF-8')

특정 사이트의 게시판 같은 곳에서 검색한 결과에 대한 글 전체를 가지고 오도록 하는 내용인데 아래와 같이 구현해서 검색 결과에서 글 링크들을 전부 가져 오도록 하고 있다.
(이 부분은 원 제작자분이 구현해 놓으신 부분이다.)
for title in soup.find_all('div', 'table-row'):
    title_link = title.select('a')
    article_URL = title_link[0]['href']
    get_text(article_URL, output_file)

저렇게 가지고 온 링크들을 다시 get_text함수에 넘겨서 내용을 가지고 오도록 하고 있다.
아래가 get_text함수이다.(이것도 원 제작자분이 만드신걸 일부 수정했다.)
def get_text(URL, output_file):
    URL = "http://www.kindernews.net" + URL
    source_code_from_url = urllib.request.urlopen(URL)
    soup = BeautifulSoup(source_code_from_url, 'html.parser', from_encoding='UTF-8')

    title = soup.find('div', "article-head-title") 
    news_date = soup.find("meta", property="article:published_time") 

    content_of_article = soup.find_all('p') 

    output_file.write(str(title)+"\n") 
    output_file.write(str(news_date)+"\n") 
    for item in content_of_article:
        string_item = str(item)
        output_file.write(string_item+"\n")

    output_file.write("\n") 


soup.find나 soup.find_all부분이 흥미로웠다.
div tag나 meta tag나 어떤 형태든 가지고 올 수 있었다.
soup.find('p') 부분의 경우 가지고 와야 할 글이 모두 <p> 태그로 감싸져 있어서 저렇게 구현했다.

요즘 관리일 좀 소홀이 하면서 소소히 계속 개발을 들여다 보고 있는데, 역시 난 관리보다 개발이 적성이 더 맞는건가 싶기도 하고...
그런데 왜 C#은 그렇게 눈에 안들어 오는지...ㅠㅠ

2024년 여섯번째 도서 리뷰 [무엇이 1등 팀을 만드는가]

한빛미디어 <나는 리뷰어다> 활동을 위해서 책을 제공받아 작성된 서평입니다. 올해의 마지막 서평이다. 무엇이 1등 팀을 만드는가.... 시작하기에 앞서 제목이 과하지 않은가 하는 생각이 든다. 1등 팀이라....예전 어느 개그 프로에서 ...