2024. 3. 12. 16:39ㆍ전처리/PYTHON
문제의 덩어리 형제
1. 컬럼별 빈리스트 묶음, 주소 리스트 묶음을 for문에 넣지 않으려고만 생각했던 코드이다.
2. 임시 데이터프레임을 거치지 않아 리스트에 계속~ 계속해서 데이터가 쌓인다.
3. 한번에 책정보 100개씩 10개의 컬럼을 모았고 이걸 24번 (2년) 반복한다.
4. 안그래도 코드가 거슬렸는데 문제는 1000개씩 모으고 싶을 때 발생(한 줄 알았다.)
(근데 이부분은 내가 실수했다. 내 코드를 사용해도 간단하게 2년치 200개가 가능하다.)
<K사 크롤링 때는 이렇게 했다. -임시데이터프레임 활용편->
1. K사 때를 보면 모든 컬럼에 대한 리스트를 1차로 만든다.
2. 2차로 임시 데이터프레임으로 모든 리스트를 묶어서 데이터셋을 만든다.
3. result_df에 만든 데이터프레임을 concat한다. 이과정을 1개월씩 반복!
BUT
1. 주말에 정신이 없는지 리스트를 계속 쌓으면 101개부터 잘못 쌓인다고 오해했다.
2. 임시 데이터프레임을 활용하고 싶어서 전역변수에 있던 리스트를 안으로 집어넣었다.
3. 그 과정에서 리스트 초기화가 반복되는 문제가 생겨버렸다. 아래를 보자.
4. 빈리스트, 주소리스트 두덩어리는 덩어리대로 두고 임시DF를 또 할당해야했다.
5. 급하게 만든게 문제의 덩어리가 이것이다.
1. if a == 100: 때문에 100이 되기 전에는 99번까지 돌면서 리스트를 초기화 해버린다.
2. 다시 봐도 환장하는 코드를 만들었다. 몇번 오류가 나니 생각을 달리했다.
3. 문득 왜 "사용자 정의 함수"를 쓰지 않지? 반복을 잡는덴 이거만한 게 없다는 생각이 들었다.
def find_text_list(col, url):
1. 매개인자 두 개를 동시에 부여함으로써 한 줄에 컬럼리스트, 주소리스트, 함수 실행을 동시에 할 수 있게 됐다.
2. 여전히 빈리스트 덩어리가 쓰이고, 주소리스트 덩어리 대신 임시데이터프레임 덩어리가 생겼다.
3. 하지만! if a == 100: 해괴한 조건문이 더이상 쓰이지 않는다.
4. 하지만! 리스트를 "반복문 한 번"에 "리스트 하나씩" 만들고 날아가던 때와 다르다.
5. 중요한 건 "반복문 한 번에, 리스트를 몽!땅!" 만들어서 임시DF에 넣는 것이다.
6. 중요한 건 반복문을 돌 때 리스트가 초기화/중복 오류를 없애는 것이었다.
7. 비슷한 것 끼리 묶으니 길다란 변수명 묶음이 없어져서 가독성이 좋아졌다.
8. 임시데이터프레임-concat을 쓰려면 경우의 수마다 부여해서는 안된다. 알겠지?
여전히 잘 돌아가고 있는 내 코드를 보면서 마무리 하겠다.
결과가 나와서 추가한다.
한번에 성공이다. 10년치의 더 많은 데이터를 모아보는 것도 가능하겠다.
'전처리 > PYTHON' 카테고리의 다른 글
데이터베이스 & 파이썬 도전 학습 1, 2 (0) | 2024.03.21 |
---|---|
파이썬 코드카타 : 37, 38, 39, 40번🥹🥳 (0) | 2024.03.14 |
파이썬 코드카타 36번 : isdecimal (0) | 2024.03.04 |
파이썬 코드카타 31~35번 : 문제 없음! (0) | 2024.03.01 |
파이썬 코드카타 26, 27, 28, 29, 30번 (0) | 2024.02.21 |