본문 바로가기

반응형

Programing Language/Python

(32)
list와 array의 메모리 효율성 결론은 array 짱짱맨. 길이를 미리 알 경우( 또는 대략정으로 알 경우) 적당한 크기( 또는 적당히 여유로운 크기)의 array를 할당하는 것이 메모리 관리에 넘나 효율적이라는 사실!!!! 그래서 판다스가 짱짱맨인듯... 결론 : 메모리가 쪼달린다면 array쓰세요! [출처] http://www.draketo.de/english/python-memory-numpy-list-array
json data 저장시 numpy array 저장하는 법 json 형태로 데이터를 저장할 때, pandas를 사용해서 이런저런 통계처리를 해서 저장하곤 한다.이럴 때 pandas의 dataframe은 numpy의 array 기반으로 데이터를 처리한다.이 때문에 json.dump로 저장 할 때 다음과 같은 에러메시지와 마주한다. NumPy array is not JSON serializable이 때 serializable하지 못하다는게 numpy array를 지원하지 않기 때문에 얘들을 .tolist()나 int()와 같은 것을 이용해서 바꿀 수도 있다.(출처의 답변1)하지만 json의 형태가 너무 복잡한 경우 이러한 처리가 귀찮다.이러할 때는 출처의 답변2를 참고하여 Encoder을 json.dump와 같이 사용하면 좀 더 수월하게 json형태로 저장할 수 있..
pandas dataframe에 multiple condition on multiple column 판다스에서 DataFrame에서 특정 Column에 조건을 넣는 가장 쉬운 방법은 다음과 같다.df1 = df[(df.a != -1)] 뜻은 df의 a열에 조건을 넣은 경우이다. 다음의 경우와 동치이다.df1 = df[(df['a'] != -1)] 원리는 (df['a'] != -1)가 해당 조건에 맞는 index의 true, false를 ndarray형으로 리턴하는 방식이다. 따라서 다중 조건을 넣는 것은 다음과 같이 응용할 수 있다.df1 = df[(condition1) & (condition1)]파이썬의 if문에서 and를 사용하는 것과 다르다는 것에 유의하자. 이번에는 파이썬에서 특정 Column만 부르는 것을 살펴보자.사실 이미 위의 예제들에서 사용하고 있었는데 df.a 또는 df['a']와 같이..
Pandas에서 dataframe 메모리 초기화하기..! pandas에서 대용량 데이터를 ram에 올리고 계산을 하다 보면 다음과 같은 상황을 목격하게 된다.top으로 메모리 사용을 모니터링하다보면, PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 3532 root 20 0 37.689g 0.026t 7624 R 88.7 95.8 33:13.73 python3 1847 root 20 0 2763276 7656 2712 S 0.7 0.0 6:02.22 docker-containe 음....? 메모리가... 넘치려 한다...! 이유는 메모리의 히스토리가 남아서... pandas는 numpy를 기반으로 만들어져있는데, df = pd.read_csv("...") df = pd.read_csv("...")이렇게 두번 불러..

반응형