DataFrame에서 컬럼명을 수정하는 방법은 몇 개가 존재한다.

아래와 같은 DataFrame 샘플이 존재한다고 할 때

import pandas as pd
df = pd.DataFrame( {'c1':[1, 2, 3]
                   ,'c2':[3, 4, 5]
                   ,'c3':[6, 7, 8]})

	c1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8

 

□ 특정 컬럼명 수정

아래 세 가지 방법으로 컬럼명 수정이 가능하다.

df.rename( {'c1':'A1'}, axis='columns', inplace=True)
# 이때 inplace=False이면 원본 데이터(df) 값 자체는 변경하지 않는다. default는 False이다.

	A1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8


df.rename( columns={'c1':'B1'}, inplace=True)  

	B1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8


df.rename( columns={df.columns[0]:'C1'}, inplace=True)

	C1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8


df.columns.values[0] = 'D1'

	D1	c2	c3
0	1	3	6
1	2	4	7
2	3	5	8

- inplace option

DataFrame에서 inplace option은 원본 데이터(source) 자체를 변경하는가, 하지 않는가를 지정한다.

inplace=False인 경우에는 원본 데이터 자체는 변경하지 않고 형상만 변경한다. 이때 해당 형상은 return 값을 통해서 받을 수 있다.

 

temp = df.rename( {'c1', 'A1'}, axis='columns', inplace=False) 

 

의 경우 원본 데이터인 df의 첫 번째 컬럼명은 A1으로 변경되지 않는다.

반면 temp는 컬럼명이 A1으로 변경된 데이터를 가지게 된다. 

 

같은 원리로

df.rename( {'c1', 'A1'}, axis='columns', inplace=True) 은

df = df.rename( {'c1', 'A1'}, axis='columns', inplace=False)  과 동일한 결과를 가진다.

 

 

□ 컬럼명 전체 변경

아래 방법으로 컬럼명 전체 수정이 가능하다.

df.rename( {'c1':'A1', 'c2':'A2', 'c3':'A3'}, axis='columns', inplace=True)

	A1	A2	A3
0	1	3	6
1	2	4	7
2	3	5	8


df.rename( columns={'c1':'B1', 'c2':'B2', 'c3':'B3'}, inplace=True)

	B1	B2	B3
0	1	3	6
1	2	4	7
2	3	5	8


df.columns = ['C1', 'C2', 'C3']

	C1	C2	C3
0	1	3	6
1	2	4	7
2	3	5	8

 

반응형

□ DataFrame.loc 사용법

구분

기본 사용법

다른 형태

row name

df.loc[ "row1" ]

 

row name list

df.loc[ "row1", "row2", "row3" ]

 

row name list slicing

df.loc[ "row1" : "row5" ]

df[ "row1" : "row5" ]

column name

df.loc[ :, "col1" ]

df[ "col1" ]

column name list

df.loc[ :, [ "col1", "col2", "col3" ] ]

df[ [ "col1", "col2", "col3" ] ]

column name list slicing

df.loc[ :, "col1" : "col5" ]

 

 

□ DataFrame.iloc 사용법

구분

기본 사용법

다른 형태

row

df.iloc[ 1 ]

 

row list

df.iloc[ [ 1, 2, 3 ] ]

 

row list slicing

df.iloc[ 1 : 5 ]

df[ 1 : 5 ]

column

df.iloc[ :, 1 ]

 

column list

df.iloc[ :, [ 1, 2, 3 ] ]

 

column list slicing

df.iloc[ :, 1 : 5 ]

 

 

반응형

visdom은 facebook에서 데이터 시각화를 위해 제공하는 기능이다.

딥러닝을 위해 pytorch를 사용한다면 기본적으로 설치해 두는 것이 좋다.

 

□ visdom 설치

pip install visdom

 

□ visdom 실행

python -m visdom.server

 

visdom은 웹 상에서 호출이 가능하고 visdom server가 정상적으로 수행되면 기본적으로 제공하는 포트는 8097이다.

ex) http://127.0.0.1:8097

 

이때 포트 번호는 변경할 필요가 종종 있다. 한 예로 , docker 환경에서 사용할 경우에는 8097 포트를 미리 docker 외부 연결이 가능하도록 지정하지 않았다면 docker에서 지정해 놓은 포트로 변경해야 사용이 가능하다.

포트 변경을 위해서는 -port 옵션을 사용한다.

 

□ visdom port 변경

python -m visdom.server -port [port number]

 

만약 docker 지정 포트가 9002 라면 visdom server 실행 시 -port 옵션에 9002를 기재한다. 

ex) python -m visdom.server -port 9002

 

 

□ python에서 visdom 실행

python에서는 아래처럼 간단히 호출이 가능하며 default port로 8097을 사용하여 통신한다.

import visdom
vis = visdom.Visdom()

따라서 visdom port를 변경하고 그대로 호출하면 아래와 같은 오류가 발생한다.

□ python에서 변경된 port로 visdom 실행

import visdom
vis = visdom.Visdom(port='9002')

사용 예) 변경된 port가 9002일 경우, 아래와 같이 오류없이 잘 실행된다.

웹 상에서 확인하면 Hello 문구가 잘 출력된 것을 볼 수 있다.

 

 

반응형

파이썬 print문에서 format 메소드 사용 시 서식 지정방법은 아래와 같다.

 

□ 형식

① 소수점을 포함한 전체 길이 지정

② 소수점 이하 길이 지정, 반올림 처리

③ 서식지정자

 

□ 출력 방식

소수점을 포함하여 전체 길이를 출력한다. 한 예로 6.2f는 소수점 이상 3자리, 소수점, 소수점 이하 2자리로 출력한다.

소수점은 반올림 처리된다.

소수점 이상 자리수가 소수점을 포함한 전체 길이보다 클 경우는 전체 길이 지정은 무시된다.

소수점 이하 길이가 우선순위가 높다. 소수점 이하 길이를 먼저 처리한 후 나머지 자리수를 맞춘다.

전체 길이 지정이 클 경우 숫자 앞에 공백이 남은 길이만큼 추가된다.

소수점 길이가 클 경우 뒤에 0으로 채워진다.

 

예1) 소수점 이상 3자리, 소수점, 소수점 이하 2자리로 총 6자 길이로 출력된다.

print( "{:6.2f}".format( 123.456 ))
123.46

예2) 소수점은 반올림 처리된다.

print( "{:6.2f}".format( 123.456 ))	# 소수점 3자리에서 반올림
123.46
print( "{:6.2f}".format( 123.451 ))	# 소수점 3자리에서 반올림
123.45

예3) 소수점 이상 자리수가 소수점을 포함한 전체 길이보다 클 경우는 전체 길이 지정은 무시된다.

print( '{:4.2f}'.format( 123.456))	# 전체 길이 4에 맞추어 3.46 또는 123.(4글자)이 출력되는 것이 아니다.
123.46

 예4) 소수점 이하 길이 지정에 대한 우선순위가 높다.

print( '{:1.2f}'.format( 123.456))	# 소수점 2자리를 지정하고 전체길이 1은 무시된다.
123.46

예5) 전체 길이 지정이 클 경우 숫자 앞에 공백이 남은 길이만큼 추가된다.

print( '{:6.2f}'.format( 123.456))
print( '{:7.2f}'.format( 123.456))
print( '{:8.2f}'.format( 123.456))
print( '{:9.2f}'.format( 123.456))
123.46
 123.46
  123.46
   123.46

예6) 소수점 길이가 클 경우 뒤에 0으로 채워진다.

print( '{:6.2f}'.format( 123.456))
print( '{:6.3f}'.format( 123.456))
print( '{:6.4f}'.format( 123.456))
print( '{:6.5f}'.format( 123.456))
print( '{:6.6f}'.format( 123.456))
123.46
123.456
123.4560
123.45600
123.456000
반응형

일반적인 경우 아래 세 개 command로 pytorch에서 GPU를 사용가능한지 확인이 가능하다.

import torch

torch.cuda.is_available()

torch.cuda.get_device_name(0)

torch.cuda.device_count()

 

각각의 command를 설명하면 다음과 같다.

# GPU를 사용할 수 있는 지 알 수 있다.

torch.cuda.is_available()

→ True

 

# GPU 정보를 반환한다. 아래는 0번 GPU 정보를 반환한다.

torch.cuda.get_device_name(0)

'GeForce GTX 1080 Ti'

 

# 사용가능한 GPU 개수를 반환한다. 아래 예제는 2개의 GPU가 있다는 것을 알 수 있다.

torch.cuda.device_count()

→ 2


# 만약 os 세팅을 통해서 GPU 개수를 줄인다면

# 터미널에서 아래와 같이 환경변수 CUDA_VISIBLE_DEVICES를 0으로 설정한 후 python 실행

CUDA_VISIBLE_DEVICES=0 python                 # python 실행

 

# 환경 변수에 의해서 사용가능한 GPU가 0번만 지정되어 1개로 나타난다.

torch.cuda.device_count()

→ 1

 

# 아래와 같이 사용하는 것은 tourch.cuda.device_count() 결과에 영향을 주지 않는다.

CUDA_VISIBLE_DEVICES=0 python                 # python 실행

 

import os

os.environ['CUDA_VISIBLE_DEVICES]  = "0"

torch.cuda.device_count()

→ 2

 

이외 아래와 같은 명령어들이 있다.

# 항상 0을 return

torch.cuda.current_device()

→ 0

 

# device 정보 반환

torch.cuda.device(0)

 

반응형

python용 opencv를 어렵게 설치하고 샘플을 수행했을 때 오류가 나오면 정말 허탈하죠.

이중 아래와 같은 오류는 빈번하게 발생합니다.


python 실행 시 import cv2에서 아래와 같은 오류가 발생할 때


ImportError: /usr/local/lib/libopencv_freetype.so.3.2: undefined symbol: hb_shape


해당 오류에 대한 trackback은 아래와 같으며


trackback URL → https://github.com/opencv/opencv_contrib/issues/919


위 글의 중간 쯤에 "Kumataro"란 유저가 해결방법을 남겼습니다. ( Kumataro commented on Dec 27, 2016 • edited )

아래는 Kumataro 해결법에 대한 연결경로입니다. 아래로 직접 가셔도 되요.

연결 URL → https://github.com/Kumataro/opencv_contrib/commit/cf8c1aad2771c325b8ffffd71f31fcdc84166b68


지금 쓰고 있는 글도 위를 토대로 제가 당한 문제를 해결하고 나서 작성한 것입니다.


□ 해결방법

참고) 저의 환경은 python 2.7 - opencv 3.2.0 입니다. opencv 설치 문제이므로 python은 2.7이든 3.X든 동일한 문제가 납니다.


아래 파일을 오픈합니다.

~/opencv/opencv_contrib-3.2.0/modules/freetype/CMakeLists.txt


해당 파일의 22번째 줄을 주석처리하고 아래 파란색 명령을 추가합니다.

즉,  freetype2_LIBRARIES와 harfbuzz_LIBRARIES이 제대로된 경로를 못찾아주어서 발생하는 오류입니다.


if( FREETYPE_FOUND AND HARFBUZZ_FOUND )

#  ocv_define_module(freetype opencv_core opencv_imgproc PRIVATE_REQUIRED ${freetype2_LIBRARIES} ${harfbuzz_LIBRARIES} WRAP python)

   ocv_define_module(freetype opencv_core opencv_imgproc PRIVATE_REQUIRED ${FREETYPE_LIBRARIES} ${HARFBUZZ_LIBRARIES} WRAP python)

   ocv_include_directories( ${FREETYPE_INCLUDE_DIRS} ${HARFBUZZ_INCLUDE_DIRS}     

)


이후, ~/opencv/opencv-3.2.0/build 디렉토리에서 

cmake -D CMAKE_BUILD_TYPE=RELEASE \

-D CMAKE_INSTALL_PREFIX=/usr/local \

-D WITH_TBB=OFF \

-D WITH_IPP=OFF \

-D WITH_1394=OFF \

-D BUILD_WITH_DEBUG_INFO=OFF \

-D BUILD_DOCS=OFF \

-D INSTALL_C_EXAMPLES=ON \

-D INSTALL_PYTHON_EXAMPLES=ON \

-D BUILD_EXAMPLES=OFF \

-D BUILD_TESTS=OFF \

-D BUILD_PERF_TESTS=OFF \

-D ENABLE_NEON=ON \

-D WITH_QT=ON \

-D WITH_OPENGL=ON \

-D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-3.2.0/modules \

-D WITH_V4L=ON  \

-D WITH_FFMPEG=ON \

-D WITH_XINE=ON \

-D BUILD_NEW_PYTHON_SUPPORT=ON \

../ 

를 다시 수행시켜 주세요. 문제가 있던 opencv를 uninstall하실 필요는 없습니다.

대부분 이미 설정이 완료되어 있으므로 금방 끝납니다. 


-- Configuring done
-- Generating done
-- Build files have been written to: /home/webnautes/opencv/opencv-3.2.0/build


이와 같은 문구를 빠르게 보게 될 겁니다.


이제 다시 컴파일을 합니다.

 ~/opencv/opencv-3.2.0/build$ time make -j12


제 컴퓨터는 CPU 코어수가 12개라 -j12입니다. 컴파일 전에 본인의 CPU 코어수를 확인해야할 필요가 있죠.

다음과 같은 명령으로 쉽게 확인이 가능합니다.

 cat /proc/cpuinfo | grep processor | wc -l 


컴파일도 대부분 이미 완료되었으므로 빠르게 끝납니다.

이제 마지막 재설치 작업만 남았군요. 별건 없고 아래 명령으로 끝~

 ~/opencv/opencv-3.2.0/build$ sudo make install


문제가 된 python 소스를 실행 시켜보시면 잘 실행 될 것입니다.

그래도 해결이 안된다면... 건투를 빕니다. 당신은 꼭 해결방법을 찾을 것입니다. 그때 다시 오셔서 지식을 나눠주세요. 


반응형

Anaconda3 Python3  환경에서 OpenCV3 설치할 때 참고하면 좋은 사이트입니다.


본문 내용 중 


Python3 OpenCV3 설치 - Anaconda3

Python 3.5 설치 후, OpenCV3 를 설치하는 과정이 쉽지만은 않습니다.


기본적으로 설치 파일에는 Python 3 버전을 지원하지 않기 때문에 입니다. 소스를 다운받아 컴파일 해야하는데 여러가지 환경문제로 컴파일도 쉽지 않습니다.

그래서, 여기서는 좀 더 쉽게 Anaconda를 이용하여 설치해 봅니다.


검색일자   2017.06.18

원문 URL   http://wandlab.blogspot.kr/2016/11/python3-opencv3-anaconda3.html

반응형


파이썬에서 Import 방법은 두 가지가 있습니다.


import 모듈

→ 해당 모듈 전체를 가져온다.

    사용하려면 항상 '모듈명.메소드' 와 같이 모듈명을 앞에 붙여주어야 한다.


from 모듈 import 메소드 / 변수

→ 해당 모듈 내에 있는 특정 메소드나 모듈 내 정의된 변수를 가져온다.

    가져온 메소드나 변수를 앞에 모듈명을 붙이지 않고 그대로 사용할 수 있다.

    다만, 이름이 같은 변수나 메소드가 존재할 경우 대체된다.

    

    from 모듈 import * 이라고 하면 import 모듈과 동일하다. (사용 시 모듈명 붙이는 것 빼고)


아래는 두 방식에 대해 잘 설명된 사이트입니다. 단, 파이썬 2.7 버전을 중심으로 설명하고 있습니다.


□ 원본 URL → https://wikidocs.net/77



반응형

 

□ Jupyter notebook 명령키 일람

 

Command Mode (press Esc to enable) Edit Mode (press Enter to enable)
Enter   enter edit mode Tab   code completion or indent
Shift-Enter   run cell, select below Shift-Tab   tooltip
Ctrl-Enter   run cell Ctrl-]   indent
Alt-Enter   run cell, insert below Ctrl-[   dedent
Y   to code Ctrl-A   select all
M   to markdown Ctrl-Z   undo
R   to raw Ctrl-Shift-Z   redo
1  to heading 1 Ctrl-Y   redo
2  to heading 2 Ctrl-Home   go to cell start
3  to heading 3 Ctrl-Up   go to cell start
4  to heading 4 Ctrl-End   go to cell end
5  to heading 5 Ctrl-Down   go to cell end
6  to heading 6 Ctrl-Left   go one word left
Up   select cell above Ctrl-Right   go one word right
K   select cell above Ctrl-Backspace   delete word before
Down   select cell below Ctrl-Delete   delete word after
J   select cell below Esc   command mode
A   insert cell above Ctrl-M   command mode
B   insert cell below Shift-Enter   run cell, select below
X   cut selected cell Ctrl-Enter   run cell
C   copy selected cell Alt-Enter   run cell, insert below
Shift-V   paste cell above Ctrl-Shift-Subtract   split cell
V   paste cell below Ctrl-Shift--   split cell
Z   undo last cell deletion Ctrl-S   Save and Checkpoint
D,D   delete selected cell Up   move cursor up or previous cell
Shift-M   merge cell below Down   move cursor down or next cell
S   Save and Checkpoint Shift   ignore
Ctrl-S   Save and Checkpoint
L   toggle line numbers
O   toggle output
Shift-O   toggle output scrolling
Esc   close pager
Q   close pager
H   show keyboard shortcut help
I,I   interrupt kernel
0,0   restart kernel
Space   scroll down
Shift-Space   scroll up
Shift   ignore

 

□ 기타 명령 모음

  - ipynb 파일 → py 파일 변환

    콘솔창에서 아래 명령 수행


    jupyter nbconvert --to script [파일명].ipynb



반응형

+ Recent posts