묻고 답해요
141만명의 커뮤니티!! 함께 토론해봐요.
인프런 TOP Writers
-
미해결단 두 장의 문서로 데이터 분석과 시각화 뽀개기
4강 코드 오류메세지 관련 질의
4r강 마지막에 연산자 적용관련하여 df[df.b == 7] | df[df.a == 5] 라고 코드를 똑 같이 했는데 unsupported operand type(s) for |: 'float' and 'bool' 라고 오류메세지가 나옵니다. 왜이렇게 나오는지가 궁금합니다.
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
레티나 디스플레이 관련 질문
윈도우에서는 레티나 디스플레이 코드로 설정을 해도 표에서 달라진게 없는거같은데 혹시 맥 전용 기능인가요..?
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
워드클라우드 실행 오류
이와같은 오류메시지로 실행이 안되는데 해결책 알수 있을까요 선생님 ㅜ
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
[2/5] plotly express 를 통한 일별 시세 시각화
plotly express 예제 중 질문입니다.1. 우분투 버전(base) root@gd-virtual-machine:~# cat /etc/issueUbuntu 20.04.4 LTS \n \l2. 파이썬 버전(base) root@gd-virtual-machine:~# python --versionPython 3.9.73. 공부하는 부분[2/5] plotly express를 통한 일별 시세 시각화px.line 을 처음에 실행하면 그래프가 나옵니다.그러나, 저장된 파일로 실행하면 그래프가 안 나옵니다.이런 경우도 보셨나요?4. 해당 소스import plotly.express as pximport pandas as pddf = px.data.stocks()dfpx.line(df, x="date", y="GOOG") 처음 실행은 정상적으로 그래프가 나옴저장된 파일로 실행하면 비정상적으로 그래프가 나오지 않음
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
주택도시보증공사 파일이 폐기되었다고 뜹니다.
- 학습 관련 질문을 남겨주세요. 상세히 작성하면 더 좋아요! - 먼저 유사한 질문이 있었는지 검색해보세요. - 서로 예의를 지키며 존중하는 문화를 만들어가요. - 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요.
-
해결됨처음하는 파이썬 데이터 분석 (쉽게! 전처리, pandas, 시각화 전과정 익히기) [데이터분석/과학 Part2]
바뀐 국기 사이트에 대하여
- 기존 사이트였던 www.countryflags.io 가 flagcdn.com 로 대체되면서 직접 따라해보니, 2가지 문제점이 있는 걸 발견했습니다. 1. 대문자로는 404 Not Found가 뜹니다. - 따라서 이미지 링크를 만들 때는 .lower() 로 소문자 변경 처리를 해줘야 합니다. - ex) https://flagcdn.com/48x36/US.png -> https://flagcdn.com/48x36/us.png 2. 국기 매칭 오류 - iso2와 Country_Region 를 매칭할 때부터 오류가 있는 것을 확인했습니다. - 시각화를 하면서 US가 워낙 인구가 많기에 눈에 보였지만 다른 것들도 제대로 매칭되었는 지는 확신할 수 없습니다. - 강의 자료를 바탕으로하면, US의 경우 AS로 매칭이 되어서 https://flagcdn.com/48x36/as.png 국기가 뜨더라구요. - 물론 강사님 말씀처럼, 이미지는 참고용이므로 크게 신경쓰지 않아도 될 문제같습니다. 그래서 저는 만들어진 데이터 프레임 값 중 US만 변경하려고 다음과 같이 허접하게 함수를 만들어서 보정했습니다. ㅎㅎ;; def test_func(row): if(row['Country_Region'] == 'US'): row['Country_Flag'] = 'https://flagcdn.com/48x36/us.png' return row doc_final_country = doc_final_country.apply(test_func, axis=1) 대강 국기가 잘 나오는 것 같네요. 혹시나 이 수업을 들으시는 누군가에게 도움이 될까..? 하여 간단히 기록 남겨봅니다..!
-
미해결파이썬 무료 강의 (활용편5) - 데이터 분석 및 시각화
출산율 수 및 합계 출산율에서 외부 범례 처리
2번째 프로젝트 '출산율 수 및 합계 출산율'에서 통계 데이터 그래프의 범례 처럼 외부 범례에 그래프 라인 대신 별도 마크 표시와 파일 저장시 범례까지 같이 저장하는 방법에 대해 설명해 주시면 감사하겠습니다.
-
해결됨파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
dataframe 접근속도 관련 문의
유튜브 보다 인프런 강의까지 오게되었는데 듣다 궁금한 부분이 있어서 질문드립니다. %timeit을 해서 확인해보니 1) df["Name"][0] 2) df.loc[0."Name"] 3) df.loc[0]["Name"] - 유튜브에서는 1)과 2)를 비교해주셨고, - 인프런에서는 2)와 3)을 비교해주시면서 2)가 접근속도가 더 빠르다고 하였는데 1)이 가장 빠르다고 나와서 이에 대한 다른 이유?가 있는지 궁금해서 문의드립니다.
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part2
Vectorizing / Event-based Backtesting
안녕하세요. 수강생입니다. 강의 정말 감사합니다~ 한가지 질문이 있습니다. 제목과 같이 Vectorizing bt, Event-based bt의 차이가 잘 이해가 되지 않습니다. 제가 하고 있는 (초급) backtesting은 아마도(?) Vectorizing bt인 것 같습니다. ohlcv 가격 데이터로 VAA, DAA, 변동성 돌파 등을 공부해보았습니다. 제가 여쭤보는 내용이 명확성이 떨어지는 것 같아 조금 답답한 맘도 있네요. 질문이 너무 포괄적일 수도 있는데요. Vectorizing bt와 Event-bbased bt 차이에 대해서 간략히(?) 설명해주실 수 있으실까요? ... 디핑님~
-
미해결
파이썬 판다스 질문합니다.
안녕하십니까? 파이썬 공부중인 학생입니다. 도저히 어떻게 해결 해야 할지 모르겠어서 질문 남깁니다. 1. data=[{'A':'0000','B':1234}, {'A':'0200','B':151}, {'A':'0300','B':11},{'A':'0400','B':2014},{'A':'1600','B':32}] 가 있습니다. 2. 이 데이터를 data = pd.DataFrame(data) 로 정의하여 새롭게 만듭니다. 3. 아래(맨밑) 와 같은 엑셀 포맷을 excel_format = load_workbook('엑셀포맷.xlsx',data_only=True) 로 불러왔습니다. 4. 불러온 포맷을 data의 값으로 자동으로 채워주고 싶습니다. 하지만 1. data 를 보시면 'A':'0100' 값과 또 중간에 'A':0500~1500까지의 B 값이 없습니다. 이러한 부분을 B를 0 으로 채워주고 'A':'0000','A':'0200','A':'0300','A':'0400','A':'1600'처럼 B값이 있는값들은 그에 맞게 B값을 채워주고싶습니다. load_ws.cell(1,2,350) 이런식으로 일일이 없는값은 0으로 채우고 있는값은 데이터를 보고 채울순있겠지만 꼭 자동화로 되도록 코드를 작성하고싶습니다. 긴 글 읽어주셔서 너무 감사합니다.
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
requirements.txt 설치 에러
에러 때문에 진도를 못나가고 있습니다. 도움 요청드려요 ㅠㅠ 에러 메세지가 너무 길어서 스크린샷 다 올리기 어렵네요. 그래서 아래 링크에 pdf 파일로 올립니다. https://drive.google.com/file/d/1KYcpktnpC_hccHH5_0yD1S3pRq76aH4G/view?usp=sharing ㅠㅠ
-
미해결공공데이터로 파이썬 데이터 분석 시작하기
'matplotlib.font_manager' has no attribute '_rebuild'
판다스 프로파일링을 삭제하고 다시 재설하여 2.4.0 버전으로 업데이트는 완료했는데 다음과 같음 에러 메시지가 다시 뜨네요ㅜㅜ
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
목차 활성화가 안나옵니다.
알려주신 두가지 방법으로 설치를 실행했지만, 목차 활성화 창이 뜨지 않습니다. 왜 그럴까요? 알려주시면 감사하겠습니다.
-
미해결
(크롤링, 엑셀연동, 데이터분석, 업무자동화용) 파이썬 공부방향 질문드립니다. [어떤 라이브러리를 추가로 공부하면 될지]
안녕하세요. 귀중한 조언 감사드립니다. 파이썬 이제 막 기초를 끝낸 파이썬 초보입니다. 책과 강의로 파이썬 기초서적을 3회독 점도 하였고, 별도로, pandas, numpy, matplotlib, 셀레니움 라이브러리를 공부했습니다. (질문) 저는 전문 프로그래머나 개발자는 아니고, 별도의 사업과 투자를 하는 사람입니다. 제 사업이나 주식, 부동산 자료분석에 활용하고자 파이썬이라는 도구를 활용하려는 것입니다. ● 주로, 방대한 인터넷 세계에서 제가 원하는 자료만을 크롤링해 올수 있는 방법으로 활용 ● 그 크롤링한 자료들을 a. 제가 지정한 폴더에 한번에 다운로드 받거나 (예컨대, 이미지 파일들을 폴더에 대량으로 다운받거나) b. 제가 원하는 크롤링한 내용들(글자 내용 등)을 엑셀에다가 일목요연하게 정리되게 출력해주는 식으로 활용도 해 나가고.. (예컨대, 네이버 연관검색어를 쫙 모아서 엑셀에다가 정리해준다던지) ● 그렇게 크롤링되어 엑셀로 재정리된 그 자료를 데이터 분석도 하고, 그래프도 만들고, 통계도 만들고 아울러 ● 업무 자동화도 만들어나가는 식으로 파이썬을 활용해나갈 것을 염두에 두고 있습니다. =================================== 결국, 크롤링, 엑셀연동, 데이터분석, 업무자동화용으로 파이썬을 활용하고자 합니다. ■ 파이썬 기초에 + 판다스, 셀레니움, 넘파이, matplotlib를 공부한 상태인데 크롤링, 엑셀연동, 데이터분석, 업무자동화용으로 파이썬을 활용하려면 여기에, 어떤어떤 라이브러리(모듈)을 추가로 공부해나가야 하는지, 여기에 자주 사용하는 라이브러리(모듈)은 무엇무엇이 있는지 질문드립니다. 귀중한 답변 정말 감사드립니다. 오늘도 좋은 하루 되세요 ^^
-
미해결파이썬 데이터시각화 분석 실전 프로젝트
to_timedelta 에러에 관련해서 질문드립니다.
안녕하세요 강의 잘 듣고 있습니다. 마라톤 데이터 가공 2 강의를 듣던 중 Step 5단계에서 오류가 발생합니다. 사용하고 있는 파이썬 버전은 3.8.12이고 pandas 버전은 1.3.4입니다. 강의 내용대로 순차적으로 실습 진행 중 Step 5단계에서 오류가 발생하여 Step 5단계의 다른 내용을 모두 주석 후에 marathon_2015_2017['5K'] = pd.to_timedelta(marathon_2015_2017['5K']) 이 코드만 실행해 보았는데요 그럼에도 오류가 발생합니다. 혹시나 해서 csv파일을 열어 보았는데 시간데이터 중 '-' 로 표시된 부분이 종종 있었습니다. 제 생각에는 '-'라는 문자가 있으니 null도 아니고 시간데이터도 아니다 보니 문제가 발생하는 것 같은 예감입니다. 아래에 오류 내용을 그대로 첨부하겠습니다. 도움 주시면 감사하겠습니다. --------------------------------------------------------------------------- ValueError Traceback (most recent call last) /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.array_to_timedelta64() /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.parse_timedelta_string() ValueError: symbols w/o a number During handling of the above exception, another exception occurred: ValueError Traceback (most recent call last) /var/folders/zl/7hy5k6z55zz2b286tv4bbk740000gn/T/ipykernel_48790/1493613945.py in <module> 6 7 # Convert using pandas to_timedelta method ----> 8 marathon_2015_2017['5K'] = pd.to_timedelta(marathon_2015_2017['5K']) 9 # marathon_2015_2017['10K'] = pd.to_timedelta(marathon_2015_2017['10K']) 10 # marathon_2015_2017['15K'] = pd.to_timedelta(marathon_2015_2017['15K']) /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/core/tools/timedeltas.py in to_timedelta(arg, unit, errors) 122 return arg 123 elif isinstance(arg, ABCSeries): --> 124 values = _convert_listlike(arg._values, unit=unit, errors=errors) 125 return arg._constructor(values, index=arg.index, name=arg.name) 126 elif isinstance(arg, ABCIndex): /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/core/tools/timedeltas.py in _convert_listlike(arg, unit, errors, name) 171 172 try: --> 173 td64arr = sequence_to_td64ns(arg, unit=unit, errors=errors, copy=False)[0] 174 except ValueError: 175 if errors == "ignore": /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/core/arrays/timedeltas.py in sequence_to_td64ns(data, copy, unit, errors) 989 if is_object_dtype(data.dtype) or is_string_dtype(data.dtype): 990 # no need to make a copy, need to convert if string-dtyped --> 991 data = objects_to_td64ns(data, unit=unit, errors=errors) 992 copy = False 993 /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/core/arrays/timedeltas.py in objects_to_td64ns(data, unit, errors) 1098 values = np.array(data, dtype=np.object_, copy=False) 1099 -> 1100 result = array_to_timedelta64(values, unit=unit, errors=errors) 1101 return result.view("timedelta64[ns]") 1102 /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.array_to_timedelta64() /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.array_to_timedelta64() /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.convert_to_timedelta64() /opt/homebrew/Caskroom/miniforge/base/envs/DV/lib/python3.8/site-packages/pandas/_libs/tslibs/timedeltas.pyx in pandas._libs.tslibs.timedeltas.parse_timedelta_string() ValueError: symbols w/o a number
-
해결됨파이썬 기초 라이브러리부터 쌓아가는 머신러닝
수업에서 사용되는 csv파일은 어디서 구해야 합니까?
안녕하십니까? 머신러닝에 대해서 알아보다가, 현재 강의를 신청한 사람입니다. 수업내용이 자세하고 보면서 연습할수있어서 좋은것 같습니다. 다만, 수업에서 사용되는 csv파일과 같은 자료들은 어디서 구할수 있습니까?
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
안녕하세요, loc에 관한 질문입니다.
안녕하세요, loc에 관한 질문입니다. loc['기업이름']을 하면 잘 찾아지는데... 데이터프레임을 리스트로 만들어서 loc[리스트]로 하면 에러가 나서 어떻게 수정해야 하는지 질문 드립니다 ㅠ import pandas as pd import seaborn as sns import matplotlib as mpl import matplotlib.pyplot as plt from tqdm.auto import tqdm tqdm.pandas() mpl.rc('font', family='AppleGothic') plt.rcParams['axes.unicode_minus'] = False # url = "https://finance.naver.com/sise/sise_group_detail.nhn?type=upjong&no=261" table = pd.read_html(url, encoding="cp949") raw = table[2] print(raw.shape) raw = raw.dropna(how="all").dropna(axis=1, how="all") raw["종목명_전처리"] = raw["종목명"].str.replace("*", "") raw["종목명_전처리"] = raw["종목명_전처리"].str.strip() # raw의 종목명을 index로 만들고, index를 리스트로 만들기 raw = raw.set_index('종목명_전처리') raw raw를 부르면 제약업종 데이터 프레임이 나옵니다. 아래는 제가 따로 만들어 놓은 데이터프레임을 리스트로 전환한겁니다. test = pd.DataFrame([['이수앱지스', '111', '222'], ['메드팩토','333','444'], ['부광약품','555','666']], columns = ['종목명', '매출액','영업이익']) # 종목명을 index로 바꿈 test = test.set_index('종목명') # index를 리스트로 변환 test_list = test.index.to_list() test_list 이 상태에서 raw.loc[['메드팩토']]는 되는데 test_list는 어떻게 해도 안 되네요. 어떻게 질문해야 할지 몰라서 인터넷으로도 검색을 못하겠어요 ㅋㅋㅋ큐ㅠㅠ raw.loc[['메드팩토']] raw.loc[[test_list]]
-
미해결파이썬(Python)으로 데이터 기반 주식 퀀트 투자하기 Part1
pandas.errors.ParserError: Error tokenizing data. C error: out of memory
pandas.errors.ParserError: Error tokenizing data. C error: out of memory 안녕하세요. 주식종목의 틱봉 거래 데이터를 불러오는데, 저런 알람이 뜨는데 ,, 어떤식으로 처리를 할수가 있을까요? 구글링을 하니깐 chunkisize 인가를 사용하라고 하는데, chunkisize = 10000 이렇게 하니깐 textreader 라는 알람이뜨더라구여 ,,, 제가 생각하고 있는 한가지 방안은 일정로우가 되면 그냥 잘라서 넘기는거는 생각하고 있는데,, 그외에 어떻게 할수 있을지,,, 고민이 되어 질문 드립니다. 감사합니다.
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
FinanceDataReader - ModuleNotFoundError
input 파일로 실습중입니다. !pip install -U finance-datareader(주석처리 지움)로 FinanceDataReader를 설치후 import FinanceDataReader as fdr fdr.__version__ 를 했는데 다음과 같은 오류가 나옵니다. --------------------------------------------------------------------------- ModuleNotFoundError Traceback (most recent call last) <ipython-input-3-e3a60539cbc3> in <module> 1 # FinanceDataReader 를 fdr 별칭으로 불러옵니다. 2 # 라이브러리의 version을 확인하고 싶을 때는 .__version__ 으로 확인합니다. ----> 3 import FinanceDataReader as fdr 4 fdr.__version__ ModuleNotFoundError: No module named 'FinanceDataReader' 실습환경은 macos 11.2.3입니다. pip list 첨부했으며 finance-datareader만 제가 Bold처리 했습니다. (base) imigjuucBookPro:~ ikedo$ pip list Package Version ------------------------------------------------- ------------ anaconda 0.0.1.1 appnope 0.1.2 asgiref 3.3.1 backcall 0.2.0 beautifulsoup4 4.9.3 bokeh 2.2.3 bs4 0.0.1 certifi 2020.12.5 chardet 3.0.4 colorama 0.4.4 commonmark 0.9.1 conda 4.3.16 cycler 0.10.0 DateTime 4.3 decorator 4.4.2 Django 3.1.7 django-ckeditor 6.0.0 django-crispy-forms 1.11.1 django-extensions 3.1.1 django-js-asset 1.2.2 django-markdown 0.8.4 django-markdownx 3.0.1 finance-datareader 0.9.31 gunicorn 20.0.4 httplib2 0.10.3 idna 2.6 inflect 0.2.5 ipython 7.21.0 ipython-genutils 0.2.0 jedi 0.18.0 Jinja2 2.11.2 keyboard 0.13.5 kiwisolver 1.3.1 lxml 4.6.3 Markdown 3.3.4 MarkupSafe 1.1.1 matplotlib 3.3.3 monotonic 1.5 numpy 1.19.4 oauth2client 3.0.0 packaging 20.8 pandas 1.2.4 parso 0.8.1 pexpect 4.8.0 pickleshare 0.7.5 Pillow 8.1.0 pip 21.1.2 plotly 4.14.1 prettytable 2.0.0 prompt-toolkit 3.0.16 protobuf 3.4.0 psycopg2-binary 2.8.6 ptyprocess 0.7.0 pyasn1 0.3.7 pyasn1-modules 0.1.5 pycosat 0.6.3 Pygments 2.8.0 pykrx 0.1.42 pyobjc 7.1 pyobjc-core 7.1 pyobjc-framework-Accessibility 7.1 pyobjc-framework-Accounts 7.1 pyobjc-framework-AddressBook 7.1 pyobjc-framework-AdServices 7.1 pyobjc-framework-AdSupport 7.1 pyobjc-framework-AppleScriptKit 7.1 pyobjc-framework-AppleScriptObjC 7.1 pyobjc-framework-ApplicationServices 7.1 pyobjc-framework-AppTrackingTransparency 7.1 pyobjc-framework-AuthenticationServices 7.1 pyobjc-framework-AutomaticAssessmentConfiguration 7.1 pyobjc-framework-Automator 7.1 pyobjc-framework-AVFoundation 7.1 pyobjc-framework-AVKit 7.1 pyobjc-framework-BusinessChat 7.1 pyobjc-framework-CalendarStore 7.1 pyobjc-framework-CallKit 7.1 pyobjc-framework-CFNetwork 7.1 pyobjc-framework-ClassKit 7.1 pyobjc-framework-CloudKit 7.1 pyobjc-framework-Cocoa 7.1 pyobjc-framework-Collaboration 7.1 pyobjc-framework-ColorSync 7.1 pyobjc-framework-Contacts 7.1 pyobjc-framework-ContactsUI 7.1 pyobjc-framework-CoreAudio 7.1 pyobjc-framework-CoreAudioKit 7.1 pyobjc-framework-CoreBluetooth 7.1 pyobjc-framework-CoreData 7.1 pyobjc-framework-CoreHaptics 7.1 pyobjc-framework-CoreLocation 7.1 pyobjc-framework-CoreMedia 7.1 pyobjc-framework-CoreMediaIO 7.1 pyobjc-framework-CoreMIDI 7.1 pyobjc-framework-CoreML 7.1 pyobjc-framework-CoreMotion 7.1 pyobjc-framework-CoreServices 7.1 pyobjc-framework-CoreSpotlight 7.1 pyobjc-framework-CoreText 7.1 pyobjc-framework-CoreWLAN 7.1 pyobjc-framework-CryptoTokenKit 7.1 pyobjc-framework-DeviceCheck 7.1 pyobjc-framework-DictionaryServices 7.1 pyobjc-framework-DiscRecording 7.1 pyobjc-framework-DiscRecordingUI 7.1 pyobjc-framework-DiskArbitration 7.1 pyobjc-framework-DVDPlayback 7.1 pyobjc-framework-EventKit 7.1 pyobjc-framework-ExceptionHandling 7.1 pyobjc-framework-ExecutionPolicy 7.1 pyobjc-framework-ExternalAccessory 7.1 pyobjc-framework-FileProvider 7.1 pyobjc-framework-FileProviderUI 7.1 pyobjc-framework-FinderSync 7.1 pyobjc-framework-FSEvents 7.1 pyobjc-framework-GameCenter 7.1 pyobjc-framework-GameController 7.1 pyobjc-framework-GameKit 7.1 pyobjc-framework-GameplayKit 7.1 pyobjc-framework-ImageCaptureCore 7.1 pyobjc-framework-IMServicePlugIn 7.1 pyobjc-framework-InputMethodKit 7.1 pyobjc-framework-InstallerPlugins 7.1 pyobjc-framework-InstantMessage 7.1 pyobjc-framework-Intents 7.1 pyobjc-framework-IOSurface 7.1 pyobjc-framework-iTunesLibrary 7.1 pyobjc-framework-KernelManagement 7.1 pyobjc-framework-LatentSemanticMapping 7.1 pyobjc-framework-LaunchServices 7.1 pyobjc-framework-libdispatch 7.1 pyobjc-framework-LinkPresentation 7.1 pyobjc-framework-LocalAuthentication 7.1 pyobjc-framework-MapKit 7.1 pyobjc-framework-MediaAccessibility 7.1 pyobjc-framework-MediaLibrary 7.1 pyobjc-framework-MediaPlayer 7.1 pyobjc-framework-MediaToolbox 7.1 pyobjc-framework-Metal 7.1 pyobjc-framework-MetalKit 7.1 pyobjc-framework-MetalPerformanceShaders 7.1 pyobjc-framework-MetalPerformanceShadersGraph 7.1 pyobjc-framework-MLCompute 7.1 pyobjc-framework-ModelIO 7.1 pyobjc-framework-MultipeerConnectivity 7.1 pyobjc-framework-NaturalLanguage 7.1 pyobjc-framework-NetFS 7.1 pyobjc-framework-Network 7.1 pyobjc-framework-NetworkExtension 7.1 pyobjc-framework-NotificationCenter 7.1 pyobjc-framework-OpenDirectory 7.1 pyobjc-framework-OSAKit 7.1 pyobjc-framework-OSLog 7.1 pyobjc-framework-PassKit 7.1 pyobjc-framework-PencilKit 7.1 pyobjc-framework-Photos 7.1 pyobjc-framework-PhotosUI 7.1 pyobjc-framework-PreferencePanes 7.1 pyobjc-framework-PushKit 7.1 pyobjc-framework-Quartz 7.1 pyobjc-framework-QuickLookThumbnailing 7.1 pyobjc-framework-ReplayKit 7.1 pyobjc-framework-SafariServices 7.1 pyobjc-framework-SceneKit 7.1 pyobjc-framework-ScreenSaver 7.1 pyobjc-framework-ScreenTime 7.1 pyobjc-framework-ScriptingBridge 7.1 pyobjc-framework-SearchKit 7.1 pyobjc-framework-Security 7.1 pyobjc-framework-SecurityFoundation 7.1 pyobjc-framework-SecurityInterface 7.1 pyobjc-framework-ServiceManagement 7.1 pyobjc-framework-Social 7.1 pyobjc-framework-SoundAnalysis 7.1 pyobjc-framework-Speech 7.1 pyobjc-framework-SpriteKit 7.1 pyobjc-framework-StoreKit 7.1 pyobjc-framework-SyncServices 7.1 pyobjc-framework-SystemConfiguration 7.1 pyobjc-framework-SystemExtensions 7.1 pyobjc-framework-UniformTypeIdentifiers 7.1 pyobjc-framework-UserNotifications 7.1 pyobjc-framework-UserNotificationsUI 7.1 pyobjc-framework-VideoSubscriberAccount 7.1 pyobjc-framework-VideoToolbox 7.1 pyobjc-framework-Virtualization 7.1 pyobjc-framework-Vision 7.1 pyobjc-framework-WebKit 7.1 pyparsing 2.4.7 python-dateutil 2.8.1 pytz 2021.1 PyYAML 5.3.1 requests 2.25.0 requests-file 1.5.1 retrying 1.3.3 rich 9.11.0 rsa 3.4.2 ruamel.yaml 0.16.12 scipy 1.5.4 seaborn 0.11.0 setuptools 49.2.1 simplejson 3.17.2 six 1.11.0 soupsieve 2.2 sqlparse 0.4.1 tenacity 4.4.0 tinytag 0.18.0 tornado 6.1 tqdm 4.19.2 traitlets 5.0.5 typing-extensions 3.7.4.3 Unidecode 1.0.22 urllib3 1.22 view 0.1 wcwidth 0.2.5 Werkzeug 0.12.2 xlrd 2.0.1 youtube-dl 2017.10.15.1 zope.interface 5.2.0
-
미해결파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기
[질문] 웹 크롤링으로 데이터 수집 시 데이터 병합이 안되는 문제
안녕하세요. 선생님 강의 잘 듣고 있습니다. 강의를 들으면서 책을 보고 웹 크롤링으로 데이터를 다운 받아 dataframe으로 전환 최종 엑셀로 저장하는 코드를 공부 하고 있습니다. 그런데 크롤링은 되는데 최종 엑셀 저장 파일을 보면 맨 처음 페이지만 저장 되는데요 아래 코드에서 잘못된게 있을까요? 그리고 break문을 적으면 SyntaxError: 'break' outside loop 에러가 나와 주석처리 했습니다. 제가 워낙 초보라 답변을 주실 수 있는지요? 감사합니다. # from selenium import webdriver # browser = webdriver.Chrome("/Users/maru/Downloads/chromedriver") # browser.get("https://seibro.or.kr/websquare/control.jsp?w2xPath=/IPORTAL/user/company/BIP_CNTS01042V.xml&menuNo=286#") search_btn = browser.find_element_by_id("image1") search_btn.click() html = browser.page_source from bs4 import BeautifulSoup from html_table_parser import parser_functions as parser import pandas as pd soup = BeautifulSoup(html, "html.parser") table = soup.find("table", attrs ={"id" : "grid1_body_table"}) p = parser.make2d(table) df = pd.DataFrame(p[2:], columns=p[1]) df.head() import time import random from tqdm import tqdm prev_no = 0 prev_table = None for i in tqdm(range(0,200)): try: next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() except: time.sleep(2) try: next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() except: time.sleep(2) next_btn = browser.find_element_by_id("cntsPaging01_next_btn") next_btn.click() def get_html(browser, cnt): if cnt >= 4: return -1, -1 html = browser.page_source soup = BeautifulSoup(html, "html.parser") cur_no = soup.find("a", sttrs = {"class" : "w2pageList_control_label w2pageList_label_selected"}) cur_no = cur_no.text table = soup.find("table", attrs={"id" : "grid1_body_table"}) if cur_no != prev_no and prev_table != table: return cur_no, table else: time.sleep(1) get_html(browser, cnt+1) cur_no, table = get_html(browser, 1) if cur_no == -1: print("\n종료. 테이블 정보가 바꾸지 않았습니다.") break p = parser.make2d(table) temp = pd.DataFrame(p[2:], columns=p[1]) df = pd.concat([df, temp], 0) prev_no = cur_no prev_table = html if cur_no == "95": print("\n 최종 페이지 도달") # break time.sleep(random.randrange(3, 5)) df.to_excel("stock_div.xlsx")