728x90
반응형

Programming Language/Python 31

[Python] 이터레이터(Iterator)

이터레이터(Iterator)반복 가능한 객체를 순회할 수 있는 객체반복 가능한 객체란? -> List, tuple, set 등반복 가능한 객체 != 이터레이터 반복 가능한 객체 == 이터러블(iterable) 객체 (반복가능하면 이터레이터로 만들 수 있는 것)이터러블 객체는 __iter__() method를 가지고 있고, 이 method는 이터레이터를 반환하는 역할이터러블 객체는 iter() 함수를 이용하여 이터레이터로 만들 수 있mylist = [1, 2, 3]next(mylist)Traceback (most recent call last):File "", line 1, in TypeError: 'list' object is not an iterator# Iterable하다는 것이 Iterator라는 ..

[Python][Anaconda] Solving environment: failed with initial frozen solve. Retrying with flexible solve.

Anaconda에 패키지를 설치하려고 하니 이러한 메세지와 함께 설치가 되지 않았습니다. 해결방법 Conda 환경 내에서 pip를 사용하여 설치하였습니다. 먼저 다음과 같은 방법으로 Conda 가상환경을 만들어주었습니다. (이미 만든 경우에는 건너뛰어도 됩니다) 우선 터미널을 열고 다음을 입력합니다. source ~/.bash_profile ~/.bash_profile 파일의 내용을 현재의 Bash 세션에 적용하는 데 사용됩니다. 여기서 ~는 사용자의 홈 디렉토리를 나타내고, .bash_profile은 Bash 셸 사용자 환경 설정 파일입니다. 이를 통해 사용자 Bash 로그인 환경 설정을 현재 세션에 즉시 적용도록할 수 있습니다. 이런 식으로 옆에 (base)가 표시되면 됩니다. 이미 base라고 표시..

[Python] 정규표현식

- 정규표현식(Regular expression, regex) 프로그래밍에서 문자열을 다룰 때 문자열의 일정한 패턴을 표현하는 일종의 형식 언어 파이썬만의 고유 문법이 아니라 문자열을 처리하는 모든 프로그래밍에서 사용되는 공통 문법 대괄호([]): 대괄호 안에 포함된 문자들 중 하나와 매치. [] 안의 두 문자 사이에 하이폰(-)을 입력하면 두 문자의 사이의 범위를 의미. [] 안의 ^는 반대를 뜻함. [cd] : 문자들 중 c 또는 d가 하나 이상 있으면 된다. [a-e]: [abcde]와 동일 [1-3]: [123]과 동일 [^0-9]: 숫자를 제외한 문자만 [^abc]: a,b,c를 제외한 모든 문자와 매치 \d: 숫자와 매치. [0-9]와 동일한 표현식 \D: 숫자가 아닌 것과 매치. [^0-9]..

[Python] Selenium을 이용한 동적 크롤링

- 정적 데이터와 동적 데이터의 차이 정적 데이터: 한 페이지 안에서 원하는 정보가 모두 드러나는 것 동적 데이터: 입력, 클릭, 로그인 등을 통해 데이터가 바뀌는 것 일반적인 크롤링으로는 정적 데이터(변하지 않는 데이터)만 수집할 수 있습니다. - Selenium 셀리니움을 이용하면 정적 페이지와 동적 페이지를 모두 크롤링할 수 있지만 상대적으로 속도가 느립니다. 구분 정적 크롤링 동적 크롤링 사용 패키지 requests selenium 수집 커버리지 정적 페이지 정적 / 동적 페이지 수집 속도 빠름 상대적으로 느림 파싱 패키지 beautifulsoup beautifulsoup / selenium 다양한 브라우저 및 플랫폼에서 웹 응용 프로그램을 테스트할 수 있게 해줍니다. 웹 자동화 테스트 용도로 개..

[Python] 크롤링(Crawling)

- 크롤링 주의 사항 특정 웹사이트의 페이지를 쉬지 않고 크롤링하는 행위를 무한 크롤링이라고 하는데, 이는 해당 웹사이트의 자원을 독점하게 되어 타인의 사용을 막게 되며 웹사이트에 부하를 줍니다. 일부 웹사이트의 경우 동일한 IP로 무한 크롤링을 할 경우 해당 IP의 접속을 막아버리기도 합니다. 그렇기에 하나의 페이지를 크롤링한 후 1~2초 가량 정지하고 다시 다음 페이지를 크롤링하는 것이 바람직합니다. 신문기사나 책, 논문, 사진 등 저작권이 있는 자료를 통해 부당이득을 얻는다는 등의 행위를 할 경우 법적 제재를 받을 수 있습니다. 서버에 데이터를 요청하는 형태는 다양하지만 크롤링에서는 주로 GET과 POST 방식을 사용합니다. - GET 방식 인터넷 주소를 기준으로 이에 해당하는 데이터나 파일을 요청..

[Python] Python과 SQL 연결

- pymysql 파이썬에서 SQL DB에 접속할 때 사용하는 패키지 입니다. pymysql이 설치되어 있지 않은 경우 다음과 같이 설치하면 됩니다. # window, mac pip install pymysql # conda conda install pymysql - SQL에서 데이터 불러오기 import pymysql con = pymysql.connect( user = 'root', # 사용자명 passwd = '1234', # 비밀번호 host = '127.0.0.1', # 허용 접속 IP. 일반적으로 localhost는 127.0.0.1 db = 'shop', # 사용할 데이터베이스 charset = 'utf8' # 인코딩 방법 ) # 로컬 DB 뿐만 아니라 aws와 같은 클라우드도 연결 가능 m..

[Python] ValueError: invalid literal for int() with base 10: '1.70

# -*- coding: utf-8 -*- # UTF-8 encoding when using korean height = int(input()) weight = int(input()) BMI = weight / (height * height) if BMI < 18.5: print("저체중") elif BMI < 23: print("정상") elif BMI < 25: print("과체중") elif BMI < 30: print("경도비만") elif BMI < 35: print("중도비만") else: print("고도비만") height에 1.70을 입력하니 ValueError: invalid literal for int() with base 10: '1.70' 에러가 나타났습니다. input은 문자형으..

[Python] 데이터 시각화(matplotlib, pandas, seaborne)

- 그래프 구성요소 Figure: 그림 전체 Axes: 그림 내부의 좌표측 혹은 개별 그림 Line: 선 그래프에서의 선 Markers: 점 그래프에서 점 Legned: 범례 Grid: 격자 Title: 제목 Spines: 윤곽선 X axis label: X축 라벨 Y axis lable: Y축 라벨 Major tick: 메인 눈금 Major tick label: 메인 눈금 라벨 Minor tick: 서브 눈금 Minor tick label: 서브 눈금 라벨 - Matplotlib을 이용한 그래프 그리기 import seaborn as sns import matplotlib.pyplot as plt df = sns.load_dataset('penguins') plt.scatter(df['flipper_l..

[Python] Pandas package -2

- 데이터프레임 합치기 concat(): 행 혹은 열 방향을 데이터프레임을 이어 붙이는 개념 import pandas as pd df1 = pd.DataFrame({ "A": ["A0", "A1", "A2", "A3"], "B": ["B0", "B1", "B2", "B3"], "C": ["C0", "C1", "C2", "C3"], "D": ["D0", "D1", "D2", "D3"] }, index = [0,1,2,3], ) df2 = pd.DataFrame({ "A": ["A4", "A5", "A6", "A7"], "B": ["B4", "B5", "B6", "B7"], "C": ["C4", "C5", "C6", "C7"], "D": ["D4", "D5", "D6", "D7"] }, index = [4,..

[Python] Pandas package - 1

pandas 패키지는 1차원 배열인 시리즈(Series) 및 행과 열로 이루어진 2차원 배열인 데이터프레임(DataFrame)을 통해 데이터 분석 업무를 쉽게 처리할 수 있게 해줍니다. - 시리즈(Series) 데이터가 순차적으로 나열된 1차원 배열 인덱스(index)와 값(value)은 1대1 대응 관계이며, 이는 키(Key)와 값(value)의 형태로 구성된 딕셔너리와 비슷합니다. import pandas as pd dict_data = {'a':1, 'b': 2, 'c':3} series = pd.Series(dict_data) # dictionary를 통해서 series 만들기. key값이 인덱스가 됨. series.index # series의 index 반환 series.values # seri..

728x90
반응형