묻고 답해요
158만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
한글 표의 필드명 표시방법이 있을까요?
한글문서 표 안에 셀 별로 필드명을 지정했습니다.일반 문서의 필드명은 누름틀 이름이 나오는데셀의 필드명은 표시가 되지 않더라구요..셀의 필드명 확인하기가 번거로운데 혹시 방법이나 팁이 있나 싶어 여쭤봅니다
-
해결됨직장인에게 꼭 필요한 파이썬-아래아한글 자동화 레시피
data = list( ~~~ .Value) 일 경우 오류 발생 이유?
2-4. [응용] 엑셀문서 값을 필드에 입력하기 관련입니다.※ 원 질문글 올린 이후, 공부해서 이 글에 자문자답하였습니다. 검토 부탁드립니다. 감사합니다. 질문을 드리기 위하여 파이썬 콘솔(IPython 적용)에서 진행한 코드를 아래에 먼저 제시 후 말씀드리겠습니다.excel = win32.gencache.EnsureDispatch("Excel.Application") excel.Visible = True wb = excel.Workbooks.Open(r"c:\Users\user\desktop\취미.xlsx") ws = wb.Worksheets(1) row = 2 data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0]) print(data[2]) 1984-05-14 00:00:00+00:00 row = 2 data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value) print(data[2]) Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\IPython\core\interactiveshell.py", line 3577, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-9-a5cbf3d139c3>", line 1, in <module> print(data[2]) IndexError: list index out of range # 아래는, data = ~~~.value[0] 일 경우의 데이터 형태를 출력해 보기 위함. data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0]) print(data) ['마크', '남', pywintypes.datetime(1984, 5, 14, 0, 0, tzinfo=TimeZoneInfo('GMT Standard Time', True)), 'VR'] # 아래는, data = ~~~.value 일 경우의 데이터 형태를 출력해 보기 위함. data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value) print(data) [('마크', '남', pywintypes.datetime(1984, 5, 14, 0, 0, tzinfo=TimeZoneInfo('GMT Standard Time', True)), 'VR')] # 위에서 확인 결과, data = ~~~.value[0] 일 경우와 data = ~~~.value 일 경우에, # print로 데이터 출력한 결과는 거의 비슷하나, # data = ~~~.value 일 경우에는 대괄호 안에 괄호가 하나 더 있음. 위의 과정에서 아래와 같이 진행하면 물론 정상적으로 출력됩니다.row = 2 data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0]) print(data[2]) 1984-05-14 00:00:00+00:00 하지만 아래와 같이 진행하면 오류가 납니다. 원 코드에서 ~~~.Value 뒤에 [0] 만 빼 본 것입니다.row = 2 data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value) print(data[2]) Traceback (most recent call last): File "C:\Users\user\AppData\Local\Programs\Python\Python310\lib\site-packages\IPython\core\interactiveshell.py", line 3577, in run_code exec(code_obj, self.user_global_ns, self.user_ns) File "<ipython-input-9-a5cbf3d139c3>", line 1, in <module> print(data[2]) IndexError: list index out of range row = 2 로 지정했으므로,data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value) 은엑셀의 (2,1)부터 (2,4)의 값을 리스트로 가져오는 것일테고,원 코드인 data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0]) 도 역시,지정한 범위의 값들 중 첫번째 행의 값만 가져오므로,엑셀의 (2,1)부터 (2,4)의 값을 리스트로 가져오는 것은 두 경우에 같아 보이는데,[질문 1]왜 원 코드에서는 print(data[2]) 입력했을 때 정상적으로 출력이 되고,원 코드에서 [0] 만 뺀 경우에는 print(data[2]) 입력했을 때 오류가 나는 것이지요?__________________________________________________________________________________P.S. _1 --- 이 질문글 올리고 천천히 강의내용을 다시 읽어 보니,위 코드의 두 번째 라인을 보면, 리턴되는 값을 리스트로 변환하는 코드가 들어 있습니다.기본적으로 ws.Cells나 ws.Range가 리턴하는 값은 튜플인데,이 중 특정 값을 수정하기 위해 튜플을 수정 가능한 리스트 자료형으로 변환을 해 주었습니다.라는 글이 눈에 들어오네요.(※ 처음 읽었을 때는 무슨 말인지 잘 몰랐는데, 강의 내용에 다 써 있는데 제가 이해를 못했던 부분이 많네요.)[('마크', '남', pywintypes.datetime(1984, 5, 14, 0, 0, tzinfo=TimeZoneInfo('GMT Standard Time', True)), 'VR')]요러한 형태가 말씀하신 튜플이라는 것이죠? 이런 형태의 data는 값을 수정할 수 없다는 말씀이죠?반면에,['마크', '남', pywintypes.datetime(1984, 5, 14, 0, 0, tzinfo=TimeZoneInfo('GMT Standard Time', True)), 'VR']요러한 형태는 튜플이 아닌 리스트 자료형이라는 것이죠? 이런 형태만이 data 값을 수정할 수 있다는 말씀이죠?[질문 2]튜플 형태의 데이터에 대하서는 data 값을 수정할 수 없는 것 뿐만 아니라 0, 1, 2번째의 데이터를 선택하는data[0]data[1]data[2]이러한 형태의 명령어조차도 쓸 수 없는 것이죠?제가 쓴 이 내용들이 맞는지만 확인 부탁드립니다.__________________________________________________________________________________ P.S. _2 --- 왕초보들이 더 쉽게 이해할 수 있게 개선의견을 말씀드리면, 아래와 같은 간단한 언급을 추가해주시면 더 좋지 않을까 합니다. (아래 쓴 내용이 맞다면요.) 튜플 형태의 data는 값을 수정할 수 없는데,튜플 형태의 data를 print(data) 했을 때는 [( ~~~~ )] 형태로 확인되고,리스트 형태의 data는 값을 수정할 수 있는데,리스트 형태의 data를 print(data) 했을 때는, 괄호 ( ) 가 없이 [ ~~~ ] 형태로 확인되니 참고하세요.참고로 튜플 형태의 data에 대해서는 data[2] 와 같은 형태로 데이터를 선택하는 명령어도 사용 불가능합니다. 튜플 형태의 data를 리스트 형태의 데이터로 바꿔야만 data[0] 와 같이 데이터를 선택하는 명령어를 사용 가능합니다.확인 부탁드립니다. 감사합니다. ____________________________________________________________________________________________________________________________________________________________________ 위 질문 글을 쓴 이후에 더 공부해 보고 아래와 같이 원인을 추정했습니다. 아래 내용이 위 [질문 1] 과 [질문 2]에 대한 답이 맞나요? 일코님이 바쁘실텐데 낮은 수준의 질문에 답변하느라 애쓰실 것에 죄송하여 그 사이에 자문자답(?)을 해보았습니다. [질문 1] Value[0]을 사용한 경우에는 정상적으로 출력되고, Value만 사용한 경우에는 오류가 발생하나요? [원인 분석]엑셀에서 win32com을 사용하여 특정 셀 범위의 값을 가져올 때, Range.Value는 튜플 형태로 반환됩니다. 이때 반환된 값은 2차원 배열처럼 행(row) 단위로 묶여있습니다.ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value는 튜플 안의 튜플 형태로 데이터를 반환합니다.예를 들어, (2,1)부터 (2,4)까지의 값을 가져오면 결과는 다음과 같습니다:(('마크', '남', datetime 객체, 'VR'),)반면에 ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0]은 첫 번째 행의 값을 선택하는 것이므로, 단일 튜플이 됩니다:('마크', '남', datetime 객체, 'VR')따라서 data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value)의 경우 data는 튜플 안에 또 다른 튜플이 있는 상태입니다. 이때 data[2]를 호출하면 "IndexError"가 발생하는 이유는 data가 한 개의 튜플을 포함하고 있기 때문입니다. 즉, data 안에는 튜플이 있고, 실제 데이터는 그 튜플 안에 들어 있기 때문입니다.반면에 data = list(ws.Range(ws.Cells(row,1), ws.Cells(row,4)).Value[0])을 사용하면 튜플 중 첫 번째 행의 데이터를 직접 리스트로 변환하므로 data[2]를 정상적으로 호출할 수 있습니다. [위 내용 요약] Value[0] 사용하면 첫 번째 행의 데이터를 직접 가져오기 때문에 인덱싱이 가능하지만, Value만 사용하면 전체 범위가 튜플로 감싸져 있어 인덱싱 시 오류가 발생합니다. [질문 2] 튜플 형태의 데이터에서 값을 수정하거나 인덱싱할 수 있나요? [내용 추정]튜플은 불변(immutable) 자료형이기 때문에 한 번 생성된 후에는 그 값을 수정할 수 없습니다.하지만 튜플 내의 요소들을 조회하는 것은 가능합니다.즉,수정 불가: 튜플 내의 데이터를 변경하거나 삭제할 수 없습니다.mytuple = (1, 2, 3) mytuple[0] = 100 # TypeError 발생조회 가능: 튜플 내 특정 인덱스의 데이터를 조회하는 것은 가능합니다.mytuple = (1, 2, 3) print(mytuple[0]) # 출력: 1따라서 질문에서 언급한 것처럼 튜플 형태의 데이터에서는 값을 수정할 수 없지만, 인덱싱을 통해 특정 요소에 접근하는 것은 가능합니다.즉:data[0] # 가능 data[1] # 가능 data[2] # 가능따라서 인덱스 접근은 가능하지만 수정은 불가능합니다. 다만, 주의할 점은 위에서data[0] # 가능이라고 하였지만, 이것은 data가 튜플일 경우입니다.data가 튜플 내에 튜플인 경우, 즉 이중 튜플인 경우에는,data[0] # IndexError 발생 [위 내용 요약] 튜플은 불변 자료형으로 값을 수정할 수 없지만, 인덱스를 통해 요소를 조회하는 것은 가능합니다. 다만, 이중 튜플인 경우 인덱스를 통해 요소를 조회 시도 시 IndexError가 발생합니다.
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
여러 태그 제어하는 방법 강의 질문입니다
여러 태그 제어하는 방법 강의 질문입니다해당 강의에서 알려주신대로 gmarket 에서 작업하면 봇으로 인식해서진행이 안 됩니다.사람인지 확인하는 절차가 나오는데이 부분에서 더 이상 진행되지 않습니다.강의를 위해서 만드신 사이트 말고 실제 gmarket 같은 곳에서할 수 있는 방법을 알려주세요
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
무한 스크롤 처리하기 강의에서 실행이 안 됩니다.
안녕하세요 무한 스크롤 처리하기 강의에서 실행이 안 됩니다.06:45 부분입니다.이 code 수정한 영상 다시 올리셔야 할 것 같습니다.바쁘셔서 강의 영상 다시 촬영하시기 힘드시면소스 수정해야 한다고 자막으로라도 올려주세요처음 수강하는 사람 입장에서 시간 낭비가 심합니다.부탁합니다. last_height = driver.execute_script('return document.body.scrollHeight')while True:driver.execute_script('window.scrollTo(0, document.body.scrollHeight)')time.sleep(1)new_height = driver.execute_script('return document.body.scrollHeight')if new_height == last_height: breaklast_height = new_height 강의에서 알려주신 대로 실행하면한 번에 맨 마지막까지 scroll 됩니다.강의에서 보여주시는 대로 되지 않습니다.어떻게 해야 하는지 자세하게 알려주세요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형1 모의문제 3-9번
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요9번문제에서 시험때 제출할때 print(df.sort_values('subscribed').index[0])만 쓰면 될까요? 아니면 월별 데이터 갯수인 print(df)까지 해야하나요
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
작업형 1 모의 문제 1번 70% 데이터 추출 관련
안녕하세요! '앞에서부터 70% 데이터 중 views 컬럼의 3사분위 수에서 1사분위 수를 뺀 값을 구하시오' 이 부분에서 .loc을 사용했을 때와 그냥 슬라이싱을 했을 때의 행 개수 차이가 나서요.. 왜 이렇게 차이가 나는지 궁금해서 문의 남깁니다! 좋은 강의 준비해주셔서 고맙습니다 :)
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
맥OS 고급 입력 컨트롤
안녕하세요!27강 고급 입력 컨트롤 내용에 관하여 질문 드리고자 합니다.from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.common.keys import Keys # 크롬 드라이버 생성 driver = webdriver.Chrome() # 페이지 이동 driver.get("https://www.naver.com") # 태그 찾기 search = driver.find_element(By.CSS_SELECTOR, "#query") # 문자 입력 search.send_keys('스타트코딩') #순차적 키 입력 search.send_keys(Keys.COMMAND, 'a') MAC OS에서 위와 같은 형태의 코드(전체선택 코드)가 작동하지 않아서, 아래의 코드를 사용하였습니다.from selenium.webdriver.common.action_chains import ActionChains actions = ActionChains(driver) actions.key_down(Keys.COMMAND).send_keys('a').key_up(Keys.COMMAND).perform()다만, ActionChains 모듈을 사용하였을 때에도, command+a(전체선택), command+c(복사) 까지는 정상적으로 작동했는데, command+v(붙여넣기)의 경우에만 작동하지 않습니다.혹시 이에 대한 해결 방법이 있을까요?
-
미해결내 업무를 대신 할 파이썬(Python) 웹크롤링 & 자동화 (feat. 주식, 부동산 데이터 / 인스타그램)
주신 파일로 다운로드를 하던 중에 끝에 이런 오류가 뜨는데 어떡해야하나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
검정 방법의 조건??
어쩔때 적합도 검정을 해야하는지 어쩔때 독립성 검정을 해야하는지 헷갈리네요 ㅠ혹시 구분하는 방법이 있을까요?
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
강의자료 다운
강의자료는 따로 다운로드 받을 순 없나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
문제 6번
학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요!질문과 관련된 영상 위치를 알려주면 더 빠르게 답변할 수 있어요먼저 유사한 질문이 있었는지 검색해보세요이상치 제거를df = df[(df['age'] == df['age'].astype(int) ) & df['age'] >0]이렇게 하면 틀린건가요?round쓰는게 이해가 안가네요
-
미해결RAG 마스터: 기초부터 고급기법까지 (feat. LangChain)
임베딩 모델 실행 오류
가상환경에서 버전을 일치 시키고API키 환경변수로 설정했는데...openAI apiㅏkey 가 없다고 나옵니다.혹시 어느 부분에서 문제가 있을까요?
-
미해결[신규 개정판] 이것이 진짜 크롤링이다 - 실전편 (인공지능 수익화)
여러 태그 제어하는 방법 강의 질문입니다
여러 태그 제어하는 방법 강의 질문입니다해당 강의에서 알려주신대로 gmarket 에서 작업하면 봇으로 인식해서진행이 안 됩니다.강의를 위해서 만드신 사이트 말고 실제 gmarket 같은 곳에서할 수 있는 방법을 알려주세요
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
host_name, name 삭제 이유
단순 데이터가 많다는 이유로 삭제를 해야하는 건가요?
-
해결됨프로그래밍 시작하기 : 도전! 45가지 파이썬 기초 문법 실습 (Inflearn Original)
random.choices random.saple 중복 유무
1. 질문하시기 전 유사한 질문이 있는지 검색을 먼저 부탁드려요!전체 소스코드를 올려주시면 답변을 빠르게 드릴 수 있어요!(글보다 빨라요)기초적인 질문은 이미 검색해보시면 사례가 많이 있어요!문법적인 궁금증은 먼저 구글 검색을 통해서 레퍼런스(메뉴얼)을 읽어보시고 해결하시면 실력 향상 100%너무 잦은 질문이나 강의와 관련 없는 질문은 가급적 자제 부탁드려요 ㅠ.ㅠ2. 답변이 다소 늦을 수도 있어요!일반적인 근무시간(9 TO 6) 안에는 답변을 드리도록 노력하고 있어요!문법적인 질문은 먼저 검색을 통해 해결해 보세요!정확하게 질문해주시면 정확한 답변을 받으실 수 있어요!늦더라도 꼭 응답은 드리고 있으니, 먼저 검색을 통해 해결해 보세요!random.sample(population, k, *, counts=None)Return a k length list of unique elements chosen from the population sequence. Used for random sampling without replacement. random.choices(population, weights=None, *, cum_weights=None, k=1)Return a k sized list of elements chosen from the population with replacement. python 공식 문서에는 sample 함수가 중복 없이 생성한다고 적혀 있는 것 같은데, 강의 자료나 강의 내에서는 choices 함수가 중복 없이 생성한다고 적혀 있어서 문의 드립니다
-
미해결[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
KeyError: "['name', 'host_name', 'last_review', 'host_id'] not found in axis"
아래의 코드를 입력하면 다음과 같은 에러가 발생합니다 KeyError: "['name', 'host_name', 'last_review', 'host_id'] not found in axis"왜 이런 건가요?ㅠㅠcols = ['name','host_name','last_review','host_id'] print(train.shape) train = train.drop(cols, axis=1) test = test.drop(cols, axis=1) print(train.shape)
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
레이블 인코딩 시 반복문 내에서 인코더를 다시 선언하는 이유
레이블 인코딩 시le = LabelEncoder() for col in cols: le = LabelEncoder() c_train[col = le.fit_transform(..) c_test .... for 문 전에 레이블 인코더를 호출하여 선언하고 for문 내에서 또 하는 이유는 무엇인가요? for문 시작 전 한번만 해 줘도 되는 게 아닌가해서 질문드려 봅니다.
-
해결됨[파이썬/Python] 문과생도 이해하는 DFS 알고리즘! - 입문편
백준 1260 (DFS 와 BFS) 프린트 위치 질문
안녕하세요 🙂 bfs 에서 질문이 있는데 왜 프린트(print(idx, end = ' ')를 for loop 안에서 queue.append(i) 한 다음 프린트하지 않고 큐에서 팝할때 프린트 하나요?
-
해결됨[퇴근후딴짓] 빅데이터 분석기사 실기 (작업형1,2,3)
members.csv을 다운받았을 때 데이터가 깨지는 현상
members.csv을 다운받았을 때 데이터가 깨지는 현상이 발생하는데해결방안이 있을까요
-
해결됨세계 대회 진출자가 알려주는 코딩테스트 A to Z (with Python)
2133번 문제풀이 관련 질문
안녕하세요 선생님. 이전 두 질문에 대한 답변이 많은 도움이 되었습니다. 감사합니다.2133번 문제의 DP 1번 풀이에서 O(N^2) 풀이를 소개해주셨는데 아래와 같이 dp 테이블을 갱신할 때 sum_dp 테이블을 같이 갱신을 해주면 시간복잡도가 O(N)으로 줄일 수 있지 않나 싶어 질문드립니다.N = int(input()) if N % 2 != 0: print(0) else: n = N//2 dp = [1] * (n+1) sum_dp = [1] * (n+1) for i in range(1,n+1): dp[i] = sum_dp[i-1] * 2 + dp[i-1] sum_dp[i] = sum_dp[i-1] + dp[i] print(dp[-1]) 그리고 이건 다른 종류의 질문인데 혹시 그래프 부분이 실제로 코테에 많이 등장하나요? 제가 조금 급하게 준비하고 있는 상태라 이론을 필수 알고리즘2까지만 들어도 될지 아니면 그래프까지 다 들어야될지 고민중입니다. 조언 주시면 감사하겠습니다!