반응형

파이썬에서 변수에 원하는 값을 넣으려면 input을 이용해서 받을 수 있습니다.

 

1.하나씩 입력받기

2.한 번에 여러 개 입력하기

3.반복문을 이용해 동적변수에 값 받기

 

 


1. 하나씩 입력 받기

 

소스코드
a = int(input('a값 입력 '))
b = int(input('b값 입력 '))

print(f'a = {a}, b = {b}')

 

결과


2. 한 번에 여러 개 입력 받기

 

소스코드
c, d =map(int, input('c,d 입력하세요 ').split())

print(f'c = {c}, d = {d}')

 

결과


3. 반복문을 이용해 동적변수에 값 받기

 

소스코드
for i in range(5):
    globals()['aa_{}'.format(i+1)]= input(f'{i+1}번째 값 입력바람') #globals , locals 

print(aa_1)
print(aa_2)
print(aa_3)
print(aa_4)
print(aa_5)

 

결과

 

 

 

 

 

 

 

 

 

 

 

반응형
반응형

face_recognition 라이브러리를 통해 이미지의 얼굴을 찾고 동일인물인지 확인 할 수 있다.

 

 

face_recognition 설치

https://korbear.tistory.com/83

 

face_recognition 라이브러리 설치(dlib 설치/ 파이썬)

사진에 얼굴만 추출하고 싶은데 찾아보니 face_recognition 라는 라이브러리가 있어서 사용해보려 합니다. 일단 간단히 pip install face_recognition 커맨드창에 쳐보니 역시나 간단히 설치되지 않는다. 설

korbear.tistory.com

 

 

 

1. 동일인물 확인

 

1 - 1. 이미지 샘플

 

 

1 - 2. 소스코드

import face_recognition

picture_of_me = face_recognition.load_image_file("01.jpg")
my_face_encoding = face_recognition.face_encodings(picture_of_me)[0] 


unknown_picture = face_recognition.load_image_file("02.jpg")
unknown_face_encoding = face_recognition.face_encodings(unknown_picture)[0] 

results = face_recognition.compare_faces([my_face_encoding], unknown_face_encoding) #동일 인물 인지 비교

if results[0] == True:
    print("동일 인물 입니다.")
else:
    print("동일 인물이 아닙니다")

 

 

1 - 3. 결과

03.jpg로 비교시 '동일 인물이 아닙니다' 라고 찍힙니다.

 

 

2.  이미지 얼굴 부분 추출

 

2 - 1. 소스코드

from PIL import Image
import face_recognition
cnt = 0
image = face_recognition.load_image_file('04.jpg')
face = face_recognition.face_locations(image)

for face in face:
    top, right, bottom, left = face
    cnt = cnt+1
    face_image = image[top:bottom, left:right]
    cut_image = Image.fromarray(face_image)
    cut_image.show()
    cut_image.save(f'save/{cnt}.jpg')

 

2 - 1. 결과

 

 

 

 

 

반응형
반응형

사진에 얼굴만 추출하고 싶은데 찾아보니 face_recognition 라는 라이브러리가 있어서 사용해보려 합니다.

일단 간단히 pip install face_recognition 커맨드창에 쳐보니 역시나 간단히 설치되지 않는다.

 

설치환경

 - 윈도우10

 

dlib패키지가없단다.

dlib가 없단다..

pip install dlib 역시 간단히 설치되지 않는다 

 

dlib는 c++로 개발된 라이브러리 라서 cmake, visual studio가 필요하다.

 

1. cmaker 설치

 

 

https://cmake.org/download/

 

Download | CMake

Current development distribution Each night binaries are created as part of the testing process. Other than passing all of the tests in CMake, this version of CMake should not be expected to work in a production environment. It is being produced so that us

cmake.org

 

 

간단하게 설치파일로 설치했다

 

시스템 경로 추가 해주고

 

명령프롬프트(cmd)에서 cmake쳐보면 사용방법에 대해 나오면 설치가 완료된 것이다.

 

 

2. visual studio c++ 설치

https://visualstudio.microsoft.com/ko/visual-cpp-build-tools/

 

Microsoft C++ Build Tools - Visual Studio

Microsoft C++ Build Tools는 Visual Studio 없이 스크립트 가능한 독립 실행형 설치 관리자를 통해 MSVC 도구 집합을 제공합니다. 명령줄에서 Windows를 대상으로 하는 C++ 라이브러리 및 애플리케이션을 빌드

visualstudio.microsoft.com

 

visual studio 설치완료 후

 

3. pip install dlib

 

커맨드 창에  pip install dlib

시간이 생각보다 좀 걸린다.

 

 

추가 dlib 다운받아서 설치하기

 

dlib 공식 홈페이지

http://dlib.net/

 

dlib C++ Library

Dlib is a modern C++ toolkit containing machine learning algorithms and tools for creating complex software in C++ to solve real world problems. It is used in both industry and academia in a wide range of domains including robotics, embedded devices, mobil

dlib.net

 

왼쪽 하단에 Download dlib 클릭해서 C:\에 압축을 풀어준다

 

압축푼 경로에서 python setup.py install 해도 된다.

 

4. pip install face_recognition

잘 설치가 된다.

 

 

 

요약 

1. cmake 설치

2. visual studio 설치

3. pip install dlib

4. pip install face_recognition

5. import face_recognition 

face_recognition
반응형
반응형

ERROR: Could not install packages due to an OSError: [WinError 5] 액세스가 거부되었습니다: 'C:\\Users\\user\\anaconda3\\Lib\\site-packages\\cv2\\cv2.pyd'
Consider using the `--user` option or check the permissions.

 

 

아나콘다 주피터에서 !pip install albumentations 으로 실행시 에러가 보인다.

 

 

 

아나콘다 프롬프트에서 python -m pip install --user albumentations 실행시 잘 설치 된다.

반응형
반응형

주피터 노트북을 사용하다 코랩 사용 중 TAB 눌러도 자동완성 기능이 안 먹을 때 코랩에서 간단히 설정만 해주면 주피터노트북과 동일하게 사용할 수 있다.

 

요약)

설정 -> 편집기 -> 코드 완성 제안을 자동으로 표시 체크 해제

 


 

 

우측 설정

 

 

편집기 탭 / 코드 완성 제안을 자동으로 표시 해제

 

tab 누를 시 밑으로 드롭다운 형태로 볼 수 있다.

 

반응형
반응형
반응형



Dataframe : 행과 열 조회

  • DataFrame.loc[[행이름1, 행이름2, ... ]]
  • DataFrame.iloc[[행인덱스1, 행인덱스2 ... ]]
df = pd.DataFrame( np.arange(1,26).reshape(5,5), 
                   index=[ 'row'+str(i) for i in range(1,6)], 
                   columns=[ 'col'+str(i) for i in range(1,6) ])

print(type(df), df.shape, df.size)
df
  • 출력
    <class 'pandas.core.frame.DataFrame'> (5, 5) 25
  col1 col2 col3 col4 col5
row1 1 2 3 4 5
row2 6 7 8 9 10
row3 11 12 13 14 15
row4 16 17 18 19 20
row5 21 22 23 24 25





원하는 행 출력

print(df.loc[['row1', 'row3', 'row5']]) #iloc로 출력 방법 df.iloc[[0, 2, 4]] 
  • 출력
      col1 col2 col3 col4 col5
    row1 1 2 3 4 5
    row3 11 12 13 14 15
    row5 21 22 23 24 25

원하는 행 범위 출력

print(df.iloc[2:5]) # loc로 출력 방법 df.loc['row2':'row4']
  • 출력
      col1 col2 col3 col4 col5
    row2 6 7 8 9 10
    row3 11 12 13 14 15
    row4 16 17 18 19 20





원하는 열 출력

df.loc[:, ['col1','col3','col5']] #iloc로 출력 방법 df.iloc[:, [0,2,4]]
  • 출력
      col1 col3 col5
    row1 1 3 5
    row2 6 8 10
    row3 11 13 15
    row4 16 18 20
    row5 21 23 25

원하는 열 범위출력

df.iloc[:, 1:4] # loc로 출력 방법 df.loc[:, 'col2':'col4']
  • 출력
      col2 col3 col4
    row1 2 3 4
    row2 7 8 9
    row3 12 13 14
    row4 17 18 19
    row5 22 23 24





DataFrame 행,열 추가, 삭제

  • loc를 통해 없는 행 이름으로 추가할 수 있다.
  • iloc를 통해서는 추가할 수 없다.
  • 행 추가
df.loc['row6'] = [26,27,28,29,30]
df
  col1 col2 col3 col4 col5
row1 1 2 3 4 5
row2 6 7 8 9 10
row3 11 12 13 14 15
row4 16 17 18 19 20
row5 21 22 23 24 25
row6 26 27 28 29 30
  • 행 삭제
df = df.drop('row6')
df
  col1 col2 col3 col4 col5
row1 1 2 3 4 5
row2 6 7 8 9 10
row3 11 12 13 14 15
row4 16 17 18 19 20
row5 21 22 23 24 25
  • 열 추가
df['col6'] = [26,27,28,29,30]
df
  col1 col2 col3 col4 col5 col6
row1 1 2 3 4 5 26
row2 6 7 8 9 10 27
row3 11 12 13 14 15 28
row4 16 17 18 19 20 29
row5 21 22 23 24 25 30
  • 열 삭제
df.drop(columns=['col6'],inplace=True) #inplace True로 줄시 바로적용
df
  col1 col2 col3 col4 col5
row1 1 2 3 4 5
row2 6 7 8 9 10
row3 11 12 13 14 15
row4 16 17 18 19 20
row5 21 22 23 24 25
del df['col5']
df
  col1 col2 col3 col4
row1 1 2 3 4
row2 6 7 8 9
row3 11 12 13 14
row4 16 17 18 19
row5 21 22 23 24
반응형
반응형
반응형

pandas

판다스(Pandas) 란?

  • 데이터 처리와 분석을 위한 파이썬 라이브러리
  • 파이썬의 엑셀이라고 보면된다.
  • 대표적으로 Series 와 DataFrame 클래스가 있다.
  • http://pandas.pydata.org

Series(시리즈)

  • Numpy는 데이터형이 하나만 지정될수 있지만 pandas는 혼합형이다.
  • 리스트와 달리 인덱스 이름을 부여할 수 있다.
  • 1차원 데이터만 다룸.
s1 = pd.Series(np.arange(20,25),index=['1번','2번','3번','4번','5번'])
s1
  • 출력
    1번 20
    2번 21
    3번 22
    4번 23
    5번 24
    dtype: int32
s1.index, type(s1.index), list(s1.index) ,s1['3번']
  • 출력
    (Index(['1번', '2번', '3번', '4번', '5번'], dtype='object'),
    pandas.core.indexes.base.Index,
    ['1번', '2번', '3번', '4번', '5번'],
    22)

데이타프레임이란?

  • 데이타를 표의 형태로 처리하는 자료구조이다.
s1 = ({'name':'홍길동','age':'24','gender':'male','mobile':'010-1234-4421'})
s2 = ({'name':'가길동','age':'42','gender':'female','mobile':'010-1122-3215'})
s3 = ({'name':'나길동','age':'51','gender':'male','mobile':'010-4321-2351'})
df =  pd.DataFrame([s1,s2,s3])
df
  • 출력
      name age gender mobile
    0 홍길동 24 male 010-1234-4421
    1 가길동 42 female 010-1122-3215
    2 나길동 51 male 010-4321-2351
df = pd.DataFrame( np.arange(1,26).reshape(5,5), 
                   index=[ 'row'+str(i) for i in range(1,6)], 
                   columns=[ 'col'+str(i) for i in range(1,6) ])
df
  • 출력
      col1 col2 col3 col4 col5
    row1 1 2 3 4 5
    row2 6 7 8 9 10
    row3 11 12 13 14 15
    row4 16 17 18 19 20
    row5 21 22 23 24 25

데이터프레임 속성

  • DataFrame변수.columns
  • DataFrame변수.index
  • DataFrame변수.values
  • dtype, shape, size
df = pd.DataFrame( np.arange(1,26).reshape(5,5), 
                   index=[ 'row'+str(i) for i in range(1,6)], 
                   columns=[ 'col'+str(i) for i in range(1,6) ])

print(type(df), df.shape, df.size)
print(df.index , df.columns)
df.values
  • 출력

<class 'pandas.core.frame.DataFrame'> (5, 5) 25
Index(['row1', 'row2', 'row3', 'row4', 'row5'], dtype='object') Index(['col1', 'col2', 'col3', 'col4', 'col5'], dtype='object')
array([[ 1, 2, 3, 4, 5],
[ 6, 7, 8, 9, 10],
[11, 12, 13, 14, 15],
[16, 17, 18, 19, 20],
[21, 22, 23, 24, 25]])

 

 

 

반응형
반응형

 

 

http://www.numpy.org

 

NumPy

Powerful N-dimensional arrays Fast and versatile, the NumPy vectorization, indexing, and broadcasting concepts are the de-facto standards of array computing today. Numerical computing tools NumPy offers comprehensive mathematical functions, random number g

numpy.org

 

  • 파이썬 라이브러리중 하나
  • 수학 및 통계, 과학 연산을 위한 파이썬 패키지

 

반응형
반응형

 

웹 정보를 정적으로 간단하게 BeautifulSoup를 통해 정보를 긁어 올 수 있다.

 

yes24의 홈페이지에서 베스트셀러 1~10위를 가져오는 방식으로 예를 보여 드리겠습니다.

 

http://www.yes24.com/Main/default.aspx

 

YES24

YES24는 대한민국 1위 인터넷 온라인서점입니다. 국내 최대의 도서정보를 보유하고 있으며 음반, DVD, 공연까지 다양한 문화콘텐츠 및 서비스를 제공합니다.

www.yes24.com

 

 

 

 

우측 빨간 상자안에 순위와 제목을 가져오도록 하겠습니다.

 

 

응답코드가 정상적으로 넘어 온걸 알수있다,

 

 

requests로 원하는 웹의 소스코드를 받아온다.

res.text를 출력해보면 잘 넘어온 걸 볼 수 있다.

만약 Response가 304로 넘어올 경우

304 응답 코드 해결 참고하면 된다.

 

 

베스트 셀러 소스 트리

 

 

웹에서 관리자 모드를 통해 베스트셀러 부분 소스 트리를 볼 수 있다.

 

 

<strong>태그에 순위와 제목이 있다..

 

 

soup.select를 통해 li태그에. tp02 클래스를 긁어 오면 li 태그 안에 strong 태그 부분에

순위와 제목이 포함되어 있는 걸 알 수 있다.

 

 

 

len을 통해 li. tp02 태그의 개수를 확인하니 10개가 맞다.

select를 통해 순위, 제목을 긁어오고 있다.

 

 

 

 

book리스트 안에 리스트로 순위와 책을 저장하고 잘 들어갔는지 출력을 찍어 보니 잘된다.

 

 

 

pandas를 이용해 데이터 프레임으로 깔끔하게 출력할 수 있다.

 

 

마지막으로 데이터를 csv파일 및 엑셀로 뽑아낼 수도 있다.

반응형
반응형
헤더 정보에 유저 정보를 넘김으로 해결할 수 있다.

 

웹 크롤링 중 소스가 안 가져와 확인해보니

 

Response 304

 

 

304 응답이 올 시 헤더에 유저 에이전트 정보 값을 넘겨줌으로써 해결한다.

 

 

 

UserAgentString.com - Chrome version 101.0.4951.64

 

UserAgentString.com - unknown version

 

www.useragentstring.com

 

유저 정보를 알 수 있는 사이트다. 

 

 

빨간네모가 유저 정보이다.

 

url='사이트 주소'
user_agent_info = '유저 정보'
headers = {'User-Agent' : user_agent_info}
res = requests.get(url, headers = headers)
res.text

 

 

반응형

+ Recent posts