본문 바로가기

파이썬

(66)
Pycharm Community 에서 Django 개발 세팅하기. Pycharm 유료버전에는 Django 지원이 포함되어 있으나, 무료버전인 Community Edition 에서는 2016년 현재 Django 에 대한 지원기능은 빠져 있다. 그렇지만, 장고 프로젝트를 개발하도록 세팅할 수 있다. 0. django-admin startproject 명령으로 만들어진 폴더를 Project 뷰에서 오른쪽 클릭하여 Make Directory as - Source Root 으로 설정해 준다. (설정되면 폴더 아이콘 색이 바뀜.) 이 작업을 해주지 않으면, 편집화면에서 views, models 등의 import 부분에서 Cannot find reference 에러를 띄운다. [ 2016년 8월 3일 추가 ] 1. Run : manage.py / runserver 1-1. 장고 프..
[PYTHON|PANDAS] pandas.read_csv MemoryError 문제 대략 아래와 같은 코드로 3기가 짜리 csv 파일을 pandas.read_csv 로 읽으려 했다. import pandas as pddf = pd.read_csv('big_dataset.csv') 아래와 같이 MemoryError 를 발생하며 성공하지 못했다. return pd.read_csv(train_path) File "C:\Python27\lib\site-packages\pandas\io\parsers.py", line 470, in parser_f return _read(filepath_or_buffer, kwds) File "C:\Python27\lib\site-packages\pandas\io\parsers.py", line 256, in _read return parser.read() Fi..
[Euler Project 114] 몇 칸짜리 격자를 빨간색이나 검은 색으로 채운다. 이 조건만 있으면 단순히 2의 n승으로 답이 끝난다. 조건은 빨간색은 최소한 연속 3칸 이상 이어져 있어야 한다는 조건이 추가되어 문제가 복잡해진다. 제일 처음 칸 부터 한칸씩 빨간색을 칠할 지, 검은 색을 칠할지를 결정하는 함수를 구성했고, 이 함수를 재귀적으로 불렀다. 어차피 한 칸을 채운 다음에는 남은 몇 칸에 대해 고민하는 것은 똑같으니까. 이전에 빨간색이 아니었다면, 빨간색이 오면 3칸이 무조건 칠해진다. 경우의 수가 줄어든다. 그리고 마지막에 3칸 미만이 남아 있으면 무조건 검정색이 들어갈 수밖에 없다. 뭐 이런 조건들을 함수에서 분기해야 했다. 처음에는 완성된 격자를 다 프린트하는 함수를 만들어서 예시로 주어진 7칸 짜리를 해 봤고, 50을 ..
[번역|StackOverflow] 파이썬 람다 - 왜써? / Python Lambda - why? Are you talking about lambda functions? Like 람다 함수를 말하는 건가요? 이런 것? f = lambda x: x**2 + 2*x - 5 Those things are actually quite useful. Python supports a style of programming called functional programming where you can pass functions to other functions to do stuff. Example: 이거 진짜 좋아요. 파이썬은 다른 함수에 함수를 넘길 수 있는 함수형 프로그래밍 스타일을 지원해요. 예를 들면 : mult3 = filter(lambda x: x % 3 == 0, [1, 2, 3, 4, 5, 6, 7, ..
중국어 단어 빈도 분석 (현대한어사전) 현대한어사전 파일을 구했다. 유니코드 텍스트로 변환한 후에, 출현 빈도를 아주 원시적으로 분석했다. 아라비아 숫자, 기호 등도 하나의 문자로 분석됐다. 분석은 기초적인 파이썬 문법을 사용했고, 단문자, 이어진 두문자, 이어진 세문자의 빈도까지 분석했다. 기호에 따라 나누기, 기호 무시하기 등을 추가하여 개선할 수 있을 것 같다. 的이 단연 1등. ~의 란 뜻으로도 쓰이고, ~한 것 이란 뜻으로도 쓰였을 터. 사전에서 많이 출현했다는 게 이해가 간다. 분석 원본인 사전 파일은 저작권 침해의 우려가 있어 포함되지 않았다.
[Euler Project 078] 분할함수 (Partition Function) 76, 77번을 풀었던 방법으로 풀었는데, 끝까지 계산하지 못하고 오버플로우가 났다. 삼각형 형태로 메모리가 늘어나서 13000 까지 찍고 죽는 것이었다. 그래서 위키백과의 점화식을 이용하여 푸는 코드를 짜서 풀었다. 점화식은 2차원인 아닌 1차원으로 기억하고 있으면 되서 답을 내 줬다. 죽는 코드와 죽는 모습 #!/usr/bin/env python # euler 78 P = [] n = 0 P.append([]) P[n].append(0) # P[0][0] n = 1 P.append([]) P[n].append(0) # P[1][0] P[n].append(1) # P[1][1] n = 2 while 1: cnt = 0 P.append([]) for i in range(n+1): if i == 0: cn..
[Euler Project 077] 소수의 합으로 표현하는 가짓수 스프레드시트로 표현한 배열이랑, 코드에서 구하는 배열이랑 의미가 조금 다르다. 아래 코드에서는 누적값을 구한다. 그래서 계산의 summation 루프를 줄인다. 위 그림은 이해를 좋게 하기 위해 누적으로 표현하지 않았다. 가로축은 합이 되는 수, 세로축은 소수이다. 2, 2 는 2를 2를 최소한 한번 포함하여 2 이하의 소수들의 합으로 표현하는 갯수로 1이다. 10, 5 는 10을 5를 최소한 한번 포함하여 5 이하의 소수들의 합으로 표현하는 갯수이다. 5+5와 5+3+2가 있는데, 최대 소수인 5를 10에서 뺀 나머지인 5에 대해 경우의 수를 summation 하여 구할 수 있다. 아래는 파이썬 코드. 2차원 배열이 위 스프레드시트의 것과 다른 점 주의하라. #!/usr/bin/env python # ..
2의 거듭제곱 (10만승까지) 벤포드 법칙 무식쟁이 방법으로 확인. #!/usr/bin/env python # http://bomber0.byus.net/index.php/2009/07/30/1409 # brute force check twopow = 1 tenpow = 1 cnt = [ 0 for i in range(10) ] pro = [ 0 for i in range(10) ] for i in range(100000): twopow *= 2 if twopow/(tenpow*10) > 0: tenpow *= 10 #d1 = int(("%d"%twopow)[0]) d = twopow/tenpow #if d1 != d: # print twopow cnt[d] += 1 if (i+1)%1000 == 0: print (i+1) print "%d\t%d\t%d\t%d\t%d\..