학습
-
판다스가 너무 느리다면? Polars!학습/Python 2024. 5. 7. 00:56
대용량 데이터에서는 사용 불가능한 Pandas분석가가 과제를 수행하면서 이미 집계된 데이터를 분석하는 경우가 많지만경우에 따라서는 전혀 가공되지 않은 날것의 데이터를 가공하는 경우도 종종 발생한다.요즘은 워낙 로컬 머신의 성능도 좋아지기도 했고특히 개발 환경이 클라우드에 세팅되어 있는 분석가라면 사용중인 머신의 성능을 업그레이드 하는 방식을 통해 어느정도 수준의 큰 데이터는 쉽게 처리가 가능하다.그러나 수 백 억 row 이상되는 정말 대용량의 데이터를 분석하는 경우에는 위의 방법을 적용해봐도 한계를 마주치게 되고 pandas의 read_* 함수 따위는 리소스 부족으로 MemoryError가 발생하며 실행 자체가 되지 않는다... 메모리에 이 데이터를 올릴 수 없다는 얘기..겨우겨우 데이터를 메모리에 올렸..
-
FFT를 활용한 시계열 데이터 노이즈 처리 in Python학습/Python 2023. 10. 27. 04:26
개요 이번에 수행한 데이터 분석 과제에서 Iba 센싱데이터를 전처리하는 모듈을 만들었다. 분석에 사용된 센싱데이터는 수집주기가 0.02초로 매우 짧음에도 현재(t)와 직전(t-1) 데이터의 수치에 약간의 차이가 존재했다. (정상 데이터 범위의 5%이내로 차이 발생) 이는 노후 센서로 인한 측정 오차 등의 여러 외인에 의한 변동으로 파악되었다. 해당 변동은 현장에서 컨트롤 불가능하며, 최종 분석 결과에 좋지 않은 영향을 줄 가능성이 있다고 판단하였다. 따라서 본 과제에서는 변동을 제외처리 하는 방향으로 전처리 작업을 수행하였다. 이전에 수행했던 과제에서는 센싱데이터 노이즈를 제거할 때 이동평균을 사용했지만 이번 분석과제에서는 다음과 같은 단점으로 이동평균을 사용하지 않았다. 이동평균 Moving Avera..
-
Warning 없이 Pandas Dataframe의 데이터 조작하기 - replace학습/Python 2023. 1. 12. 17:23
오늘 태블로 대시보드 용도로 데이터마트 전처리 작업을 하고 있었다. Python으로 몇 가지 레코드를 수정하는 도중에 'SettingWithCopyWarning' 경고가 발생하여 이를 간단한 방법으로 처리했다. 해당 데이터 전처리는 Dataframe에서의 String 값을 변경하고자 하는 값으로 치환하는 작업이었고, filtered dataframe의 정보를 수정하면서 원본dataframe의 값이 변경되었음을 알려주는 경고였다. Python에서 데이터 분석을 하는경우 원본 Dataframe을 filtering의 결과인 파생 Dataframe을 다루는 경우가 정말 많은데, 크게 신경안쓰고 작업하다보면 해당 경고를 자주 접하게 된다. 평소에는 크게 신경쓰지 않고 대충 넘겨버리거나 .copy로 경고를 처리하곤..
-
SQL을 활용한 데이터 분석 사례학습/SQL 2020. 2. 14. 17:15
프로젝트 진행하면서... 내가 하기는 했지만 어디에도 기록이 남지 않고 내 에버노트에서 먼지만 쌓이고있는 소소한(?) 분석 사례를 블로그에 간단하게 정리해본다. 사실 지금에서야 생각해보면 분석이라고 하기도 애매한 '단순집계' 이지만.. 그래도 데이터분석에 관심을 가지고 있는 누군가는 이 글을 통해 조금이나마 도움이 되지 않을까? 싶어 과거 수행했던 소단위 분석 중 한 가지를 본 피드에 정리해 보았다. 0. Intro 0.1. 설명 A공사는 자국의 모든 수출입 기업을 관리하고 있다. 현재 A공사에서 관리하고 있는 내부 데이터 및 신규 수집한 외부 데이터를 활용하여 기업의 건전성, 성실성 등을 수치화하고, 이를 토대로 수출입 기업의 (우량/부실) 정도를 수치화 할 수 있는 평가지표를 개발하고 싶다. 단계1...
-
[Spark] dataframe내 Vector타입 컬럼 필터링학습/Apache Spark 2020. 1. 7. 17:22
spark dataframe의 컬럼이 string이나 단순 numeric 타입인 경우 filter 메서드를 사용하여 쉽게 필터링 할 수 있다. df.filter("컬럼명 != '필터값'") 그러나 컬럼이 Vector타입인 경우 동일한 방식으로는 필터링 할 수 없기 때문에 아래의 방법을 적용해야 한다. 1. 예제 데이터 프레임 생성 %spark // 임포트 라이브러리 import org.apache.spark.ml.feature.VectorAssembler import org.apache.spark.ml.linalg.Vectors import org.apache.spark.ml.linalg.Vector import org.apache.spark.sql.functions.udf // 데이터프레임 생성 val..
-
sql 특정 컬럼이 존재하는 테이블 찾기학습/SQL 2019. 12. 31. 16:30
DB에 저장되어있는 테이블이 너무 많은데 특정 컬럼이 존재하는 테이블만을 검색하고 싶은 경우가 종종 있다. 사실 이런 작업은 ERD가 구축되어있다면 쉽게 확인할 수 있을 것이나, 여러 프로젝트 경험상 대기업이고 공기업이고간에 ERD가 제대로 구축되어 있는 꼴을 본 적이 없다. 제대로 된 ERD가 존재한다고 하더라도 기업의 자산이자 DB 설계도나 다름없는 정보를 쉽게 내주지도 않는다. 따라서 프로젝트를 착수하면 데이터에 대한 사전 지식도 거의 없는데 심지어 무슨 테이블을 봐야 하는지도 모르는 경우가 있어서(심지어 본인들 데이터를 본인이 모르는 경우도 굉장히 많다) 이런 경우에는 DB를 다 뜯어서 프로젝트 진행을 위해 필요한 컬럼을 정의하는 것부터 시작해야 한다. 가령 KEY로 사용되는 컬럼을 찾은 경우, ..
-
MySQL에 csv 임포트 - MySQL Workbench학습/SQL 2019. 8. 1. 12:03
본 포스트는 Windows 환경에서 Mysql Workbench를 사용하여 csv 파일을 Mysql DB에 임포트 하는 방법을 설명합니다. 상세한 임포트 방법을 확인하실 경우 본 포스트의 2.과정 부분부터 참고해 주세요. 2.과정 요약 (Import 절차) 2.1. MySQL Workbench 설치 2.2. DB 연결 2.3. csv 파일 확인 (중요) 2.4. 파일 임포트 2.5. 결과 확인 1. 도입 1.1. 데이터 마이그레이션? 외부 프로젝트를 진행하다보면 외부 데이터를 자신의 주 분석 환경에 저장할 일이 생긴다. 이러한 데이터 이식 작업을 데이터 마이그레이션, 좀 더 흔한 표현으로는 데이터 저장이라고 말한다. 사실 데이터 마이그레이션이라는 것은 기존의 환경에서 다른 환경으로 데이터를 이주시키는 과..
-
3rd Party with Looker, 서드파티에 대하여학습/정보 2019. 7. 30. 16:33
Google이 26억불(3조 695억원)의 금액으로 Looker를 인수한 이후로 국내에서의 관심이 뜨겁다. 여러가지 Looker 관련 질문을 받으면서, 일부 답변을 포스트로 작성해보는 것도 괜찮겠다는 생각이 들어 본 포스팅을 진행하게 되었다. 'Looker를 지원하는 3rd Party가 존재하는지 궁금하다'는 질문을 받았다. 이 질문을 듣고 순간 멈칫했던 부분은 내가 3rd Party라는 용어에 대해 정확하게 알고 있지 못했기 때문이다.. 흠솔직히 3rd Party라는 단어는 정말 자주 들었지만 직관으로, 컨텍스트로 이해를 했기 때문에 딱히 찾아보거나 하지 않은 것이 사실이다. 먼저 3rd Party라는 용어의 개념을 정립하고, 본 질문이었던 Looker의 3rd Party 지원 여부를 답변하도록 하..