전체 글 29

[Tableau] 학생용 Tableau Desktop 다운로드

https://www.tableau.com/why-tableau/what-is-tableau What is Tableau? What is Tableau? Tableau is a visual analytics platform transforming the way we use data to solve problems—empowering people and organizations to make the most of their data. www.tableau.com Tableau는 2003년에 Stanford에서 분석의 흐름을 개선하고 더 대중적이게 만들기 위한 프로젝트의 결과로 만들어졌다고 한다. 하지만 잘 사용하기 위해서는 Tableau의 핵심 강점과 더불어 주의할 점이 있다고 한다. Tableau를 사용..

시각화 2024.04.05

[Pandas]ParserError: Error tokenizing data. C error: Expected N fields in line K, saw N+1

공공 데이터 포탈에서 데이터를 신청해서 여러 파일들을 .csv 형태로 열다가 다음과 같은 에러를 마주하게 되었다. 내가 작성했던 코드는 아래와 같았다. import os import pandas as pd # path 찾는 code path = "./data/[데이터명].csv" df = pd.read_csv(path, encoding='utf-8') # Error df.head() csv파일의 경우 comma를 사용해 column 단위의 값들을 구분하는 파일인데, 에러메시지를 보니 13개의 속성을 기대했으나 실제 파일에는 14개가 존재한다고 한다. 그래서 해당 경로에 위치한 csv 파일을 직접 열람해서 Column으로 기재된 부분의 개수를 세었으나 13개였다. 눈으로 보기에는 잘못된 부분이 잘 보이지 ..

데이터 분석 2024.03.26

[Feature Engineering] MI & Creating Features 연습하기

새로운 Feature들을 발견해내기 위해서는 도메인 지식에 대한 이해와 더불어 이전 선행 연구들이 있는 지에 대해 살피는 것이 좋다. 또한 데이터 시각화를 통해 복잡한 관계를 단순화 할 방법이 있을 수 있기에 feature engineering 과정에서 시각화를 함께 진행하는 것이 좋다. Mathematical Transforms 기본적인 사칙연산 등과 같은 연산의 경우 외에도 로그 변환 등을 할 때 활용하게 된다. Counts 주로 Boolean 형태로 정의하게 되며 df['feature1'] = df[['feature2', 'feature3', 'feature4']].sum(axis=1) 와 같은 형태로 변환할 수 있다. Building-Up and Breaking-Down Features 시간에 대..

ML 2024.03.25

[Feature Engineering] Mutual Information이란?

ML에 대한 전반적인 복습을 위해 Kaggle에 있는 Feature Engineering을 통해 그 개념들과 예제에 대해서 다시 복기해보고자 한다. 튜토리얼에 나와 있는 Feature Engineering의 목적을 살펴보면 다음과 같다. "The goal of feature engineering is simply to make your data better suited to the problem at hand." Feature Engineering을 통해 얻을 수 있는 효과는 다음과 같다. 1) 모델의 예측 성능 향상 2) 계산적인 요구(computational needs)나 데이터 양에 대한 요구(data needs)를 줄여줌 3) 결과에 대한 해석 가능성 향상 유용한 Feature 발굴을 위해서는 만..

ML 2024.03.24

[Python] BFS 연습하기 (with boj 토마토)

일반적으로 탐색 알고리즘 문제를 풀다보면 DFS 혹은 BFS를 사용하는 것에 큰 차이가 없는 경우가 존재하기도 하지만 DFS의 경우 완전탐색 형태 및 특정 목적지가 명확히 존재하는 경우에 경로를 찾는 등의 문제에 유리하고, BFS의 경우 Simulation 형태의 문제에서 이점을 가지고 있다. 백준에 있는 토마토 문제가 두 가지 있는데, 각각 2차원 격자에서와 3차원 격자에서 익은 토마토가 옆에 익지 않은 토마토가 있다면 숙성시켜서 하루 뒤에 익힌 토마토로 전이시키는 형태의 문제이다. 기본적으로 문제의 세팅이 차원수의 차이를 제외하고는 거의 동일하기 때문에 2차원 격자에서의 풀이를 3차원 격자로 확장하는 과정에서는 추가되는 방향 정보 외에는 별도로 고려할 사항이 많지 않았다. 토마토(2D) https:/..

알고리즘 2024.03.08

[LeetCode] 1179. Reformat Department Table (Pivot Table)

reindexinghttps://leetcode.com/problems/reformat-department-table/ 위 문제는 LeetCode 내에서도 굉장히 쉬운 문제에 속하지만 행으로 쌓인 데이터를 피봇테이블로 변환하는 정형화된 로직을 SQL과 Pandas 모두로 연습해보기에 좋은 문제라고 생각되어 정리하게 되었다. Department라는 테이블의 스키마를 보면 (id, revenue, month)로 구성된 각 필드가 month가 지남에 따라 id에 대한 revenue가 결산되어 기록되는 형태임을 알 수 있다. 문제의 요구사항은 일종의 로그 형태로 월마다 쌓인 기록을 각 사용자(id) 별로 언제(month) 얼만큼(total revenue per month) 구매하였는지를 알 수 있는 피벗 테이블..

SQL - Pandas 2024.03.08

[Python] boj 2644 촌수계산

https://www.acmicpc.net/problem/2644 2644번: 촌수계산 사람들은 1, 2, 3, …, n (1 ≤ n ≤ 100)의 연속된 번호로 각각 표시된다. 입력 파일의 첫째 줄에는 전체 사람의 수 n이 주어지고, 둘째 줄에는 촌수를 계산해야 하는 서로 다른 두 사람의 번호가 주어 www.acmicpc.net 전형적으로 DFS를 사용해야 하는 문제의 형태이다. a와 b의 촌수를 결정할 시에 dfs로 완전탐색을 진행하면서 그 중 최소 거리를 반환하도록 해야 한다. # 촌수계산 from typing import List import sys input = sys.stdin.readline n : int = int(input()) a, b = map(int, input().rstrip()...

알고리즘 2024.03.07

[0] SQL <-> Pandas

생각해보면 나는 Python에서 데이터를 다룰 때 반드시 한번 쯤은 사용하게 되는 Pandas Library를 정식으로 Documentation으로 익혔다기 보다는 프로젝트나 원하는 형태로 데이터를 바꾸고 싶을 때마다 찾아서 사용하다보니 고착화된 습관대로 사용하고 있는 느낌이 더 크다. 최근에 SQL 쿼리를 작성하는 공부를 집중적으로 하다보니 SQL 쿼리를 Pandas 방식으로 깔끔하게 작성하거나, Pandas에서 작성한 방식을 SQL 쿼리로 깔끔하게 작성하는 일종의 Template이 있으면 좋을 것 같다는 생각이 들었다. SQL에서 다루는 각각의 테마 별로 Pandas를 이용하게 되면 이를 어떠한 방식으로 구현해야 할지 하나씩 정리해 나가고자 한다. 기본적으로 LeetCode에 있는 문제가 두 경우로 ..

SQL - Pandas 2024.03.04