2024. 3. 11. 00:06ㆍ회고/TIL(매일)
✏️도전한 점
1. 데이터 수집하고 또 더 많이 수집하기
2. time.sleep을 적시적소에 사용하기
3. 데이터 전처리하고 또 전처리 하기
01 create view와 CTE의 차이점은?
- 쉬프트 엔터(실행)를 누르는 순간 with문은 사라진다.
- create veiw는 테이블을 만드는데 중간단계, 가상 테이블이라고 생각한다.
- 이번엔 사용할 건데 다음엔 모르겠어~라는 의미와 상통한다.
- 데이터 너무 많을 때 중간에 한 번 뭐 만드는 단계로 유용하다.
- 가상의 테이블이니까 "보안" 이슈에 매우 큰 강점이 있다.
- 대신 뷰는 데이터를 갱신하고 삽입하는데 어려움이 있을 수 있다.
- 실무에서는 쿼리의 최적화 고려해서 저절로 뷰를 많이 쓰게 될거다.
- 같은 결과물이라도 짠 쿼리 길이가 다를 수 있다.
- 나중엔 자연히 쿼리 최적화 작업을 하게 될 거다.
- ex) distinct문이 오래 걸릴 수 있다. 나중에 가서 두 번 이상은 또 고민할 듯!!
02 문제 해결: 어떻게 하면 노가다를 덜 할까?
# 아 이거 왜 안잡혀ㅠㅠ > 예외처리 구문으로 해결!
for i in review_cnt:
if i == nan:
# SQL처럼 '분철%'는 안되네;
try:
if '#' not in i:
i = nan
print(i)
- 크롤링 자체를 예쁘게 그리는 대시보드
- 베스트셀러가 한눈에 보이는 대시보드
- 베셑 현황, 루키, 루키현황 의사결정트리 (3장)
- 루키 찾기 : 생각한 4~5개 기준의 루키찾기
- 하고 싶은 방향을 설정하고 도와주세요로 상담
- 태블로 퍼블릭 대시보드 참고하기
# 문자열 쪼개는 방법
yest24_review_split[1]
.str.split(')', expand=True)
expand=True 매개변수는 결과를 데이터프레임으로 반환하도록 지정한다.
# 결측치 처리 방법
‘’ 또는 None로 처리하기
data[data[‘review’].isna()]
data[‘review’].isna()
data[‘review’][data[‘review’].isna()] = ‘없는 리뷰’
- 루키가 될 확률 수치로 (도전!)
- 100위 안에든 키워드만 카운트 (도전!)
- 교보 키워드 pick, 예스 2년치 키워드, 알라딘 세부분류 2년 (도전!)
# 전역 변수를 잘 사용하는 방법
for i in range(1, 13):
print(globals()[f"df_{i}"].shape)
# inplace=True는 데이터프레임을 직접 수정하는 데 사용되는 매개변수이다.
df_1.set_index('date', inplace=True)
file_path = "C:\\First-sean-project\\toy_kyobo_1year\\2024-02.xlsx"
df_1 = pd.read_excel(file_path, engine='openpyxl')
df_1['date'] = '2024-02'
df_1.rename(columns={'순위': 'ranking'}, inplace=True)
df_1 = df_1[['date', 'ranking', 'title', 'writer', 'press', 'category']]
# str find 문자열 함수 사용해서 찾기 (소현 튜터님)
# find 예제 (소현 튜터님)
print("3. str.find('찾을 문자', 시작 index, 끝 index)")
result7 = str.find('o')
result8 = str.find('o', 5, 11) # "DMask B"
# 소현튜터님 SQLD 반짝 정리
1. 본인이 짠 쿼리를 잘 확인할 수 있는 것은 "left join"이다.
2. case when 가장 첫번째 조건이 필터의 기준이기에 남은 애들을 기준으로 연산된다.
3. from > where > group by > having > select > order by 작동순서
# replace 사용해보기
book2 = book.copy()
book2['category'] =book2['category'].str.replace('국내도서-', '')
book2['category'].unique()
- 소셜 미디어에서 언급 횟수를 크롤링하는 것
1. api사용 2. 웹 스크래이핑 (배워보고 싶다.)
크롤링할 때 들어가서 크롤링하고 다시 나오는 걸 쉽게 하는 방법
- back을 치면 다시 나올 수 있는데 다시 제목이 안눌리는 구나?
- 저자에서 저자 이름만 남기는 방법 : repalce()
# 데이터프레임 전치
result_df = pd.DataFrame(col_list, index = url_name).T
# 정규 표현식 복습하기
pattern5 = r'\([^\)]+\s블랙에디션\)'
t2['Title'] = t2['Title'].str.replace(pattern5, '', regex=True)
pattern6 = r'\([^)]*\)'
t2['Title'] = t2['Title'].str.replace(pattern6, '', regex=True)
- 마지막 코드는 예외처리로 바꿀 수 있나? : 4년치 하면서 해봄.
- 저기에 람다를 쓰는 이유는? 람다도 함수식이기 때문이다.
# 이건 왜 되지? 데이터의 길이가 맞지 않아서 생긴 문제로 보인다.
ml_Data['Y'] = ml_Data['ranking'].apply(lambda x: x[1])
ml_Data['last_rank'] = ml_Data['ranking'].apply(lambda x: x[0])
'회고 > TIL(매일)' 카테고리의 다른 글
TIL 84일차 : 회고, 발표회 (화요일) (0) | 2024.03.12 |
---|---|
TIL 83일차 : 랜덤포레스트 실습, 허투루 배운 건 없다! (0) | 2024.03.11 |
TIL 81일차 : SQLD 시험, 사용자 정의 함수의 중요성 (0) | 2024.03.10 |
TIL 80일차 : 데이터 취합, SQLD 결전의 날 (0) | 2024.03.08 |
TIL 79일차 : 판다스 3장 2회독, 전치 깨달음 (0) | 2024.03.07 |