include indexjsp
인덱스
인덱스의 역활은 검색속도의 향상입니다. 인덱스를 사용하면 효과적으로 검색할 수 있는 이유? 데이터베이스의 인덱스에 쓰이러한 대표적인 조사하다 절차는 ‘이진 트리(binary tree)’가 있습니다. 이진 트리는 분명히 말하면 탐색 방법이라기 보다는 자료 구조에 가깝다.
DataFrame 읽기, 저장
read_csv를 이용하여 파일을 읽어옵니다. 여기서의 특징은…. 빈칸이 String 값으로 저장되어있을 경우도 있기에 na_values를 사용하고, English 외의 다른 언어가 포함될 수 있어서 언어에 맞는 형식의 인코더가 필요합니다. 한국어는 utf8로 인코딩합니다. 자신이 열심히 모델링해서 얻은 결과를 DF 형식으로 만들었다면 csv로 바로 저장할 있습니다.
인덱스 작성
인덱스는 CREATE INDEX 명령으로 만든다. 인덱스에 이름을 붙여 관리하는데. 데이터베이스 객체가 될지 테이블의 열처럼 취급될지는 데이터베이스 제품에 따라 다릅니다. 인덱스를 작성할 때는 관련 인덱스가가 어느 테이블의 어느 열에 관한 것지각 지정해야 합니다. 책상 크기에 따라 인덱스 작성시간도 달라지는데, 행이 대량으로 존재하면 시간도 적지않게 걸리고저장공간도 적지않게 소비합니다.
작성한 인덱스의 열을 WHERE구로 조건을 지정하여 SELECT 명령으로 검색하면 처리속도가 향상됩니다.
Oracle이나 DB2 등에서 인덱스는 스키마 객체가 됩니다.
스키마 내에 이름이 중복하지 않도록 지정해 관리합니다. SQL Server나 MySQL에서 인덱스는 책상 내의 객체가 됩니다.
4.1 info(), describe(): 자료 요약, 통계정보
info함수를 통해 행, 열, 칼럼이름, 결측값 없음, 데이터타입은 플로트64 임을 알 있습니다.
describe()에서는 일반적인 기술통계값들을 알려줍니다. petal width는 데이터값의 범위가 꽤나 작아서 다른 칼럼들에 비해 분석모델에 미치는 영향력이 적을 있습니다. 단위를 통일시킬 수 있는 정규화를 생각해볼 있습니다.
6.2 rename(): 컬럼명 변경(선택)
df.rename(columns = {”Before” : ”After”}, inplace = True) # 딕셔너리로 삽입 주의
가장 소중한 것은, rename의 경우는 inplace = True를 넣어주는 것이 좋습니다. (보통 수지정하기 위해 쓰니까) inplace의 디폴트 값은 False기 때문에 True를 넣지 않으면 데이터프레임이 수정이 안됩니다. 6.1의 예시를 보시면 0차례 컬럼에 오타가 있는 것을 확인할 있습니다.
rename을 이용하여 지정된 컬럼 이름을 변경합니다.
5.1 set_index(): 데이터프레임 내의 열을 인덱스로 변경
DataFrame.set_index(keys, drop = True, append = False, inplace = True) # keys: 인덱스로 사용하고자하는 칼럼# drop: keys에 쓰인 칼럼을 df에서 삭제할지 결정# append: 기존에 있던 인덱스를 삭제할지, df에 추가할지 결정# inplace: 원본객체 변경할지 결정5.2 reset_index(): 인덱스가 0부터 시작하는 integer로 리셋됨
DataFrame.reset_index(drop = False, inplace = False)
인수들의 뜻은 같으니 생략하도록 합니다.
포인터와 배열
배열은 내부적으로 포인터를 활용해 구현되었고, 아래 두 가지 특징을 가진다. 배열을 선언할 때, 그 크기만큼 계속적인 메모리 공간을 확보합니다. 즉, 배열에 저장되는 각각의 값들은 연속된 메모리 주소 안에 저장됩니다. 배열을 선언한 이름은 배열의 시작 주소 값을 가진다. 배열을 선언한 뒤 관련 배열의 이름을 출력해보면, 특정메모리 주소가 저장되어 있음을 확인할 있습니다. 관련 주소로 접근해 값을 출력해보시면 0차례 index의 값이고, 한 칸 뒤 값은 당연히 1차례 index의 값입니다.
관련 메모리 주소 값을 변경하면, 0차례 index의 값이 변화함을 확인할 있습니다. C++문법에 정의된 특정index의 값을 변화하는 행위 자체가 내부적으로는 포인터 변수로 관련 메모리의 값에 들어가는 것과 동일합니다.
✔️ PointDB 테이블에 인덱스(index)가 요구하는 이유
🧐 만약 table에 index를 걸지 않으면 어떠하게 될까? SELECT *FROM customerWHERE first_name = “Jeongyoon”;
원하는 데이터를 찾고 싶을 때 table 전체를 full scan 해야 합니다. 즉, first_name에 index가 걸려있지 않다면 “Jeongyoon”을 찾기 위해서는 모든 데이터를 하나씩 확인해야 합니다.