반응형

인공지능 AI/머신러닝 Machine Learning 21

Q. 아나콘다 설치 없이 주피터 노트북 실행시키는 방법은?

A. pip install notebook으로 설치, jupyter notebook 실행하면 된다. 주피터 노트북만 필요하다면 굳이 아나콘다까지 설치할 필요가 없다. 맥의 경우에는 아래처럼 하면 된다. $ mkdir notebook $ cd notebook $ python3 -m venv venv $ source ./venv/bin/activate $ pip install notebook $ jupyter notebook 위 예시는 가상환경 만드는 것부터 적어본 것이고, 그냥 pip install notebook부터 해도 된다. 주피터 노트북이 잘 실행되는 걸 볼 수 있다. 노트북 화면이 보인다. 실행해보자. 정상적으로 뜨는 것을 볼 수 있다. 이렇게 했을 때 장점은 각 프로젝트마다 팩키지 관리를 할 수..

Q. 판다스Pandas에서 MySQL 접속해서 테이블 데이터 읽어오는 법은?

A. read_sql_table 메소드로 읽어올 수 있다. MySQL 데이터베이스를 sql 파일로 출력해서 읽어오는 방법을 시도했는데, 판다스에서는 제공해주지 않는 거 같다. MySQL 데이터베이스에서 특정 테이블을 csv로 출력해서 read_csv 메소드를 활용해서 읽어도 된다. 문제는 테이블 특정 칼럼 안에 ','나 '\t'이 있을 경우 csv 또는 tsv로 출력한 뒤 판다스에서 해당 파일을 읽어올 경우 오류가 발생한다. 그런 경우에는 데이터베이스에 접속해서 바로 판다스에서 읽어오는 것이 편하다. 판다스에서 바로 접속해서 읽어올 경우 데이터베이스 연결이 반드시 필요하다. 데이터베이스에 연결하는 라이브러리는 많은데, 판다스에서는 sqlalchemy만 지원한다. 따라서 sqlalchemy를 사용해서 연결..

Q. SQL문을 판다스Pandas로는 어떻게 할까 궁금하다면?

A. 관련 한국어 자료가 없는 거 같아서 위키독스를 활용해서 직접 작성했다. Ctrl+C & Ctrl+V 시리즈: 이 SQL문을 Pandas에서는 어떻게 할까? 대부분 개발자들은 SQL을 알고 있다. 관계형데이터베이스에서 데이터를 다루기 위해서는 필수로 알아야 하니까. SQL에서 할 수 있는 것들을 판다스에서 대부분할 수 있다. 아니 익숙해지면 더 쉽게 할 수 있다. 하지만 어떤 것이 어떻게 대응하는지는 찾기 어렵다. 그래서 정리해본 것이다. 계속 수정 작업 중이다. 아주 간단하고 쉬운 예제로 구성되어 있기 때문에 복사 붙여넣기로 직접 실행해보면 판다스에서 어떻게 응용하면 될지 쉽게 파악할 수 있다.

맥Mac에서 주피터 노트북Jupyter Notebook 500: Internal Server Error 나는 경우

에러 원인이 다양하다. 내가 겪은 상황 맥에 계정을 여러 개 만들어서 쓰고 있다. A란 계정에서 주피터 노트북을 설치했다. 해당 계정에서는 잘 작동했다. B계정에서도 주피터 노트북을 설치했다. 실행하면 500 에러가 떴다. 다시 삭제 뒤 설치해도 인터넷에 나온 방법들을 적용해봐도 계속 같은 에러가 났다. 에러가 난 이유 찾아보기 PermissionError: [Errno 13] Permission denied: '/usr/local/share/jupyter/nbconvert/templates/conf.json' 에러 로그를 안 보고 인터넷만 찾아서 하다가, 로그를 보니 퍼미션 에러였다. 권한 주기 터미널을 열고 sudo chmod -R 771 /usr/local/share/jupyter/nbconvert..

두 데이터프레임 df1, df2를 비교해서 df2 새로운 칼럼에 df1의 값을 입력하기 예제

학생 이름과 반 정보가 있는 테이블A가 있고 이름 정보만 있는 테이블B가 있다. 테이블B에 있는 이름 중 테이블A에 있는 이름과 같은 이름일 경우에는 반 정보를 입력하고, 없을 경우에는 '미정'이란 정보를 입력하자. import pandas as pd df1 = pd.DataFrame(data= {'이름': ['이서연', '김민준', '박지우'], '반': ['1-1', '2-1', '3-2']}) print(df1) print() df2 = pd.DataFrame(data= {'이름': ['박지우', '김소연']}) print(df2) print() df2['반'] = df2['이름'].map(lambda x : df1.query("이름 == '" + x + "' ").반.iloc[0] if len(d..

Q. 구글 Colab을 쓰면서 로컬local에서 주피터 노트북에서 작업할 수 있을까?

A. 데스크탑용 Google 드라이브를 설치하면 된다. 구글 드라이브 다운로드 및 설치하기 윈도우와 맥만 지원된다. 리눅스는 아쉽게 안 된다. 설치하기 설치가 끝나면 맥의 경우 위와 같은 아이콘이 생긴다. 아이콘을 클릭하면 아래처럼 구글 드라이브 디렉터리가 보인다. 데스크탑 구글 드라이브는 별개 아니라 클라우드 드라이브를 로컬 디렉터리처럼 접근할 수 있게 해준다. 따라서 로컬 내 맥에 설치된 주피터 노트북에서 구글 드라이브에 있는 주피터 노트북 파일에 접근할 수 있게 된다. 로컬에서 My Drive 디렉터리 안에 들어가서 주피터 노트북 파일 만들기 로컬에서 My Drive 디렉터리 안에 들어가서 Google Drive Test 주피터 노트북 파일을 만들었다. 그리고 hello world를 출력했다. 구글..

Q. Colab에서는 왜 상대경로 지정이 잘 안 될까?

A. 현재 작업 디렉터리가 '/content'이기 때문이다. 주피터 노트북 파일을 Colab에서 열었고, 노트북 파일과 같은 위치에 데이터 파일이 있다. 그래서 아래처럼 코드를 작성했다. df_train = pd.read_csv('./train.txt', encoding='utf-8') df_train 파일을 찾을 수 없다는 에러가 난다. df_train = pd.read_csv('train.txt', encoding='utf-8') df_train 위처럼 해봐도 에러가 난다. 그 이유는 현재 작업 디렉터리가 주피터 노트북 파일이 있는 디렉터리가 아니기 때문이다. 현재 작업 디렉터리를 확인할 수 있는 getcwd()로 확인해보자. os.getcwd() /content 가 현재 작업 디렉터리라는 것을 알 ..

판다스pandas에서 데이터를 한 줄row씩 읽어와서 기존 값을 바탕으로 새 값을 새 칼럼에 넣기

이름 국어 수학 이서연 70 80 김민준 70 80 박지우 70 80 위와 같은 데이터가 있다. 여기서 과목별 합계 점수를 구해 '합계'란 칼럼을 추가해서 값을 넣고 싶다. 할 수 있는 방식이 여러가지 있지만, 한 줄씩 읽어오는 방식을 사용한다면 다음과 같다. import pandas as pd data_list = [] data = {} data['name'] = '이서연' data['korean'] = 70 data['math'] = 80 data_list.append(data) data = {} data['name'] = '김민준' data['korean'] = 70 data['math'] = 80 data_list.append(data) data = {} data['name'] = '박지우' da..

빅데이터센터, 한글형태소 사전 NIADic

총 93만 단어에 이르는 한글형태소 사전 출처: 빅데이터 센터 한글형태소 사전 NIADic o 국립국어원 우리말샘 사전과 및 SNS 분석기업 인사이터에서 자체 보유한 사전을 기반으로 최신 단어로 구성된 형태소 사전(NIADic) 제작(총 93만 단어) 저작권: 저작자표시-동일조건변경허락 2.0 (CC BY-SA)(저작자를 밝히면 자유로운 이용이 가능하고 저작물의 변경도 가능하지만, 2차적 저작물에는 원 저작물에 적용된 것과 동일한 라이선스를 적용해야 합니다.)

Q. 판다스pandas 데이터프레임 내에서 특정 칼럼 기준 중복 데이터를 제거하는 방법은?

A. drop_duplicates(subset=['컬럼명']) 을 쓰면 된다. 먼저 나온 것을 남기고 나중에 나오는 것을 제거한다. (참고: pandas.DataFrame.drop_duplicates) import pandas as pd data_list = [] data = {} data['name'] = '이서연' data['age'] = 31 data_list.append(data) data = {} data['name'] = '김민준' data['age'] = 38 data_list.append(data) data = {} data['name'] = '박지우' data['age'] = 45 data_list.append(data) data = {} data['name'] = '윤지민' data['..

파이썬python numpy array flatten(), reshape(-1) 단일 리스트로 만들 때, 다중 리스트에서 리스트 모양이 다를 경우 제대로 작동하지 않는다

이중 리스트를 단일 배열 또는 단일 리스트로 만들고 싶다. flatten() 이중 리스트 안의 개수가 같은 경우 import numpy as np data = [[1, 2], [3, 4]] data = np.array(data).flatten() print(data) 출력 결과 [1 2 3 4] flatten() 이중 리스트 안의 개수가 다른 경우 import numpy as np data = [[1, 2], [3]] data = np.array(data).flatten() print(data) 출력 결과 [list([1, 2]) list([3])] 위와 다른 결과인 것을 확인할 수 있다. flatten() 삼중 리스트 안의 개수가 같은 경우 import numpy as np data = [[[1, 2]..

파이썬 requests와 BeautifulSoup을 이용 웹크롤링 예제

requests와 BeautifulSoup일 이용한 웹크롤링 requests를 이용하면 셀레늄selenium을 이용한 경우보다 훨씬 빠르게 정보를 수집할 수 있다. 웹페이지가 ajax를 활용해서 정보를 한번에 불러오는 게 아니라, 스크롤 등 사용자의 행동에 반응해서 추가로 정보를 불러온다면 requests를 활용해서 수집이 어렵다. 이 경우 셀레늄을 쓰거나 둘을 섞어서 써야 한다. 코드 예 import requests from bs4 import BeautifulSoup import unicodedata # 서울시 뉴스 url = 'https://mediahub.seoul.go.kr/archives/2000338' html = requests.get(url) html_text = html.text sou..

머신러닝에서 추천 - 협업 필터링(Collaborative Filtering)이란? 콘텐츠 기반 필터링(Content-Based Filtering)과 가장 큰 차이점은?

머신러닝Machine Learning에서 추천Recommendation 추천은 머신러닝의 한 분야다. 추천 관련 대표적 기술인 협업 필터링(Collaborative Filtering)과 콘텐츠 기반 필터링(Content-Based Filtering) 둘 모두 거르기란 뜻의 filtering이란 단어가 붙어 있다. 어떻게 보면 당연하다. 추천이란 것은 결국 수많은 것들 중 일부를 골라서 제안하는 것이니까. 협업 필터링(Collaborative Filtering)이란? 구글 개발자 머신러닝 코스 중 추천 부분을 보면 아래처럼 설명이 나온다. To address some of the limitations of content-based filtering, collaborative filtering uses si..

파이썬 셀레늄selenium을 활용한 웹크롤링 예

셀레늄은 시간이 오래 걸린다. 브라우저를 띄워서 버튼을 눌러가면서 진행하기 때문이다. 만약 인터넷 환경이 느려서 버튼 이미지가 늦게 뜰 경우에는 너무 빨리 버튼을 누르면 에러가 난다. 이 경우 좀 간격을 두고 진행해야 해서 많은 시간이 필요하다. 웹크롤링 코드 예 쿠팡에서 어떤 한 상품의 리뷰를 쓴 사용자명과 그들이 쓴 평점을 수집하는 코드 예 크롬드라이버 내려 받기 아래 코드는 맥 기준이다. 윈도우의 경우 파일 경로 설정을 다르게 해줘야 할 수 있다. # 라이브러리 불러오기 import pandas as pd from selenium import webdriver import time import math # 초기 설정 # 블루베리 시나몬 플렉스 시리얼 url = "https://www.coupang...

판다스pandas 정렬과 질의query 예제

입력값 import pandas as pd data_list = [] data = {} data['name'] = '이서연' data['gender'] = 'F' data['age'] = 31 data_list.append(data) data = {} data['name'] = '김민준' data['gender'] = 'M' data['age'] = 38 data_list.append(data) data = {} data['name'] = '박지우' data['gender'] = 'M' data['age'] = 45 data_list.append(data) data = {} data['name'] = '윤지민' data['gender'] = 'F' data['age'] = 23 data_list.appe..

Jupyter Notebook 주피터 노트북 단축키shortcuts 정리

주피터 노트북 단축키를 알면 훨씬 편하게 쓸 수 있다. 주피터 노트북은 파이썬python 개발을 할 때 많이 쓴다. 기본 단축키 tap: 파이썬 들여쓰기를 하니 tap을 많이 쓰게 된다. shift + tap: 들여쓰기 반대인 내어쓰기다. tap 크기만큼 앞으로 내어쓰기 된다. 영역을 지정해서 shit+tap을 누르면 한꺼번에 된다. alt + 방향키: alt키를 누르고 있는 상태에서 방향키를 움직이면 띄어쓰기 기준으로 한 단어씩 움직인다. ctrl + 방향키: ctrl키 누르고 있는 상태에서 방향키를 움직이면 한 줄 단위로 커서가 움직인다. home키와 end키와 같다. home키와 end키보다는 이 키를 더 많이 쓴다. shift + 방향키: shift를 누르고 있는 상태에서 방향키를 움직이면 한 글..

Jupyter Notebook 주피터 노트북이란?

Jupyter Notebook 주피터 노트북이란? 공식사이트 설명은 아래와 같다. The notebook extends the console-based approach to interactive computing in a qualitatively new direction, providing a web-based application suitable for capturing the whole computation process: developing, documenting, and executing code, as well as communicating the results. The Jupyter notebook combines two components: A web application: a browser..

파이썬 웹크롤링시 주의사항, 되도록 딕셔너리dictionary를 쓰는 게 좋다

그냥 리스트로 하면 되는 거 아닌가? 처음에는 그냥 리스트로 했다. 누락이 없다면? 잘 작동한다 user_list = [] user_list.append('April') user_list.append('Brad') review_list = [] review_list.append('good') review_list.append('So good!') import pandas as pd df = pd.DataFrame({'user' : user_list, 'review' : review_list}) print(df) 잘 작동한다. 누락이 있다면? 오류가 발생한다. user_list = [] user_list.append('April') user_list.append('Brad') review_list = []..

data.go.kr 공공데이터포털, 국토교통부_아파트매매 실거래 상세 자료, 아파트 전월세 자료 오류 데이터

빅데이터 연습삼아 자료를 받아보고 있는데, 이상한 데이터가 있었다. 왜 이런 자료가 발생한지는 모르겠다. 아파트매매 실거래 상세 자료 건축년도가 없는 경우 예 5,500 2008 00 0 조치원읍 교리 0026 0003 36110 25024 1 (26-3) 7 18 36110-187 66.68 26-3 36110 4 층 값이 없는 경우 예 13,600 1995 2006 정자일로 00046 00000 41135 02 0 3180021 금곡동 0180 0000 41135 11100 1 청솔마을(유천) 5 8 41135-157 40.5 180 41135 아파트 전월세 자료 층 값이 없는 경우 예 1992 2019 수내동 64,000 양지마을(5단지)(한양515-529) 6 0 29 84.9 24 41135 1..

반응형