본문 바로가기

Python

(10)
random.sample() 사용하여 무작위 데이터 생성하기(random, sample, join, while) 업무 중에 python을 통해서 테이블을 생성하고 무작위 데이터를 적재하고자 하는 Needs가 있었다. random 모듈을 사용하였으며, while문을 통해서 쿼리를 한 건씩 생성해 실행해주는 방식이라 소요시간이 길다는 단점이 있으니 참고. random.sample(sequence, k) random 모듈의 sample() method는 sequence에서 지정된 수(k)의 항목을 무작위로 선택한 목록을 반환한다. cf. sequence : list, set, range etc... mylist = ["blue","pink","red","yellow","green"] smplColor = random.sample(mylist, 2) print(smplColor) #result# #['yellow', 'p..
invalid non-printable character U+00A0 에러 원인 및 해결 Q. 아래와 같이 while, if문 코드를 실행하다가 에러가 발생했다. while b= 1: print('true') b=10 else: print('false>>>'+b) b=b+1 # Error # Syntax Error: invalid non-printable character U+00A0 A. 복사한 코드 안의 공백(space)가 python의 형식과 맞지 않아서 발생한 에러였다. 따라서, 코드 내 space를 지우고 enter를 다시 쳐주면서 코드의 공백을 맞춰준다. 파이썬은 한줄씩 해석/대화하면서 동작하는 인터프리터 방식이므로 공백(space, tab ....)을 유의해서 써주어야 한다. cf. 이전에 VS Code에서 비슷한 에러 발생했었음..참고(Unindent not expected P..
Spark의 Dataframe , Pandas의 Dataframe 활용하기 Q. Databricks에서 Spark SQL 로 특정 데이터를 select해서 dataframe을 만들었다. 그 df에 iloc, loc 등의 속성을 사용하려고 하니 존재하지 않는 속성이라고 에러가 발생했다. A. Dataframe(made by Spark) , Dataframe(made by Pandas) 어떻게 만들어진 Dataframe이냐에 따라서 다르게 사용해야 한다. 예를 들어, 다음과 같은 test 테이블이 있다고 가정해보자.(해당 테이블은 pyspark로 생성되었음) 'test'라는 테이블의 'id' 컬럼의 값 개수를 센 후, 해당 수가 1 이상이면 True를 , 아니면 False를 Print하고 싶다면..? 1. Dataframe(made by Spark) 그대로 사용하기 df = spa..
assert(가정 설정문) 사용하기 assert (사실임을 강하게) 주장하다 (단호하게) 자기주장을 하다 (자신의 권리·권위 등을) 확고히 하다 Python에서 assert는 뒤에 오는 조건이 True가 아니면 AssertError를 발생한다. 따라서 assert는 프로그램 중간 점검을 위해서 많이 사용한다. (ex. 원하는 조건의 변수 값 받을 때까지 assert로 테스트 등) a = 3 assert a == 2, 'assert 에러 발생' ###결과### #AssertionError: assert 에러 발생 lists = [1, 2, 3.14, -4] def test(num): assert num > 0, '음수 존재' for num in lists: test(num) ###결과### #AssertionError: 음수 존재
[Python] Unindent not expected Pylance 에러(VS Code 사용) Q. VS Code에서 코드를 짜고 실행하니 다음과 같은 에러 발생..Unindent not expected Pylance ​ A. 문법적인 문제는 아니고, 들여쓰기가 달라져서 생긴 문제. 코드를 Notepad++ 에서 쓰다가 VS Code에 그대로 붙여넣기 해서 발생한 문제였다. ​ 분명 똑같아 보이는데 뭐가 다른가 싶지만...마우스 드래그하면 space bar, tab 차이인듯. ​ 파이썬은 한줄씩 해석/대화하면서 동작하는 인터프리터 방식이므로, 코드를 그대로 복붙하기보다는 하나씩 써야겠다... 만약 복붙할 일이 있으면, tab과 spacebar 자세히 살펴보면서 코드 정리하면 해당 에러는 해결!
[Python] is_displayed(), is_selected(), is_enabled() 사용하기(Selenium) Q. 크롤링 하던 중, 특정 클래스네임 or CSS Selector의 상태에 따라서 값을 읽어오고 싶었다. 이때 활용한 메소드가 어떤 값을 반환하는지.. ​ A. 각 메소드별 간략 설명 ​ is_displayed() A라는 클래스네임을 가진 항목이 화면에 출력되었는지 확인 driver.find_element_by_class_name("A").is_displayed() > 페이지에서 표시되면 True, 아니면 False 반환 ​ is_enabled() A라는 클래스네임을 가진 항목이 활성화되었는지 확인 driver.find_element_by_class_name("A").is_enabled() > 페이지에서 활성화되어있으면 True, 아니면 False 반환 ** 활성화되어있는지 확인하려는 요소에 disab..
[Python]find_elements_by_class_name 사용해서 특정 버튼 클릭하고 값 읽어오기('더보기' 클릭, 동일한 class name 인 경우..) Q. 네이버 플레이스에서 맛집들 크롤링 작업하던 중... 데이터랩 더보기 부분의 성별 % 부분 값을 가져오려고 함. ​ A. 작업 순서와 코드 부분 (특정 화면 열리고 url 위해서 작업하는 부분은 뺐음) ​1) 스크롤 좀 내리고 ​ driver.execute_script("window.scrollTo(0, document.body.scrollHeight)") ​ 2) class name 이 '_3iTUo' 인 element 중에서 '더보기'라고 쓰여진 부분 클릭해서 데이터랩 정보 보이게 하고 cf. 보통 첫번째, 혹은 두번째에 데이터랩 '더보기' 존재하고, 다행히(?) elements별로 text가 달라서 아래와 같이 if문으로 구분해서 클릭 및 값 찾는 코드를 사용할 수 있었다. *** 네이버플레이스..
[Python]특정 폴더 하위의 파일들 읽어서 하나의 dataframe 만들기 Q. 특정 폴더 하위에 여러개의 파일이 있는데, 해당 파일들을 다 읽어서 뒷단 작업을 하고 싶었다. (하나의 데이터프레임으로 만들어서 한꺼번에 작업하고 싶음!) ​ ​ A. 하단 코드 참고 import pandas as pd # 파일들 위치한 경로 path = 'target/' #해당 경로 하위내 모든 파일 file_list = os.listdir(path) #해당 경로 하위 내 csv로 끝나는 파일들 file_list_csv = [file for file in file_list if file.endswith('.csv')] df = pd.DataFrame() for i in file_list_csv: data = pd.read_csv(path+i, encoding = 'utf-8-sig') df = p..