DB

· DB
Pandas 1) 특정 컬럼에서 특정 값을 가지는 행을 전체적으로 골라서 삭제하고 싶을때 데이터프레임명.drop(조건).index inplace = True 로 하면 원본 데이터프레임에 삭제가 반영됨 df.drop(df[df["에너지원별(1)"] == "합계"].index , inplace=True) ▶ 에너지원별(1)의 컬럼에서 합계인 부분의 행 전체 삭제 2) 특정 행의 값을 기준으로 백분율 값 구하기 연도별로 각각의 합계에 대한 에너지원의 백분율을 구하고자한다. df_en_tot = df_en.groupby("연도")["발전량(GWh)"].sum().reset_index() df_merged = pd.merge(df_en, df_en_tot, on='연도', suffixes=('', '_total'..
· DB
1. 데이터 프레임 행단위 / 열단위로 합치기 임시 데이터를 먼저 생성하여 행단위 열단위로 합치는 방법에 대해 알아보겠다. import pandas as pd ## 임시 데이터 생성 data = [["Dog" , 3],["Cat",5],["Tiger",2]] index = [0,1,2] columns = ["동물","나이"] df_temp1 = pd.DataFrame(data , index = index , columns = columns) ## 임시 데이터 생성 data = [["집" , 0],["초원",0],["초원",1]] index = [0,1,2] columns = ["사는곳","뿔의개수"] df_temp2 = pd.DataFrame(data , index = index , columns = c..
· DB
이전 내용과 이어집니다. 이전 내용이 궁금하시다면 클릭 해주세요~! 긍정 / 부정 / 기타에 대한 원형그래프 비율이 가장 높은 경우 : pink , 두번째 : gold , 세번째 : whitesmoke 로 표현 subplot 사용 fig, axs = plt.subplots(5,2,figsize = (15,25)) axs = axs.flatten() # 빈도 비율별 색상 정의 colors = ["pink","gold","whitesmoke"] # 라벨 정의 labels_dict = {0: "부정(1~4점)" , 1 : "긍정(8~10점)" , 2 : "기타(5~7점)"} # 긍정/부정에 대한 원형 그래프 그리기 for title, ax in zip(avg_score.keys(),axs): # 영화별 건수 ..
· DB
- URL : https://movie.daum.net - 다음영화 > 랭킹 > 박스오피스 > 월간 위치의 데이터 수집 - 수집데이터 : 영화제목, 평점, 댓글 - 생성할 데이터 : 긍정/부정 - 정적 웹크롤링 : BeautifulSoup : 하나의 페이지에 보이는 부분만 수집할 때 사용 - 동적 웹크롤링 : selenium : 클릭과 같은 이벤트 등 페이지 전환을 하면서 수집할 때 사용 동적 웹크롤링으로 다음영화 사이트 웹크롤링을 해볼 것이다. 영화 10건에 대한 평점과 리뷰를 웹크롤링하여 평점 데이터를 통해 긍정/부정 데이터 생성 ① 라이브러리 설치 pip install selenium - 설치 안되어있으면 명령프롬프트에서 설치 # 설치필요 : pip install selenium # 동적 웹페이지 ..
· DB
이전의 내용과 이어지는 내용 이전 내용이 궁금하다면 클릭 한 건의 데이터를 샘플링했었는데 이를 80개의 파일에 똑같이 적용하여 통합해보고 주제에 맞게 데이터를 가공해보았다. 전체파일 통합하기 def union(i): file_path = f"./01_data/org/trfcard({i})/trfcard.csv" df_bus_card_org = pd.read_csv(file_path) file_path2 = f"./01_data/org/trfcard({i})/trfcard_columns.xlsx" df_bus_card_col_org = pd.read_excel(file_path2,header = 2 , usecols = "B:C") df_bus_card_col_new_dict = {} for i in ra..
· DB
MVC ( 모델 - 뷰 - 컨트롤러 ) 사용자 인터페이스 , 데이터 및 논리 제어를 구현하는데 사용되는 소프트웨어 디자인 패턴 데이터를 만들고 수정하고 보여주는 과정을 분리한 패턴 - 편리한 유지 보수 가능 1. 모델 데이터와 비즈니스 로직 관리 2. 뷰 레이아웃과 화면 처리 3. 컨트롤러 모델과 뷰로 명령 전달 ORM ( Object Relational Mapping) 데이터베이스와 어플리케이션의 연결을 '객체지향적'으로 도와준다. SQL 언어가 아닌 어플리케이션 개발언어로 데이터 베이스를 접근할 수 있게 해주는 툴 sqlalchemy가 대표적인 라이브러리 재사용 및 유지보수의 편리성이 증가한다. 참고 : https://developer.mozilla.org/ko/docs/Glossary/MVC htt..
· DB
이제까지 배운 내용을 토대로 데이터를 받아와서 처리하는 실습을 진행하였다. 데이터는 국가 교통 데이터 오픈마켓에서 데이터를 사용하였다. 80개의 파일을 받아서 이를 하나의 데이터 파일로 합친 후에 진행해야한다. 따라서 한 건의 데이터 샘플링을 실행하고 이를 80개의 파일에 적용하는 순서로 수행하였다. 한 건의 데이터 샘플링 ⓛ 라이브러리 정의 및 데이터 읽어들이기 # 라이브러리 정의 import pandas as pd # 0번 파일의 csv 데이터 읽어들이기 # 데이터 프레임 이름 : df_bus_card_org # 파일 경로 지정 file_path = "./01_data/org/trfcard(0)/trfcard.csv" df_bus_card_org = pd.read_csv(file_path) df_bu..
· DB
데이터 조회 이전 포스팅 내용과 이어진다. 조회건이 여러건인 경우 rows = cur.fetchall() rows ▶ fetchall() 전체 받아오기 ymd_power_df = pd.DataFrame(rows) # - 컬럼명 없이 받아온 경우 # ymd_power_df = pd.DataFrame(rows,columns=["ymd","time","power"] ymd_power_df 조회건이 한 건인 경우 ### 한건 조회를 위한 sql 구문 생성하기 sql = """ Select * From time_power_demand Where ymd = '2021-01-01' And time = '1시' """ sql ### SQL 구문을 DB서버에 요청하고, 결과 받아오기 cur.execute(sql) ###..
· DB
테이블 설계 - 테이블명, 컬럼명 , 컬럼타입 , null 여부에 대한 정의가 필요함 (산출물) - 테이블 정의서 - ERD - 스크립트 명세서 작성한 테이블정의서를 토대로 Heidi SQL에 Create 문으로 테이블과 컬럼을 생성한다. Create Table time_power_demand ( ymd varchar(10) Not Null, time varchar(4) Not Null, power double Not Null ); 데이터 저장 - sqlalchemy - 설치 : pip install sqlalchemy - pymysql - 설치 : conda install -c conda-forge pymysql - 설치 : pip install pymysql - 설치는 두가지 방법 중 하나를 선택 명..
· DB
판다스(Pandas) - 행렬 데이터를 처리하기 위한 다양한 함수를 지원하는 라이브러리 - 파일 읽기, 저장, 행렬데이터 처리, 기본 시각화 등 지원 - 데이터 전처리 과정에서 주로 사용 데이터 수집 > 데이터 전처리 > 데이터 가공(필요시 전처리) > 데이터 분석 탐색/시각화(필요시 전처리) > 필요시 모델 훈련(머신러닝 or 딥러닝) > 웹서비스 또는 분석보고서 * 일반적으로 책에서는 : 데이터 수집 > 전처리 > 분석 > 시각화 로 설명되고 있음 * 분석과정은 회사에 따라 다름 pip list 통해 설치되어있는 라이브러리 확인 가능 conda list > 아나콘다 설치시 pip list와 동일하게 사용 가능 - 날짜 확인 : 기준일로 사용 - 범주형 데이터 확인 : 예로 남자 또는 여자와 같은 데이..
· DB
1. ROLLUP 컬럼명1 , 컬럼명2 WITH ROLLUP 2개 이상의 컬럼을 이용하여 그룹을 짓는 경우 그룹별 중간 합계(집계함수에 대해서)를 표시 마지막행에는 전체합계가 표시됨 SELECT prod_lgu , prod_name , SUM(cart_qty) FROM prod LEFT JOIN cart ON(prod_id = cart_prod AND left(cart_no,4) = '2005') GROUP BY prod_lgu, prod_name WITH ROLLUP; 2. 사용자 정의 함수 사용자 정의 함수를 만들어서 사용하기 위해 새로운 쿼리를 열어 다음과 같은 함수를 작성한뒤 실행한다. 함수작성시 주의해야할 점은 Delimiter // 뒤에 공백(spacebar) 없도록 할 것 , 마지막 Deli..
· DB
Self Join 조건은 한 쪽 M2 테이블에 적용 조회시 M1 테이블에서 조회 SELECT M1.mem_id , M1.mem_name FROM member M1 , member M2 WHERE M2.mem_id = 'b001' AND M1.mem_mileage > M2.mem_mileage; ▶ 조건은 한 쪽 M2 테이블에 적용 / 조회시 M1 테이블에서 조회 Outer Join 특정 테이블 전체에 대한 집계를 하고자 할 때 사용 Outer Join 종류 - Left Outer Join : 테이블 순서 중 왼쪽에 위치한 테이블 전체 - Right Outer Join : 오른쪽에 위치한 테이블 전체 - Full Outer Join : 왼쪽 오른쪽 전체 ( Oracle DB에서만 사용 가능 ) Outer ..
s2h15
'DB' 카테고리의 글 목록