no image
셀레니움을 이용한 웹크롤링(Web crawling)
오늘 배울것은 셀레니움(selenium)라이브러리를 이용한 웹 정보수집 (Web crawling)을 해볼것이다. 사용할 library로는 selenium과 beautiful soup 이 있다. 둘에 대해 간략하게 설명하자면, -selenium : 주로 웹앱을 테스트하는 프레임 워크다. 각 웹앱에 맞는 driver를 통해서 웹을 직접 조작하며 결과물을 불러올 수 있다. -bs4(Beautiful Soup) : html 구조를 파이썬이 이해할 수 있도록 변환하는 parsing을 맡고 있는 라이브러리. 의미가 있는 결과물을 불러낼 때 사용한다. 이것들을 이용해 두번의 예제에 걸쳐서 학습해보도록 하자. #에브리타임 게시판 글 가져오기. 우선 필요한 라이브러리들을 전부 호출해줬다 selenium과 bs4, csv..
2020.06.03
no image
엑셀 심화
오늘 공부해 볼 내용은 엑셀에 쓰이는 서체를 파이썬으로 다뤄보는 것을 해보겠다. 마찬가지로 openpyxl 라이브러리가 필요하므로 안깔려있다면 깔도록 하자. 사진에 보이는 것 처럼 오늘은 유틸들이 꽤나 많다. 크게는 한 범주 안에 속하는 것들이지만, 하나하나 불러줘야 한다니 꽤나 귀찮은 작업이다! (주의할 점은 colors와 Color구분, NamedStyle과 named_style을 구분해주는 것도 중요하다.) 본론으로 들어가기 전에 알아둬야할 개념이 조금 있다. 우선 cell style : 어느 특정한 셀에 스타일을 한번 적용을 시켜서, 외부적으로 셀을 건드려 스타일을 번경할 수 없게 만든다. Named style : 이름 그대로 스타일에 이름을 새겨서 내가 사용하고 싶을 때 사용하는 것이다. ~~체..
2020.06.02
no image
파이썬 csv 사용하여 엑셀파일 다루기
오늘은 파이썬 csv 사용하는 것에 대한 기본을 정리해보겠다. 우선 csv(comma-separated values)란? : 몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다. 확장자는 . csv이며 MIME 형식은 text/csv이다.호환되지 않는 포맷을 사용하는 프로그램 끼리 자료를 전달할 때 사용하는데 쓰인다. 파이썬에선 이것으로 text 파일 뿐 아니라 xlsx 파일 같은 것도 건들이곤 한다. csv 파일 읽어오기 우선 csv 파일을 다루기 위해서는 import 라는 명령어를 통해 csv파일을 다룰 수 있는 모듈을 가지고 와야한다. 그 이후 open 이라는 명령어를 통해서 읽어올 파일을 정한다. 그 뒤 'r' 은 모드를 정하는 것인데 기본적으로 'r' : read mode, '..
2020.05.30
no image
파이썬 기초
파이썬은 개발시간단축에 초점을 두어 C언어 보다 효율성 면에서 떨어진다. 이럼에도 불구하고 우리가 파이썬을 하는 이유는 간단하다. "Life is short, you need python." 빠른 시간에 코드를 작성하고 결과물을 빨리 볼 수 있기 때문이다. 이것뿐 아니라 파이썬은 여러가지 장점을 지니고 있다. -대화형식의 인터프리터 언어 : 컴퓨터와 대화하듯이 프로그래밍을 한다. 이런 점에서 나는 파이썬을 할 때 덜 지루한 것 같다. -수많은 라이브러리 제공 : 헤더파일의 접근이 비교적 어려운 C언어 보다 파이썬은 더 많은 라이브러리를 제공한다. -무료 : 많은 사람들이 함께 파이썬을 유지하고 관리하며 이를 무료로 제공한다. 라이브러리가 많이 제공되는 것에 이것도 한 몫하는 것 같다. 위 사항 이외에도 ..
2020.05.30

오늘 배울것은 셀레니움(selenium)라이브러리를 이용한 웹 정보수집 (Web crawling)을 해볼것이다.

 

사용할 library로는 selenium과 beautiful soup 이 있다.

 

둘에 대해 간략하게 설명하자면,

 

-selenium : 주로 웹앱을 테스트하는 프레임 워크다. 각 웹앱에 맞는 driver를 통해서 웹을 직접 조작하며 결과물을 불러올 수 있다.

 

-bs4(Beautiful Soup) : html 구조를 파이썬이 이해할 수 있도록 변환하는 parsing을 맡고 있는 라이브러리. 의미가 있는 결과물을 불러낼 때 사용한다.

 

이것들을 이용해 두번의 예제에 걸쳐서 학습해보도록 하자.


#에브리타임 게시판 글 가져오기.

 

 

우선 필요한 라이브러리들을 전부 호출해줬다 selenium과 bs4, csv는 앞서 설명을 진행하였다.

 

그렇다면 time sleep은 무엇일까?

 

쉬어가겠다는 의미이다. 그렇다면 우리는 왜 정보를 수집할 때 쉬어가야하는걸까?

 

우리가 인터넷 사이트에 직접적으로 접속할 때 일정시간이 소요된다. 하지만 셀레니움을 이용해 이에 접근할 때는 우리가 접속할 대 소모되는 시간을 무시하고 빠르게 진행이 된다. 이렇게 되면 웹 사이트에서 우리를 해킹툴로 인식해 차단할수도 있고, 웹에 과부하를 줄 수도있다. 그러므로 되도록이면 sleep을 사용해 쉬어들어가도록 하자.

 

csv파일을 사용하는데 wt+는 처음보는것 같..지만 사실은 알고있는 범위 내다.

 

w : 쓰기모드

t : 텍스트모드

+ : 업데이트를 위해 열기

 

세개를 조합해서 쓴 것이다. 우리는 웹에서 데이터를 따와서 csv파일에 저장할 것 이므로 이렇게 써줬다.

 

웹앱은 요즘 정말 많이 존재한다. (firefox, naverwhale, chrome, IE ...)

 

firefox 앱이 셀레니움에 최적화 되어있지만 우리는 보편적으로 깔려있는 chrome을 써서 웹을 수집할 것이므로 chromedriver를 이용해주도록하자.

 

크롬 드라이버는 밑에 주소에서 설치할 수 있다.

 

https://chromedriver.chromium.org/downloads

 

Downloads - ChromeDriver - WebDriver for Chrome

WebDriver for Chrome

chromedriver.chromium.org

 

버전 정보는 크롬을 실행한뒤, 설정 -> chrome 정보에서 확인할 수 있다.

 

설치를 하면 이것을 불러와줘야하는데 이건 csv파일 호출할 때와 마찬가지로 같은 폴더 안에 집어넣어 놓으면 바로 불러올 수 있지만, 다른 폴더안에 저장해놓았으면 위의 코드와 같이 직접호출을 해줘야한다.

 

호출을 해준 뒤, get 매서드를 이용해서 원하는 홈페이지를 불러온다.

 

이 다음에 나오는 xpath에 대한 개념을 살짝 정리하고 들어가자면, 

 

xpath : 특정 요소(element)를 찾을 때 접근할 수 있게 해주는 언어로 이것을 이용해 각 요소로 접근을 할 수 있다.

 

그리고 get 다음에 나오는 implicity_wait은 sleep과 구분하기 위해서 집어넣어놨다. 

 

implicity_wait(10)의 의미는 웹이 응답할 때 까지 최대 10s만큼을 기다려주겠다는 의미이다.

 

sleep과의 차이점은 sleep은 반드시 지정한 초만큼 지연시키지만, implicity_wait는 웹이 응답할 때 까지만 기다리는 것이다.

 

그 다음부터는 본론이다. 

 

우선 로그인을 해서 권한을 얻어야 게시판에 접근할 수 있으므로 로그인을 먼저해보도록 하자.

 

위에서 설명한 xpath로 접근하기 위해서 우리는 개발자모드로 들어가야한다. (크롬은 f12를 누르면 들어갈 수 있다.)

 

 

 

개발자 모드의 모습이다.

 

우리는 xpath로 접근을 하기 위해서 위에 빨간색으로 동그라미 친 부분을 누르고 로그인 버튼을 누르면

 

 

 

 

사진과 같이 회색으로 클릭된 부분이 개발자 환경 화면에 나온다.

 

여기서 이 부분을 우클릭한 후 copy에 마우스를 얹으면 아래쪽에 copy xpath가 뜨는데 이것을 누르면 xpath가 복사된다.

 

이 후 로그인까지 모든 과정을 위와 같이 진행하면 된다. 

 

click과 sendkey는 무엇일까?

 

이건 그냥 말 그대로 그 버튼을 click 한다는 의미와 아이디 비밀번호 (혹은 그 이외의 정보를 입력해주어야하는 것)을 파이썬에서 입력시키게 하기 위해서 사용한 것이다.

 

로그인을 마친 후 우리가 원하는 게시판으로 이동하는 것 까지 xpath로 진행을 해주면 된다. (나는 자유게시판으로 갔다)

 

그 이후에는 bs4를 이용해서 html구문을 해석시켜준 후 데이터를 수집할 수 있게 해야한다.

 

그래서 보이는 페이지의 html을 그대로 가져오기 위해서 driver.page_source를 html이라는 변수에 저장해 현재 페이지를 분석할 수 있게 해준다.

 

이 후에 html을 bs4를 이용해 parsing해준다.

 

자유게시판에 올라와있는 글들은 제목과 내용으로 구분되어 있는데, 이를 각각 가져와줘야한다. ( 둘의 element가 다르기 때문에 한번에 가져올 수가 없다.)

 

이번에는 selector를 이용해서 정보를 가져올것이다.

 

css selector : 말 그대로 선택을 해주는 요소이다. 각 요소마다 스타일을 지정해줄 수 있다.

 

이것도 xpath 복사한것과 같은 경로로 들어간 후 copy seletor를 클릭해주면 된다.

 

하지만 우리는 게시판에 있는 한 요소만 가져오거나 접속할게 아니기 때문에 전체적인 부분을 써넣어줘야한다.

 

그냥 selector를 복사해서 붙여넣기만 하면 내가 가져온 글의 selector만 저장할 수 있으므로 조심하도록하자.

 

 

 

 

그냥 첫번째 글과 두번째 글의 selector를 가져와봤을 때 위에 사진처럼 나온다. 공통되는 구문도 있지만, nth-child(n) 이부분이 다르다.

 

그러므로 깔끔하게 저 부분을 지우면, 위에 써놓은 코드처럼 나오게 된다.

 

제목을 가져왔으니까 내용도 같은 원리로 가져와준 후, 반복문을 통해서 리스트형으로 csv파일에 덮어 씌워주면 끝이다!

 

결과물:

 

 

csv파일과 컴파일러에서 확인할 수 있다..! (나의 학교와 학우들을 위해서 블러처리했다..)

 


#인스타그램 사진 크롤링하기

 

 

 

들어가기 전에 urlib에 대해서 알아보자.

 

urllib은 url에 관련된 library를 가져오는데 사용된다. 그 중에서 우리는 request와 parse를 사용할 것이다.

 

request는 말 그대로 url을 요청(가져오기)위해 사용하는 모듈로, urlopen형태로 쉽게 가져올 수 있다.

 

parse는 url을 파싱, 다루기 위해 사용하는 모듈이다.

 

quote_plus는 url을 인용할 때 쓰는 함수인데 미리 기억해두도록하자.

 

baseurl에서 인스타그램 태그 검색을 기반으로 둔 채, plusurl에서 내가 검색할 태그를 input매서드를 통해서 입력받도록 한 후,

 

내가 원하는 검색결과를 가져오기 위해서 baseurl + quote_plus(plusurl)로 최종 url을 설정했다.

 

이후 과정은 앞서 말한 내용과 동일하므로 생략하고,

 

정보를 선택하기 위해서 html에서 가져올 element를 찾아보자.

 

 

 

개발자 모드에서 보면, 사진에 해당하는 element는 v1Nh3~~에 해당하는 구문임을 쉽게 알 수 있다. 

 

우리가 원하는 것은 사진에 해당하는 element만 있으면 되기 때문에 v1Nh3~를 가져오도록하자. 

 

여기서 주의해야할 점은, html구문 상에 존재하는 블랭크는 전부 .으로 채워주어야 한다는 것이다.

 

이 후 반복문을 통해서 이미지들을 가져올건데, 몇가지 설명해야할 것이 있다.

 

href : a라는 문서를 연결하는 태그의 href라는 방식이다. a태그의 연결할 주소를 지정해준다.

 

src : 태그의 미디어를 재생할 때 사용되는 속성이다. 

 

select : 내가 원하는 정보를 찾기 위한 매서드.

 

위의 정보들을 조합해서 반복문을 쑤셔보면,

 

내가 가져올 이미지의 태그의 url을 프린트 한 후, imgurl속에 내가 검색한 태그의 이미지의 정보를 저장한 뒤, 한번 더 반복문을 실행하여 img라는 폴더안에 그 내용을 저장하겠다는 의미를 담고있다.

 

이러나 저러나 실행을 시켜보면,,

 

 

 

이미지에 해당하는 url에 대해서 열심히 출력을 한 후 이미지를 저장한 모습까지 완벽하다!.

 


 

 

 

20.06.03

'데이터 분석 > 파이썬' 카테고리의 다른 글

pandas 데이터 정제 (2)  (0) 2020.06.27
판다스를 이용한 데이터 정제  (0) 2020.06.17
엑셀 심화  (0) 2020.06.02
파이썬 csv 사용하여 엑셀파일 다루기  (0) 2020.05.30
파이썬 기초  (0) 2020.05.30

엑셀 심화

pluralmajor
|2020. 6. 2. 01:12

오늘 공부해 볼 내용은 엑셀에 쓰이는 서체를 파이썬으로 다뤄보는 것을 해보겠다.

 

마찬가지로 openpyxl 라이브러리가 필요하므로 안깔려있다면 깔도록 하자.

 

 

 

 

사진에 보이는 것 처럼 오늘은 유틸들이 꽤나 많다.

 

크게는 한 범주 안에 속하는 것들이지만, 하나하나 불러줘야 한다니 꽤나 귀찮은 작업이다! (주의할 점은 colors와 Color구분, NamedStyle과 named_style을 구분해주는 것도 중요하다.)

본론으로 들어가기 전에 알아둬야할 개념이 조금 있다.

 

우선 

 

cell style : 어느 특정한 셀에 스타일을 한번 적용을 시켜서, 외부적으로 셀을 건드려 스타일을 번경할 수 없게 만든다.

 

Named style : 이름 그대로 스타일에 이름을 새겨서 내가 사용하고 싶을 때 사용하는 것이다. ~~체 같은게 해당한다.

 

그리고 위에 내가 openpyxl.styles 로 불러온 라이브러리들은 서체나 굵기 배열 배치 등에 해당하는 것이므로 영어를 안다면 알 수 있는 것들이다.

 


내가 원하는 셀에 적용하기.

 

위에서 말한 cell style에 해당하는 내용이다.

 

 

부디 어제 공부했던 내용을 숙지하고 있길 바라며 설명하면,

 

a1, b2 는 각각 셀을 담당하고 있는 변수로 지정해준 것이다.

 

이후 ft라는 변수를 어떤 폰트로 지정해 줄 것인지에 대해 정하고 (italic은 기울임이다)

 

각각의 셀에 적용을 시킨 모습이다.

 

 

이렇게 해주니 A1과 B2 셀에는 A2셀과 달리 레드 색상과 기울임이 적용된 형태로 글이 작성되었다. (내가 직접 바꾼거 아님 ㅠ)

 

color를 지정해 줄 때는 RGB계열 색상은 이름으로 적어도 되지만, 팔레트 상에 존재하는 넘버링을 입력해도 된다. (ex. #FF000000)

 

만약 내가 한 셀에만 지정을 해주고 싶을 때는 다음과 같이 한줄로 코딩을  해도 된다. 

 

a1.font = Font(color=colors.RED, italic = True)

 

연속된 셀에 적용할 때는 전에 배운 split 을 사용해서 할 수 있다.

 

w1 = ['A1':'D6']

w1.font = Font(color=colors.RED, italic = True)

 

참고로 italic = False 는 기울임 적용을 안한 것과 같기 때문에 선언을 안해주어도 된다. 

 

병합된 셀에 적용을 할 수 있는 방법도 있다.

 

 

 

 

 

 

 

merge_cells 함수를 이용해서 B2~F4까지의 셀을 통합한 후 스타일을 지정해주는 모양이다.

 

병합해준 셀을 호출하기 위해서 top_left_cell이라는 함수를 이용해서 B2를 지정해준다 (어디를 지정해줘도 상관 없으나, top left 라고 했으니 B2라고 해줬다.)

 

그 후 여러 작업을 거친 뒤 모습은..

 

 

 

 

이런 모습으로 나왔다. PatternFill과 Gradient를 적용해서 이러한 모습이 나온 것이다.

 

Cell Style에 대한 설명은 여기서 마치도록 하겠다.


Named_Style 내 스타일 만들기.

 

앞서 말했듯 내가 지정한 폰트를 만들 수 있다. 주의해야할 점은 이 폰트는 절대적인 값을 지니므로, 이름을 계속해서 새롭게 만들어주어야하는 번거로움이 있다는 것이다.

 

 

 

조금 길어보이지만 사실 별 다를 것 없는 내용이다.

 

새로운 서체를 만들어 A7에 적용했고 그 서체의 이름은 PFF이다.

 

여기서 주의해야할 점은 내가 방금 언급했던 폰트의 이름이다. PFF라고 지정해주면 이 폰트는 한번 사용될 때 PFF라는 이름을 지닌채 저장이 되므로, 다음 실행 때 내가 size를 변경해서 저장하면 PFF로 저장할 수 없다. 새로운 이름을 명명해주어야한다.

 

실행 결과는?

 

 

훌륭하게 적용되었다.

 

오늘 배운 것은 보면 알겠지만 사실 큰 내용은 없다. 필요할 때 숙지해서 사용하면 좋을듯한 내용이다.

 

다음 시간부터는 꽤나 어려운 내용을 다룰 예정이다.


오늘은 파이썬 csv 사용하는 것에 대한 기본을 정리해보겠다.

 

우선 csv(comma-separated values)란?

몇 가지 필드를 쉼표(,)로 구분한 텍스트 데이터 및 텍스트 파일이다.

확장자는 . csv이며 MIME 형식은 text/csv이다.호환되지 않는 포맷을 사용하는 프로그램 끼리 자료를 전달할 때 사용하는데 쓰인다.

파이썬에선 이것으로 text 파일 뿐 아니라 xlsx 파일 같은 것도 건들이곤 한다.

 


csv 파일 읽어오기

 

 

 

우선 csv 파일을 다루기 위해서는 import 라는 명령어를 통해 csv파일을 다룰 수 있는 모듈을 가지고 와야한다.

 

그 이후 open 이라는 명령어를 통해서 읽어올 파일을 정한다.

 

그 뒤 'r' 은 모드를 정하는 것인데 기본적으로 'r' : read mode, 'w' : write mode 를 사용한다.

 

기본적으로 read 모드로 가져올 경우에는 경로를 지정하거나 파이썬 폴더 안에 csv파일이 존재해야 읽어올 수 있다.

 

그 후 읽어온 파일을 출력해보기 위해, reader라는 객체를 사용하여야 한다. csv파일에 담겨있는 내용을 리스트 형식으로 한 줄씩 가져오겠다는 선언을 해주는 것이다.

 

그 후 반복문을 통해 한 줄씩 출력해서 가져온다.

 

 

csv 파일 쓰기

 

 

 

 

불러오는 방식은 read 모드와 똑같다. 다만 write모드는 파일을 새롭게 작성할 수 있으므로 반드시 그 파일이 존재할 필요는 없다.

 

그리고 뒤에 있는 newline은 파일 쓰기 형식과 관련된 얘기인데, write모드로 작성할 시 기본적으로 엔터가 들어가게 되어있다.

 

그러므로 writer 라는 객체를 사용할 때 한 줄씩 가져오는 것 + 엔터를 하게되면 두 줄씩 띄워서 글을 작성해버리게 되는 것이므로 띄우지 않겠다 라는 의미로 작은 따옴표 사이에 아무것도 넣지 않고 사용하는 것이다.

writerow 메서드는 새롭게 list 데이터를 한 줄 넣겠다는 의미이다. 따라서 이 메서드 뒤에 list로 작성을 하는 것이 기본이다. 

 

 

∴f.close는 열었던 파일을 닫아준다는 의미로 보통 프로그램이 종료되면 같이 종료되어 굳이 써주지 않아도 괜찮지만, write모드로 글을 작성할 때 파일이 열려있으면 오류가 발생하므로 닫아주는걸 습관화하는 것이 좋다.

 


엑셀 파일 다뤄보기

 

 

 

 

위에서 설명한 csv파일 읽기와 똑같은 형식으로 진행할 수 있다.

 

csv파일을 microsoft Excel로 연결을 해준 후 위와 같은 코드를 실행하게 되면,

 

 

짠~ 위와 같은 데이터가 쭉 나열되었다! 내가 실행한 data.csv 파일 안에는 첫번째 리스트에 있는 항목들로 총 1000개의 데이터가 존재하며, 1001개의 리스트로 구성되어 읽어올 수 있었다.

 

그러나 나는 읽기만 할려고 파이썬을 배우는 것이 아니라 읽고 쓰고 수정하기 위해 사용하므로 이에 대해서 알아보자.

 

 

다음 과정을 실행하기 위해서는 openpyxl이라는 라이브러리가 필요하므로 pip를 이용해 설치해주도록 하자.


 

∴엑셀 파일 쓰기를 설명하기 전에 openpyxl을 설치했다면, csv파일로 읽어오는 것 말고도  load_workbook('파일명.xlsx')를 사용해 읽어올 수 도 있다.

 

엑셀 파일 쓰기

 

 

 

 

 

wb = Workbook() 은 엑셀 파일의 시트를 하나 새로 만들겠다는 소리이다.

 

그 이후 active를 통해서 wb의 시트를 활성화 시켜 동작을 수행하겠다라는 행동을 취했다. 이건 open과 비슷한 의미로 받아들이면 될 것 같다.

 

활성화 된 시트의 A1열에 HELLO! 라는 글자를 새겨넣은 뒤, test라는 이름으로 파일을 저장해 보았다.

 

결과는..

 

 

 

 

잘 저장되어 무사히 실행하였다!

 

이것말고도 openpyxl 에 내장되어 있는 객체는 많다. 

 

wb.create_sheet를 통해 내가 원하는 새로운 시트를 만드는 것도 가능하고,

test['A1'].value를 통해 내가 원하는 열의 값을 가져오는 것도 가능하다.

 

이것까지 배웠으면 많이 배운 것 같지만, 왜 csv와 xlsx을 같이 가져왔겠는가..! 이것으로 무엇을 할 건지는 밑에서 차근차근 배워보자.

 

 


csv를 통해서 엑셀파일을 수정해보자.

 

 

 

한 줄씩 분석해보자!

 

먼저 csv파일 읽어오기 부분은 설명했으니 생략하고,

 

list = []는 비어있는 새로운 리스트를 하나 생성하겠다는 것이다.

 

그 후 reader 객체를 통해 오픈한 파일을 한 줄씩 읽어오면서 반복문을 통해 list에 한 줄씩 추가한다는 것이다. i[1]은 data.csv의 한 줄 중에서 두번째 리스트, [1, 2, 3]이 있으면 2를 가져오겠다는 소리이다.

 

다음은 data_n라는 새로운 파일을 개설하며 이것을 쓰기모드로 하여 가져온 리스트의 내용 덮어씌워 저장하려한다.

 

마찬가지로 writer 객체를 통해 비어있는 한 줄씩 가져오면서 반복문을 통해 리스트에 있는 내용을 써주겠다!

 

무사히 실행과정을 마치면,,

 

 

무사히 내가 원하는 내용을 가져왔음을 알 수 있다!

 

여기서 조금만 더 응용하면, 한 셀 내에서도 내가 원하는 내용만을 가져올 수 있다.

 

 

 

별 다를 것 없이 작성한 것 같지만, 어제 설명했던 split이라는 객체를 통해 이메일에서 @뒷부분인 도메인을 때고 내가 원하는 데이터를 저장하고자 위와 같은 코드를 작성한 것이다.

 

그 후 0번째를 불러온 것은 내가 찾고자하는 부분이 아이디 부분이므로 작성해준것이다. 만약 도메인을 조사하고 싶다면 1을 해주거나 -1을 해주면 된다.

(내가 해본 결과 도메인이 존재하지 않는 즉, 아이디만 있는 데이터가 있어 null값이 존재해 1은 출력되지 않았다. 내가 가지고 있는 데이터 상으로는 -1을 해주면 정상적으로 출력이 된다.)

 

 

결과:

 

 

 


 

 

 

2020.05.30

'데이터 분석 > 파이썬' 카테고리의 다른 글

pandas 데이터 정제 (2)  (0) 2020.06.27
판다스를 이용한 데이터 정제  (0) 2020.06.17
셀레니움을 이용한 웹크롤링(Web crawling)  (0) 2020.06.03
엑셀 심화  (0) 2020.06.02
파이썬 기초  (0) 2020.05.30

파이썬 기초

pluralmajor
|2020. 5. 30. 00:43

파이썬은 개발시간단축에 초점을 두어 C언어 보다 효율성 면에서 떨어진다.

 

이럼에도 불구하고 우리가 파이썬을 하는 이유는 간단하다.

"Life is short, you need python."

빠른 시간에 코드를 작성하고 결과물을 빨리 볼 수 있기 때문이다.

 

이것뿐 아니라 파이썬은 여러가지 장점을 지니고 있다.

 

-대화형식의 인터프리터  언어 : 컴퓨터와 대화하듯이 프로그래밍을 한다. 이런 점에서 나는 파이썬을 할 때 덜 지루한 것 같다.

-수많은 라이브러리 제공 : 헤더파일의 접근이 비교적 어려운 C언어 보다 파이썬은 더 많은 라이브러리를 제공한다.

-무료 : 많은 사람들이 함께 파이썬을 유지하고 관리하며 이를 무료로 제공한다. 라이브러리가 많이 제공되는 것에 이것도 한 몫하는 것 같다.

 

위 사항 이외에도 많은 장점들이 있으나 생략하고 배운 것들을 정리해보도록 하겠다.

 


파이썬 기초 문법


내 기준에서, 파이썬은 기본적으로 C언어와 굉장히 유사한 문법을 지니고 있다.

 

기본적으로 print 함수, if-while-for 문은 C언어와 매우매우 흡사한 형식으로 사용된다.

 

if문은 c의 else if 와 완전히 같고, 내가 이해하는 범위 이므로 작성을 생략하도록 하겠다.

 

-whlie문

 

<while문 사용>

 

위와 같은 형식으로 쓰인다. C와 몹시 흡사하지만 기본적으로 무한루프에 빠지기 쉬운 형태로 되어 있어, 보통 많이 사용하진 않는 편이다.

 

-for문

 

<for문 사용>

 

C와는 조금 다른듯한 모습이다. 리스트와 튜플은 조금 있다가 설명할 내용이다.

파이썬에서 사용하는 for문은 변수(i라고 지정하겠다)i가 리스트나 튜플 혹은 문자열에 해당하는 마지막 까지 명령을 반복한다.

 

*내가 아직 for문에 미흡하므로 나중에 더 잘하게 된다면 추가하겠다.

 


파이썬만의 특징인 리스트와 튜플, 딕셔너리에 대해 설명하겠다.

 

-리스트

 

<리스트의 형태>

 

보이는 것과 같이 대괄호 [ ] 안에 숫자 혹은, 작은 따옴표('char'), 큰 따옴표("string")을 사용한 문자열을 삽입한 자료형이다.

기본적으로 가장 많이 쓰이는 자료형이며, 개방적이어서 삽입, 삭제, 수정, 정렬, 뒤집기 같은 문법들이 모두 허용된다.

 

 

<예제>

 

위와 같이 리스트 속에 리스트도 사용할 수 있다.

 

-튜플

 

<튜플의 형태>

 

사진상에서 많은걸 설명하고 있다. 설명이 잘 되어있지만 헷갈리지 않기 위해 말을 덧붙이자면,

생성 수정 삭제등이 불가능하지만 슬라이싱이나 튜플끼리의 사칙연산은 가능하다.

 

 

-딕셔너리

 

<딕셔너리의 형태>

 

이름에서도 알 수 있다싶이, 딕셔너리형은 사전적 의미를 설명하는 형태로 쓰인다.

key와 value가 1:1로 상응하면서 서로의 의미를 지니게 된다.

딕셔너리는 요소의 추가, 삭제등이 가능하며 key 혹은 value 값만 추출이 가능하며 추출한 값으로 리스트를 새로 생성할 수 있다.

 

처음엔 어디서 사용하나 싶었지만 추후에 배울 판다스에서 DataFrame을 만들 때 쓰이게 된다.


자주 쓰는 문법에 대해 알아보자.

 

- 인덱싱(indexing)

 

<indexing>

 

인덱싱은 리스트, 튜플, 문자열 등에서 지정한 위치에 있는 값을 추출할 때 사용한다.

위에서 예제를 든 것은 너무 간단하므로 밑에 예제를 하나 더 들어보겠다.

 

 list = [1, 2, 3, 4]

 print(list[1])

>>> 2

 

나는 첫번째에 있는 친구를 호출했는데 왜 2번째에 있는 너가 나와? 라고 생각이 들 수 있다.

파이썬에서 기본적으로 제일 앞에 존재하는 친구의 숫자는 0으로 분류한다.

그러므로 내가 1을 추출해내고 싶다면  list[0]을 사용하면 된다. 

 

참고로 위에 리스트 속 리스트가 존재할 때 인덱싱을 하면 리스트가 뽑아져 나온다.

 

ex) list = [1, [2, 3, [11, 22, 33]], 10]

      print(list[1][2])

>>>[11, 22, 33]

 

 

-슬라이싱(slicing)

 

 

<slicing>

 

슬라이싱은 문자 그대로 잘라내는 것이다. 내가 원하는 부분을 끄집어 내는 것.

물론 중첩 리스트에서도 슬라이싱이 가능하다!

 

ex) a = [1, 2, [3, 4, 4, 5, 6, 7]]

       print(a[2][:3])

>>>[3, 4, 5, 6]

 

 

-요소 추가 (append)

 

<append>

 

말 그대로 요소를 추가하는 것이다. 리스트 외에 튜플, 딕셔너리 모두에 해당하는 명령어이다.

이후 공부할 csv파일 정제할 때 자주 쓰이므로 숙지해두면 유용하다.


파이썬을 배우고 공부하기 시작한 지 2~3주 밖에 되지 않았지만, 파이썬은 참 유익하고 재밌는 것 같다. 

페이지를 정리하기 시작하면서 나에게 좀 더 도움이 되는 시간이 많아졌으면 좋겠고, 앞으로 계속 수정해 나가면서 내가 모자랐던 점이나 고쳐나가야 할 점이 잘 보였으면 하는 바램이다.

 

2020. 5. 29