데이터의 타입을 일일히 확인한다고? 파이썬은 객체니깐 type 함수를 쓰면 언제든지 확인할 수 있습니다. 그런데 데이터가 많으면 일일이 확인할 수 없어서 for문이나 while을 돌리고 있는데 예상치 못한 타입이 나온다면 대처하기가 어렵습니다. 이럴 때 물론 type()을 활용할 수 있지만 루프를 한다면isintance()를 쓰는 걸 추천드립니다. isinstance란? 파이썬은 동적 타이핑(dynamic typing) 언어로, 변수의 타입이 실행 시간(runtime)에 결정됩니다. isinstance 함수는 이러한 특성을 활용하여 객체가 특정 클래스의 인스턴스인지를 동적으로 확인하는 데 사용됩니다. isinstance 함수 개요 isinstance 함수는 객체가 특정 클래스의 인스턴스인지를 확인하는 파..
There is no such driver by url 오랜만에 셀레니움을 써야해서 크롬드라이버 자동으로 받게 했는데 안되네요. 크롬 드라이버 매니저가 되지 않습니다. 'There is no such driver by url' 이라고 합니다. 즉, 이런 다운로드 링크 없다는 얘기입니다.(정말...구글...이럴거야?) 왜그런가 하니 사이트를 바꿔놨습니다. 그걸 chromemaneger는 인지하지 못한 것 같습니다. 그래서 115 버전부터는 다른 사이트에서 운영하니 그 사이트를 가서 받아주어야 합니다. (짜증...) 그럼 최신버전은 더이상 최신버전이 아니니 더이상 chromemaneger는 쓸 수 없게 되는 것... 또르르륵.... 여태 chromemaneger로 해놨던거 다 바꾸게 생겼습니다. 그래서 어느..
데이터프레임 표를 웹에 나타내기 데이터프레임은 데이터를 표 형식으로 표시하고 저장하는 데 매우 유용한 판다스(Pandas) 라이브러리의 핵심 데이터 구조입니다. 이것을 그대로 HTML에 옮기고자 합니다. 즉, 데이터프레임을 HTML로 변환하면 데이터를 웹 페이지에 표시하거나 공유할 때 편리하게 사용할 수 있을겁니다. 이번 포스팅에서는 데이터프레임 표를 HTML에 변환하는 방법을 소개합니다. 판다스 데이터프레임 생성 먼저, 데이터프레임을 생성하고 데이터를 채워봅시다. 예시로 사용할 간단한 데이터프레임을 만들어보겠습니다. import pandas as pd data = {'이름': ['Alice', 'Bob', 'Charlie'], '나이': [25, 30, 35]} df = pd.DataFrame(data..
원하는 좌표에 점으로 표현할 수 있다면? 그래프를 그리는 건 어찌어찌 하는데 내가 원하는 곳에 점을 표시하고 글씨를 쓸 수 있으면 더 멋진 그래프를 만들 수 있을겁니다. 멋진 그래프를 그리기 위해 마커설정과 글씨 넣는 방법을 정리해봤습니다. 그래프에 점 넣기 점을 넣으려면 scatter를 이용하면 됩니다. matplotlib는 그래프 겹치기가 가능한 라이브러리라는 것을 이용하면 되는데 다음과 같이 합니다. import matplotlib.pyplot as plt # x와 y 좌표 지정 x = [1, 2, 3, 4, 5] y = [10, 15, 13, 18, 20] # 그래프를 그리기 plt.plot(x, y) # 원하는 위치에 점 넣기(3,13) plt.scatter(3, 13, color='red', ..
DtypeWarning 잘 불러오던 csv가 간혹 DtypeWarning 이라고 경고가 뜹니다. DtypeWarning: Columns (37,66) have mixed types. Specify dtype option on import or set low_memory=False. 특정 컬럼의 type이 섞여있어서 결정할 수 없다고 합니다. 그럼 다 object로 하지 않았나? 왜저러는걸까? 싶은데 컴퓨터가 인식을 그렇게한다니까 어떻게 할 수 있는 건 아닌 것 같습니다. 저 경고를 무시하고 코딩실행을 하니깐 확실히 작업속도가 현저히 느려졌습니다. 메모리 도둑이 따로없네요. 해결방법 해결방법은 두가지입니다. (1) 문제가 되는 컬럼의 타입을 정해준다 (2) csv에 쓰는 메모리 제한을 없애서 csv를 한번..
해상도마다 달라지는 프로그램 크기 Pyqt를 이용해 프로그램을 종종 만드는데요. 컴퓨터마다 해상도가 달라서 내 컴퓨터에는 괜찮게 나오는데 다른 컴퓨터에 적용시키면 창 크기가 달라지는 걸 볼 수 있습니다. 다만, 창 크기만 달라질 뿐 안에 있는 위젯의 크기는 달라지지 않습니다. 해결방법 코드로 하기 직접 코딩으로 한다면 QgridLayout을 사용하면 됩니다. QgridLayout은 그리드 내에 있는 위젯을 확장 또는 축소하여 창의 크기에 맞게 배치하는 레이아웃 매니저로 창의 크기가 변경되면 위젯도 동적으로 크기가 조정되어 창의 크기게 맞게 정렬됩니다. 다음 예제는 버튼 4개를 만들어 GridLayout을 적용한 예제입니다. import sys from PyQt5.QtWidgets import QAppli..
리스트를 복사하는 이유 파이썬으로 데이터분석에서 가장 중요한게 데이터입니다. 데이터를 보존해놔야 다른 모델을 쓰거나 다른 아이디어를 적용할 수 있기 때문에 반드시 복사를 해놔야합니다. 가끔 리스트로서 데이터를 가지고 있을 때가 있는데 다른것도 마찬가지겠지만 코드 진행을 하다보면 리스트 내용이 바뀌면서(다중 참조) 어그러지기 때문에 원본 구분을 잘 해놓는게 중요합니다. 리스트 복사하기 슬라이싱을 사용한 복사 보통 copy 매쏘드를 쓰는데 슬라이싱을 통해서도 할 수 있습니다. 전체를 슬라이싱하면 복사본으로 인식합니다. original_list = [1,2,3,4,5] copied_list = original_list[:] copy를 이용한 복사 copy 매쏘드를 이용한 방법입니다. 리스트 뒤에 copy()를..
파이썬 대소문자 변경 대소문자 변경하는 방법에 대해 알아보겠습니다. 어째 대소문자는 간단한데 자주 쓰지 않아서 자꾸 까먹게 되는 것 같습니다. 문자열 대문자로 변경 대문자로 변경하려면 upper() 함수를 쓰면 됩니다. 다들 그러는지 모르겠지만 저도 모르게 파라미터 자리에 문자열을 넣어서 오류 한번 나서야 기억이 나는데 대문자로 바꿀 문자열은 upper 앞에 넣어야 합니다. s = 'PipeMime' print(s) print(s.upper()) 숫자가 섞여있어도 알아서 알파벳을 인식해줍니다. s = 'Pipe 123 Mime' print(s) print(s.upper()) 문자열 소문자로 변경 소문자는 lower() 함수를 쓰면 됩니다. 마찬가지로 str.lower()순으로 써줘야 합니다. s = 'P..
현금콤마 표시하기 돈을 숫자로 표지할 때 숫자 3자리(천단위) 마다 콤마를 찍는데요. 콤마로 이 돈이 얼마인지 한눈에 알 수 있도록 해줍니다. 파이썬으로 이런 숫자표기를 하는 방법에 대해 알아볼까 합니다. str.format() 메서드 사용 숫자콤마를 하려면 str.format()에서 format_spec이라는 인자를 쓰면 되는데요. value 값이 자동으로 콤마를 표시해서 나옵니다. formatted_value = format(value, format_spec) value: 콤마를 찍을 숫자입니다. format_spec: value 형태를 변경해주는 기능을 포맷 스펙이라고 합니다. 현재는 콤마를 사용해야 하니 format_spec에 콤마(,) 입력합니다.format_spec에 대한 자세한 내용은 가이드..
문자열 이스케이프 문자열을 다룰 때 특수 문자를 처리하기 위해 이스케이프 문자라는 걸 사용합니다. 특수한 의미를 갖는 문자를 일반 문자처럼 쓰거나 줄바꿈을 하기 위해서 씁니다. 이스케이프의 뜻은 탈출이라는 뜻인데 말 뜻대로 문자열에서 탈출하거나 원래의 쓰임에서 탈출해서 일반 문자가 되는 것을 의미합니다. 주로 쓰는 이스케이프 문자 사실 더 있지만 그나마 사용할만한 것만 소개하겠습니다. 그외의 것은 파이썬 책이나 파이썬 튜토리얼에서 확인하시면 될 것 같습니다. Escape Meaning \\ Backslash(stores one \ ) \' Single quote(stores ') \" Double quot(stores '') \f Formfeed \n Newline(linefeed) \r Carriage..
문자열 패딩 파이썬에서는 f-string이나 문자열 포맷팅으로 변수를 문자열에 삽입할 수 있는데 부등식 기호를 잘 쓰면 패딩 기능이 가능합니다. 즉, 문자열의 최소 길이를 내가 지정할 수도 있고 패딩된 문자열 정렬을 지정할 수 있습니다. 패딩정렬 문자열로써 패딩을 하는 경우 컴퓨터는 부등식을 정렬로 받아들입니다. f-string으로 패딩을 쓰면 다음과 같이 쓰면 됩니다. f"{변수 또는 표현식:패딩정렬}" 각 요소는 다음과 같습니다. 변수 또는 표현식 : 포맷팅하고자 하는 값 또는 표현식 패딩 : 필드의 최소 길이 지정. 길이를 넘지 않는 한도내에서 문자열이 채워집니다. 정렬 : 패딩된 문자열을 어떻게 정렬할지 지정. '' : 오른쪽 정렬 '^': 가운데 정렬 예제를 보면 이해가 되실 겁니다. name ..
파이썬의 강력한 도구 데코레이터 파이썬은 다양한 프로그래밍 기술을 지원하는 다재다능한 언어입니다. 그 중에서도 파이썬의 데코레이터는 코드 재사용과 함수 감싸기를 간편하게 해주는 강력한 도구입니다. 데코레이터란? 데코레이터는 함수나 메서드의 동작을 변경하거나 확장하기 위해 사용되는 파이썬 함수입니다. 데코레이터를 사용하면 함수의 코드를 수정하지 않고도 함수의 동작을 변경할 수 있습니다. 이는 코드의 재사용성을 높이고, 가독성을 향상시키는 데 큰 도움이 됩니다. @ 기호를 사용하여 함수 위에 표시됩니다. def my_decorator(func): def wrapper(): print("Something is happening before the function is called.") func() print(..
병렬 컴퓨팅 수행하기 파이썬은 데이터 과학 및 기계 학습 분야에서 인기 있는 언어 중 하나로, 데이터 처리와 분석에 탁월한 퍼포먼스를 자랑합니다. 그러나 대규모 데이터셋을 처리하거나 병렬 컴퓨팅을 수행해야 할 때 파이썬이 느리다보니 여러 라이브러리를 사용하면서 극복하고 있습니다. 빠른 처리를 위해 병렬 컴퓨팅 또한 좋은 방법이 될 수 있는데 Dask를 통해서 병렬 처리를 해보는게 어떨까 싶습니다. Dask 소개 Dask는 병렬 컴퓨팅 및 분산 데이터 처리를 위한 파이썬 라이브러리로, NumPy와 Pandas와 유사한 API를 제공하고 대규모 데이터셋을 처리하고 병렬화하는 기능을 제공합니다.즉, Numpy처럼 Pandas처럼 할수 있으면서 병렬처리 기능을 첨가할 수 있다는 얘기입니다. Dask의 주요 기능..
판다스로 Json 불러오기 Json(JavaScript Object Notation) 은 Javascript 객체 문법을 따르는 문자 기반의 데이터이입니다. 네트워크를 통해 전송할 때 유용한 면이 많기 때문에 다양한 곳에서 쉽게 볼 수 있는 포맷입니다. 데이터를 크롤링하거나 다른 외부에서 가져올 때 Json 객체로 변환되어서 가져오는 경우가 많은데 파이썬에서 json 모듈을 이용해 json 파일을 열 수도 있지만 보기 불편합니다. 가독성을 위해 판다스에서 Json파일을 저장, 불러올 수 있습니다. pd.read_json() 함수를 사용하여 JSON 파일이나 문자열을 데이터프레임으로 변환할 수 있습니다. 아래는 JSON 데이터를 판다스 데이터프레임으로 불러오는 예시 코드입니다: JSON 파일을 데이터프레임..
Json 파일 만들기 Json은 자바스크립트의 객체 표기법으로부터 파생된 부분 집합으로 몇 가지 표기법에 의해 구조가 구성됩니다. Json 데이터는 '키 : 값' 의 딕셔너리 형태로 이루어집니다. 콜론으로 구분됩니다. 여러 '키:값'은 쉼표(,)로 데이터를 구분합니다. 객체(object)는 중괄호({})로 표현합니다. 배열(array)은 대괄호([])로 표현합니다. 예를 들어, 어떤 사람의 정보를 객체로 json으로 표현하다고 하면 다음과 같이 할 수 있습니다. { "name": "John", "age": 30, "city": "New York" } 대괄호로 둘러쌓인 값들은 주로 리스트로 표현되는데 이 배열을 쉼표로 구분해서 표현합니다. { "name": "John", "age": 30, "city": ..