inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

묻고 답해요

173만명의 커뮤니티!! 함께 토론해봐요.

불용어 처리 관련 질문드립니다.

미해결

빅데이터/텍스트마이닝 분석법 (LDA,BERTtopic,감성분석,CONCOR with ChatGPT)

안녕하세요 LDA 분석하는 강의에서 데이터의 특수문자나 외자 등 불용어들이 깔끔하게 정리가 안되서 불용어 제거하는 팁을 보여주셨었잖아요. df['title_contents']=df['title_contents'].str.replace(pat="는",repl="") 이 과정을 데이터 전처리 단계에서 형태소 추출하는 단계에서도 적용할 수 있는 것 같아서 아래와 같이 해보았는데 에러 메세지가 떠서 .. 어떤 부분이 문제인지 좀 여쭤보고 싶습니다. 도움 부탁드립니다. 감사합니다.

  • 빅데이터
  • 텍스트마이닝
우아한 북극곰 댓글 1 좋아요 0 조회수 345

톰캣에 배포 후 test가 안떠요

미해결

스프링 부트 - 핵심 원리와 활용

[질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (아니오) [질문 내용] 톰캣에 배포 후 test가 안떠요 index.html은 이렇게 뜨는데 /test했너니 404가 떠요 코드에서 오류가 있는걸까요..?

  • spring
  • spring-boot
  • prometheus
  • grafana
999kse 댓글 3 좋아요 0 조회수 427

@Bean과 컴포넌트 스캔 차이에 대해

미해결

스프링 입문 - 코드로 배우는 스프링 부트, 웹 MVC, DB 접근 기술

학습하는 분들께 도움이 되고, 더 좋은 답변을 드릴 수 있도록 질문전에 다음을 꼭 확인해주세요. 1. 강의 내용과 관련된 질문을 남겨주세요. 2. 인프런의 질문 게시판과 자주 하는 질문(링크)을 먼저 확인해주세요. (자주 하는 질문 링크: https://bit.ly/3fX6ygx) 3. 질문 잘하기 메뉴얼(링크)을 먼저 읽어주세요. (질문 잘하기 메뉴얼 링크: https://bit.ly/2UfeqCG) 질문 시에는 위 내용은 삭제하고 다음 내용을 남겨주세요. ========================================= [질문 템플릿] 1. 강의 내용과 관련된 질문인가요? (예/아니오) 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? (예/아니오) 3. 질문 잘하기 메뉴얼을 읽어보셨나요? (예/아니오) [질문 내용] 1. 강의 내용과 관련된 질문인가요? 네 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? 네 3. 질문 잘하기 메뉴얼을 읽어보셨나요? 네 SpringConfig 클래스에 bean 주입하고 관리하면 추상화의 장점을 살릴 수 있다고 하면 Service단이나 repository 단에 @Service와 @Repository로 컴포넌트 스캔을 하는 것보다 SpringConfig 클래스에서 @Bean으로 클래스들 관리하는게 더 좋은가요?? 실무에서는 @Bean을 통해서 스프링 빈에 직접 주입하고 관리하나요?

  • java
  • spring
  • mvc
  • spring-boot
김민준 댓글 1 좋아요 0 조회수 396

현업에서도 TDD를 적극 활용하시는지 궁금합니다.

미해결

Practical Testing: 실용적인 테스트 가이드

우빈님 강의에서 말씀해주신 것 처럼 TDD를 활용하면 테스트 코드를 먼저 작성하기 때문에 테스트에 대한 강제(?)할 수 있으며, 엣지 케이스에 대한 식별을 빨리 할 수 있어 많은 장점이 있다고 생각합니다. 제가 생각했을 때는 TDD를 활용하지 못하는 상황은 시간적 여유가 없을 때라고 생각되는데 이 외 다른 이유도 있을까요? 또한, 우빈님께선 평소 TDD를 활용하여 프로덕션 코드를 작성하는지도 궁금합니다.(개발 기간이 부족할 때도 테스트 코드를 무조건 작성하는지도 궁금합니다 😀 )

  • spring
  • tdd
  • jpa
  • mockito
  • 소프트웨어-테스트
  • junit5
멍청한청년 댓글 2 좋아요 0 조회수 868

ksqldb timestamp 타입 질문

미해결

카프카 완벽 가이드 - ksqlDB

안녕하세요, ksqldb에는 RDBMS와 달리 datetime 타입이 따로 없는 것 같은데요, timestamp 타입은 타임존이 반영된 타입인건가요?

  • kafka
  • 데이터-엔지니어링
  • ksqldb
이무 댓글 1 좋아요 0 조회수 268

npm run dev 실행 시 에러 발생

미해결

AWS 배포 완벽가이드 (feat. Lightsail, Docker, ECS)

'Express App 받아서 준비하기' 강의 내 강의자료(프로젝트 파일)을 다운받아서 .env 파일에 PORT, REDIS_URL 값만 설정해주고 바로 npm rum dev를 실행시켰는데 계속 저런 오류가 발생하네요... node.js를 전혀 모르다보니... 어떤식으로 트러블슈팅을 해야하는지 감이안잡혀서 질문 남깁니다ㅠ

  • aws
  • docker
  • ci/cd
  • aws-ecs
왕왕 댓글 2 좋아요 0 조회수 468

Taints 와 Tolerations 관련 질문

미해결

그림으로 배우는 쿠버네티스(v1.35)

질문 답변을 제공하지만, 강의 비용에는 Q&A는 포함되어 있지 않습니다. 다만 실습이 안되거나, 잘못된 내용의 경우는 알려주시면 가능한 빠르게 조치하겠습니다! [질문 전 답변] 1. 강의에서 다룬 내용과 관련된 질문인가요? [예 ] 2. 인프런의 질문 게시판과 자주 하는 질문에 없는 내용인가요? [예 ] 3. 질문 잘하기 법을 읽어보셨나요? [예] (https://www.inflearn.com/blogs/1719) 4. 잠깐! 인프런 서비스 운영 관련 문의는 1:1 문의하기를 이용해주세요. 5. vagrant up 에서 발생하는 문제는 주로 호스트 시스템(Windows, MacOS)과 연관된 다양한 조건에 의해 발생합니다. 따라서 이를 모두 제가 파악할 수 없어서 해결이 어렵습니다. vagrant up 으로 진행이 어렵다면 제공해 드리는 가상 머신(VM) 이미지를 import해서 진행하시기 바랍니다. ( https://www.inflearn.com/questions/992407/comment/281901 ) 6. ARM 계열의 m1 , m2 계열은 VirtualBox를 통한 구성이 원할하지 않고, 실습 환경의 다변화는 추후 대처하기 어려워서 현재 과정에서는 지원하지 않습니다. ( https://www.inflearn.com/questions/915529 ) [질문 하기] Taints 와 Tolerations 관련하여 Control plane 에 tolerations이 없는 상태로 Nodename 을 controlplane으로 설정하니 배포가 되는 것으로 보여지는데요. Nodename이 taints와 우선 순위가 어떻게 되는 걸까요?

  • docker
  • kubernetes
무명 댓글 2 좋아요 0 조회수 332

Android java Cannot resolve symbol 'content' 에러

미해결

자꾸 에러가 뜨는데 구글링을 한참을 해도 못 찾았어요 ㅠㅠ 아시는 분 있나요? mainactivity //import android.support.v4.content.LocalBroadcastManager; import androidx.localbroadcastmanager.content.LocalBroadcastManager; 이 부분이 문제라네요. buiild.gradle apply plugin: 'com.android.application' android { compileSdkVersion 30 buildToolsVersion "23.0.3" defaultConfig { applicationId "com.nordicsemi.nrfUARTv2" minSdkVersion 18 targetSdkVersion 30 } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt' } } } dependencies { compile 'androidx.legacy:legacy-support-v4:1.0.0' // implementation 'androidx.localbroadcastmanager:localbroadcastmanager:1.0.0' // }

혁진 댓글 1 좋아요 0 조회수 444

학습이 이상하게 됩니다.

미해결

딥러닝 CNN 완벽 가이드 - TFKeras 버전

당장 문의드리는 것은 CIFAR10_Pretained이지만 다른 예제를 실행해도 같은 에러가 납니다. tr_data_len = tr_images.shape[0] val_data_len = val_images.shape[0] history = vgg_model.fit(flow_tr_gen, epochs=40, steps_per_epoch=int(np.ceil(tr_data_len/BATCH_SIZE)), validation_data=flow_val_gen, validation_steps=int(np.ceil(val_data_len/BATCH_SIZE)), callbacks=[rlr_cb, ely_cb]) ) 이 셀을 실행시키면, 이런 식으로 홀수만 학습이 되고 짝수는 학습이 안 됩니다. 이 학습시킨 것을 그래프로 나타내면 0이 되었다가 정상적으로 되었다가 반복을 하네요. 예전에 예제를 실행시켰을때는 이런 오류가 없었는데 버전이 업데이트되면서 안되는것 같습니다. Adam 함수에 매개변수 lr=을 입력할 때도 에러가 나서 learning_rate=로 변경해야하는 식으로 자잘한 문제도 있습니다. 많은 예제에서 같은 오류가 나는 것을 보아 업데이트된 캐글 커널 버전에 맞춰서 코드를 전체적으로 수정하셔야할 필요가 있을것 같습니다. 감사합니다. Epoch 1/40 /opt/conda/lib/python3.10/site-packages/keras/src/trainers/data_adapters/py_dataset_adapter.py:122: UserWarning: Your `PyDataset` class should call `super().__init__(**kwargs)` in its constructor. `**kwargs` can include `workers`, `use_multiprocessing`, `max_queue_size`. Do not pass these arguments to `fit()`, as they will be ignored. self._warn_if_super_not_called() 10/665 ━━━━━━━━━━━━━━━━━━━━ 12s 19ms/step - accuracy: 0.0987 - loss: 3.5617 WARNING: All log messages before absl::InitializeLog() is called are written to STDERR I0000 00:00:1709598886.339819 103 device_compiler.h:186] Compiled cluster using XLA! This line is logged at most once for the lifetime of the process. 665/665 ━━━━━━━━━━━━━━━━━━━━ 31s 30ms/step - accuracy: 0.1981 - loss: 2.1133 - val_accuracy: 0.4116 - val_loss: 1.5764 Epoch 2/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 28us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 3/40 7/665 ━━━━━━━━━━━━━━━━━━━━ 12s 18ms/step - accuracy: 0.4141 - loss: 1.5560 /opt/conda/lib/python3.10/contextlib.py:153: UserWarning: Your input ran out of data; interrupting training. Make sure that your dataset or generator can generate at least `steps_per_epoch * epochs` batches. You may need to use the `.repeat()` function when building your dataset. self.gen.throw(typ, value, traceback) 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.4451 - loss: 1.4449 - val_accuracy: 0.5769 - val_loss: 1.2619 Epoch 4/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 5/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.5782 - loss: 1.1673 - val_accuracy: 0.5975 - val_loss: 1.1887 Epoch 6/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 17us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 7/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.6474 - loss: 1.0090 - val_accuracy: 0.6819 - val_loss: 1.1508 Epoch 8/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 17us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 9/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.6889 - loss: 0.8978 - val_accuracy: 0.6689 - val_loss: 1.2804 Epoch 10/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 11/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.7189 - loss: 0.8345 - val_accuracy: 0.7216 - val_loss: 1.0568 Epoch 12/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 17us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 13/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.7289 - loss: 0.8169 - val_accuracy: 0.7328 - val_loss: 1.3400 Epoch 14/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 17us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 15/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.7646 - loss: 0.7047 - val_accuracy: 0.6892 - val_loss: 1.1569 Epoch 16/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 17/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.7645 - loss: 0.7083 - val_accuracy: 0.7511 - val_loss: 0.9342 Epoch 18/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 19/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.7857 - loss: 0.6478 - val_accuracy: 0.7740 - val_loss: 0.9626 Epoch 20/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 21/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.8012 - loss: 0.6048 - val_accuracy: 0.7763 - val_loss: 0.7990 Epoch 22/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 23/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.8056 - loss: 0.5998 - val_accuracy: 0.7719 - val_loss: 0.8663 Epoch 24/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 25/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.8196 - loss: 0.5483 - val_accuracy: 0.7731 - val_loss: 0.8920 Epoch 26/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 27/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 13s 19ms/step - accuracy: 0.8313 - loss: 0.5199 - val_accuracy: 0.7960 - val_loss: 0.8204 Epoch 28/40 665/665 ━━━━━━━━━━━━━━━━━━━━ 0s 16us/step - accuracy: 0.0000e+00 - loss: 0.0000e+00 - val_accuracy: 0.0000e+00 - val_loss: 0.0000e+00 Epoch 29/40

  • 머신러닝
  • 딥러닝
  • keras
  • tensorflow
  • kaggle
  • cnn
수빈 댓글 2 좋아요 2 조회수 1080

네이비티브 시스템 활성화

해결됨

디자인 시스템 with 피그마

새로운 파일에서 Tokens Studio for Figma 플러그인으로 제이슨 파일, 깃허브로 데이터값을 불러오는 것까지는 완성하였습니다. 그 이후 Create styles로 오른쪽 네이티브 시스템을 생성하려고 하는데 안된다고 창이 뜹니다.

  • figma
  • figma-tokens
  • 디자인-시스템
  • 아토믹-디자인
박이슬 댓글 1 좋아요 1 조회수 216

다른 곳에서도 강의 하고 계신지 궁금합니다.

해결됨

디자인 시스템 with 피그마

다른 곳에서도 강의 하고 계신지 궁금합니다. 다른 강의 하고 계시면 또 들어보고 싶어서요

  • figma
  • figma-tokens
  • 디자인-시스템
  • 아토믹-디자인
박이슬 댓글 1 좋아요 1 조회수 278

IntelliJ IDEA 문의

미해결

코틀린 문법부터 실무까지 (실전 자바->코틀린 변환)

안녕하세요. 강의전 IntelliJ IDEA Ultimate 학생 라이센스 가능하다고 해서 수강신청을 하게 되었는데요. 해당 툴에 대한 설치 가이드가 보이지 않습니다. 학생신분이 아니기에 웹메일 인증이 어려울꺼 같은데요. 무료라이센스 사용가능한 방법을 알려주시면 감사하겠습니다.

  • java
  • spring
  • kotlin
  • spring-boot
  • 객체지향
jheom 댓글 1 좋아요 1 조회수 291

영한님께서 버전을 올려가며 가르쳐주시는데

미해결

스프링 MVC 2편 - 백엔드 웹 개발 활용 기술

그 버전들을 모두 꿰뚫고 있어야 할까요, 이런 과정이 있었다 정도로만 알고있으면 될까요? 어느정도의 학습이 필요할지 궁금합니다.

  • spring
  • mvc
왕이될상인가 댓글 1 좋아요 0 조회수 216

page.module.css

미해결

Next + React Query로 SNS 서비스 만들기

안녕하세요! 강의 잘 듣고 있습니다. module이 붙어있으면 각 페이지에서 쓰는 left, right를 구별해준다고 하셨는데 page.module.css 가 app 폴더 안에 있어서 전부 다 적용이 되고 있는데 만약 login파일에서 left를 쓰고 signup파일에서도 다른 css를 적용하는 left를 쓰고 싶다면 이 둘은 어떻게 구분을 하나요? page.module.css에 left를 두번 작성하나요..?

  • next.js
도로롱 댓글 1 좋아요 0 조회수 293

Oracle을 연결하고 싶은데, sql파일을 만들고나면...

미해결

스프링 프레임워크는 내 손에 [스프1탄]

Oracle을 연결하고 싶은데, sql파일을 만들고나면... 상단창에 Type을 Oracle로 지정해도 Name과 Database가 뜨지 않습니다. lib 폴더 만들어서 ojdbc6.jar 드라이버도 넣어 놨고, tnsnames.ora에 XE = (DESCRIPTION = (ADDRESS = (PROTOCOL = TCP) (HOST = 127.0.0.1) (PORT = 1521) ) (CONNECT_DATA = (SERVER = dedicated) (SERVICE_NAME = orcl) ) ) 도 추가해두었습니다. pom.xml에는 다음과 같이 dependency도 추가하였습니다. <!-- Servlet --> <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> <version>3.1.0</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet.jsp</groupId> <artifactId>javax.servlet.jsp-api</artifactId> <version>2.3.1</version> <scope>provided</scope> </dependency> <dependency> <groupId>javax.servlet</groupId> <artifactId>jstl</artifactId> <version>1.2</version> </dependency> <dependency> <groupId>org.springframework</groupId> <artifactId>spring-jdbc</artifactId> <version>5.0.2.RELEASE</version> </dependency> <dependency> <groupId>com.zaxxer</groupId> <artifactId>HikariCP</artifactId> <version>3.4.1</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis</artifactId> <version>3.4.6</version> </dependency> <dependency> <groupId>org.mybatis</groupId> <artifactId>mybatis-spring</artifactId> <version>1.3.2</version> </dependency> 뭐가 문제일까요 선생님?

  • jsp
  • spring
  • mvc
  • spring-security
이영준 댓글 1 좋아요 0 조회수 313

이것도 로직이 바뀐 것 같아요.

미해결

블로그 자동화 프로그램 개발 강의 (파이썬 + 셀레니움)

안녕하세요. 로직이 바뀐 것 같아서요. 확인 부탁드립니다 ~ 그리고 최종 코드보면 새그룹을 만드는게 프로그램 시작되면 로긴 후 바로 새그룹을 만들고 시작을 하더라고요. 서이추를 하던중에 그룹인원이 꽉차면 만든다고 강의에서 본 것 같거든요~ 로긴 후 바로 새그룹을 만들고 서이추가 시작되니까 프로그램 시작할 때 마다 새그룹이 생겨서 빈 새그룹만 수십개가 되어버리고 있어요.

  • python
  • selenium
마루 댓글 3 좋아요 0 조회수 766

리스트뷰 보는중에..

해결됨

[왕초보편] 앱 8개를 만들면서 배우는 안드로이드 코틀린(Android Kotlin)

어찌해야할지 잘몰라서 일단 올려봅니다ㅠ ㅠ

  • android
  • kotlin
  • firebase
codinggogo 댓글 3 좋아요 1 조회수 971

todos 질문입니다.

미해결

프로젝트로 배우는 Vue.js 3

todos 에 내용이 없을 때 화면에 []이 표시됐었는데, 마지막에 내용을 지워도 화면에 []이 표시되지 않네요?? 어떤 로직때문에 화면에 todos가 없어도 []가 표시되지 않는걸까요?

  • vue.js
  • 웹앱
  • vuex
댓글 2 좋아요 0 조회수 324

Reindexing only valid with uniquely valued Index objects 오류 질문입니다.

미해결

파이썬 증권 데이터 수집과 분석으로 신호와 소음 찾기

import time import pandas as pd def get_item_info(item_code): item_url = f' https://finance.naver.com/item/main.naver?code={item_code} ' tables = pd.read _html(item_url, encoding='cp949') # if len(tables) == 13: # 코넥스를 거르기 위해 추가함 # continue item_info = [] # 빈 리스트 생성 finance_info = tables[3].iloc[:,[0,-2]] finance_info.columns = [0,1] # 합치기 전 칼럼명 일치시켜주기 item_info.append(finance_info) for t in tables: if t.shape[1] == 2: item_info.append(t) df_item = pd.concat(item_info) df_item = df_item.set_index(0).T time.sleep(0.2) # 과부하 막기 위한 지연 조회, 최소 0.1 이상. return df_item import numpy as np import seaborn as sns import matplotlib.pyplot as plt # 한글폰트 위함 import datetime plt.style .use("seaborn-v0_8-talk") font_family = "Malgun Gothic" plt.rc("font", family = font_family) plt.rc("axes", unicode_minus=False) url = ' https://finance.naver.com/sise/sise_group_detail.naver?type=upjong&no=282 ' table = pd.read _html(url, encoding='cp949') raw = table[2] raw = raw.dropna(how='all').dropna(axis=1, how='all') #추가해서 칼럼도 모두 결측치시 삭제. today = datetime.datetime.today () today = today.strftime('%y%m%d') raw['종목명전처리'] = raw['종목명'].str.replace('*','', regex=True) # 문자치환 raw['종목명전처리'] = raw['종목명전처리'].str.strip() # 앞뒤 공백 제거 import FinanceDataReader as fdr df_krx = fdr.StockListing('KRX') # print(df_krx[['Code','Name']]) df_item_code_name = df_krx[['Code','Name']] # 위의 종목명_전처리 칼럼과 Name 칼럼을 연결지어서 코드 잡아준다. df_item_code_name.columns = ['종목코드', '종목명전처리'] raw = raw.merge(df_item_code_name) # 강의에서 df에 해당함 # progress_apply는 map의 사용방법을 되짚어보면서 봐라. 일괄적으로 함수 적용시 사용. # 진행사항을 보려면 progress_apply을 사용하면 된다. from tqdm.auto import tqdm tqdm.pandas() result = raw['종목코드'].progress_apply(get_item_info) # result로 받아서 데이터프레임 형식으로 concat 해줘야해서 tolist() 사용함 df_item_info = pd.concat(result.tolist()) # print(df_item_info['종목코드']) # 출력해보면 종목코드가 없다. 그래서 넣기 # df_item_info['종목코드'] = raw['종목코드'] # 아래의 reset_index를 위해 비활성화함 # print(df_item_info['종목코드']) # 위에서 index값이 1로 모두 같아 종목코드가 모두 동일 하므로 아래처럼 인덱스 다시 적용 df_item_info = df_item_info.reset_index() df_item_info['종목코드'] = raw['종목코드'] # print(df_item_info['종목코드']) # 위와 같이 작업 후 index라는 칼럼을 삭제해 준다. del df_item_info['index'] # print(raw.shape) df_info = raw.merge(df_item_info) # 따로 지정 안해줘도 종목코드가 같기에 합쳐진다. # 파일명 만들기 file_name_1 = url.split('=')[1].replace('&','_') file_name_2 = url.split('=')[2] file_name = f'{file_name_1}_{file_name_2}.csv' # 저장하기 df_ info.to _csv(file_name, index=False, encoding='cp949') 위와 같이 코드를 작성하고 실행 했는데요. 제목과 같은 오류가 발생 했습니다. 원인을 찾아 본 결과. 코넥스 종목이 포함되어 있어서 칼럼명이 맞지 않아 발생하는 것으로 보입니다. 위의 이미지와 같이 코넥스 종목은 코스닥, 코스피 종목 처럼 table 개수 13개 보다 적게 나오므로 if문으로 table개수가 13개 이하이면 건너띄어 데이터를 받게 하면 오류가 발생하지 않을 것 같은데요. if 문을 함수 어느 위치에 넣으면 좋을지 모르겠어서 질문 드립니다. 어느 위치에 if문을 넣어서 해결하면 좋을까요?

  • python
  • pandas
  • numpy
  • 웹-크롤링
  • seaborn
  • plotly
  • matplotlib
  • 웹-스크래핑
moonchoh 댓글 1 좋아요 0 조회수 533

sqlalchemy.create_engine으로 생성한 객체에 cursor가 없습니다.

미해결

Airflow 마스터 클래스

전체 에러 로그: 8fbc4f9f281a *** Found local files: *** * /opt/airflow/logs/dag_id=dags_python_with_custom_hook_bulk_load/run_id=manual__2024-03-06T03:55:34.102649+00:00/task_id=insrt_postgres/attempt=1.log [2024-03-06T03:55:35.452+0000] {taskinstance.py:1979} INFO - Dependencies all met for dep_context=non-requeueable deps ti=<TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [queued]> [2024-03-06T03:55:35.456+0000] {taskinstance.py:1979} INFO - Dependencies all met for dep_context=requeueable deps ti=<TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [queued]> [2024-03-06T03:55:35.456+0000] {taskinstance.py:2193} INFO - Starting attempt 1 of 1 [2024-03-06T03:55:35.464+0000] {taskinstance.py:2214} INFO - Executing <Task(PythonOperator): insrt_postgres> on 2024-03-06 03:55:34.102649+00:00 [2024-03-06T03:55:35.469+0000] {standard_task_runner.py:60} INFO - Started process 262 to run task [2024-03-06T03:55:35.471+0000] {standard_task_runner.py:87} INFO - Running: ['***', 'tasks', 'run', 'dags_python_with_custom_hook_bulk_load', 'insrt_postgres', 'manual__2024-03-06T03:55:34.102649+00:00', '--job-id', '620', '--raw', '--subdir', 'DAGS_FOLDER/dags_python_with custom_hook_bulk_load.py', '--cfg-path', '/tmp/tmp0zav_1t7'] [2024-03-06T03:55:35.472+0000] {standard_task_runner.py:88} INFO - Job 620: Subtask insrt_postgres [2024-03-06T03:55:35.504+0000] {task_command.py:423} INFO - Running <TaskInstance: dags_python_with_custom_hook_bulk_load.insrt_postgres manual__2024-03-06T03:55:34.102649+00:00 [running]> on host 8fbc4f9f281a [2024-03-06T03:55:35.555+0000] {taskinstance.py:2510} INFO - Exporting env vars: AIRFLOW_CTX_DAG_OWNER='***' AIRFLOW_CTX_DAG_ID='dags_python_with_custom_hook_bulk_load' AIRFLOW_CTX_TASK_ID='insrt_postgres' AIRFLOW_CTX_EXECUTION_DATE='2024-03-06T03:55:34.102649+00:00' AIRFLOW_CTX_TRY_NUMBER='1' AIRFLOW_CTX_DAG_RUN_ID='manual__2024-03-06T03:55:34.102649+00:00' [2024-03-06T03:55:35.556+0000] {custom_postgres_hook.py:24} INFO - 적재 대상 파일: /opt/***/files/TbCorona19CountStatus/20240306/TbCorona19CountStatus.csv [2024-03-06T03:55:35.556+0000] {custom_postgres_hook.py:25} INFO - 테이블 :TbCorona19CountStatus_bulk2 [2024-03-06T03:55:35.562+0000] {base.py:83} INFO - Using connection ID 'conn-db-postgres-custom' for task execution. [2024-03-06T03:55:35.582+0000] {custom_postgres_hook.py:34} INFO - TbCorona19CountStatus_bulk2.S_DT: 개행문자 제거 [2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:34} INFO - TbCorona19CountStatus_bulk2.T_DT: 개행문자 제거 [2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:38} INFO - 적재 건수:1212 [2024-03-06T03:55:35.583+0000] {custom_postgres_hook.py:40} INFO - postgresql://***:***@172.28.0.3/*** [2024-03-06T03:55:35.587+0000] {warnings.py:110} WARNING - /opt/***/plugins/hooks/custom_postgres_hook.py:43: UserWarning: pandas only supports SQLAlchemy connectable (engine/connection) or database string URI or sqlite3 DBAPI2 connection. Other DBAPI2 objects are not tested. Please consider using SQLAlchemy. file_df.to_sql(name = table_name, [2024-03-06T03:55:35.589+0000] {taskinstance.py:2728} ERROR - Task failed with exception Traceback (most recent call last): File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/taskinstance.py", line 444, in execute task result = execute callable(context=context, **execute_callable_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/models/taskinstance.py", line 414, in execute callable return execute_callable(context=context, **execute_callable_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/operators/python.py", line 200, in execute return_value = self.execute_callable() ^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/airflow/operators/python.py", line 217, in execute_callable return self.python_callable(*self.op_args, **self.op_kwargs) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/opt/airflow/dags/dags_python_with custom_hook_bulk_load.py", line 14, in insrt_postgres custom_postgres_hook.bulk_load(table_name=tbl_nm, file_name=file_nm, delimiter=',', File "/opt/airflow/plugins/hooks/custom_postgres_hook.py", line 43, in bulk_load file_df.to_sql(name = table_name, File "/home/airflow/.local/lib/python3.11/site-packages/pandas/util/_decorators.py", line 333, in wrapper return func(*args, **kwargs) ^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/core/generic.py", line 3084, in to_sql return sql.to_sql( ^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 842, in to_sql return pandas_sql.to_sql( ^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2848, in to_sql table.create() File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 984, in create if self.exists(): ^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 970, in exists return self.pd_sql.has_table(self.name, self.schema) ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2863, in has_table return len(self.execute(query, [name]).fetchall()) > 0 ^^^^^^^^^^^^^^^^^^^^^^^^^^^ File "/home/airflow/.local/lib/python3.11/site-packages/pandas/io/sql.py", line 2670, in execute cur = self.con.cursor() ^^^^^^^^^^^^^^^ AttributeError: 'Engine' object has no attribute 'cursor' [2024-03-06T03:55:35.597+0000] {taskinstance.py:1149} INFO - Marking task as FAILED. dag_id=dags_python_with_custom_hook_bulk_load, task_id=insrt_postgres, execution_date=20240306T035534, start_date=20240306T035535, end_date=20240306T035535 [2024-03-06T03:55:35.605+0000] {standard_task_runner.py:107} ERROR - Failed to execute job 620 for task insrt_postgres ('Engine' object has no attribute 'cursor'; 262) [2024-03-06T03:55:35.643+0000] {local_task_job_runner.py:234} INFO - Task exited with return code 1 [2024-03-06T03:55:35.655+0000] {taskinstance.py:3309} INFO - 0 downstream tasks scheduled from follow-on schedule check 결과로 cursor가 attribute로 없다는 오류가 발생합니다. 기존에 있던 이후 글은 글자수 제한으로 삭제합니다.

  • python
  • 데이터-엔지니어링
  • airflow
김유민 댓글 3 좋아요 0 조회수 4169

인기 태그

인프런 TOP Writers

주간 인기글