이삼오 2024. 3. 7. 21:56

행 인덱스 재배열  
- reindex( ) 메소드를 사용해 데이터프레임의 행 인덱스를 새로운 배열로 재지정할 수 있음
  DataFrame 객체.reindex( )

 

행 인덱스 초기화
- reset_index( ) 메소드를 활용해 행 인덱스를 정수형 인덱스로 초기화
- 이 때 기존 인덱스는 컬럼으로 이동한다

 

행 인덱스 정렬  
- ascending을 활용해 인덱스를 오름차순, 내림차순 정렬 가능
- 기본값 True(오름차순)
- Fasle로 정해서 내림차순 가능

 

특정 열의 데이터값을 기준으로 데이터프레임 정렬
- sort_values( ) 메소드 사용
DataFrame 객체.sort_values(by='기준 컬럼 명', ascending)

 

산술 연산  
- 판다스 객체의 산술연산은 내부적으로 3단계 프로세스를 거친다  
- 1) 행/컬럼 인덱스를 기준으로 모든 원소를 정렬
- 2) 동일 위치 원소끼리 일대일 대응
- 3) 대응 원소끼리 계산

 

시리즈 vs 시리즈
- 시리즈의 모든 인덱스에 대해 같은 인덱스를 가진 원소끼리 계산
- 인덱스에 연산 결과를 매칭해 새 시리즈 반환'

=> 각 시리즈의 인덱스 순서가 다를 경우, pandas는 알아서 같은 인덱스를 찾아 정렬한 후 계산함

- 연산하는 두 시리즈의 원소 개수가 다르거나 시리즈의 크기가 같지만 인덱스 값이 다를 경우
- 짝을 지을 동일한 인덱스가 없는 경우 NaN으로 처리(pandas에서만)
- 동일 인덱스가 존재해 서로 대응되더라도 한 쪽의 데이터값이 NaN인 경우 연산 대상 데이터가 존재하지 않음

 

데이터프레임 연산
- 행/컬럼 기준으로 정렬하고 일대일 대응되는 원소끼리 연산을 처리


데이터프레임 vs 숫자
- 데이터프레임에 어떤 숫자를 더하면 모든 원소에 숫자를 더함(브로드캐스팅 지원)
- 사칙연산 가능
- 기존 데이터프레임 형태를 그대로 유지한 채 원소값만 새로운 값으로 변경됨

 

2장 데이터 입출력

 

외부 파일 읽어오기
- 판다스는 다양한 외부 파일을 읽어와서 데이터프레임으로 변환하는 함수를 제공
- 반대로 데이터프레임을 다양한 유형의 파일로 저장 가능
- read_csv("경로") / to_csv("경로")

 

CSV 파일
- 데이터를 쉼표로 구분하고 있다는 의미. 텍스트 파일
- 쉼표로 열 구분, 줄바꿈으로 행 구분

- csv 파일에 따라 쉼표 대신 탭(\t)이나 공백(" ")으로 텍스트를 구분하기도 함
- 이때 구분자.(sep 또는 delimiter) 옵션을 입력

 

Excel 파일
- read_excel( )
- 사용법은 read_csv 함수와 거의 비슷

 

Json 파일
- 파이썬 딕셔너리와 비슷한 구조
- 키 : 밸류

 

웹(Web)에서 가져오기
HTML 웹페이지에서 표 속성 가져오기
- 판다스 read_html() 함수
- 웹페이지 <table> 대크에서 표 형식의 데이터를 찾아 데이터프레임으로 변환
- 표 데이터들은 각각 별도의 데이터프레임으로 변환되기 때문에 여러 개의 데이터프레임(표)을 원소로 갖는 리스트가 반환됨

 

```

# tables로 html 페이지의 표 속성 가져옴

# table 리스트의 원소를 iteration 하면서 각 테이블을 화면에 출력

tables = pd.read_html(url)
len(tables)
for i in range(len(tables)):       # 'tables 리스트 길이'라는 정수 범위를 생성해(range) 하나씩 반복(iteration)
    print(f'tables[{i}]')                # tables[0]과 tables[0] 을 print
    display(tables[i])                # 각 테이블을 display
    print('\n')

```

 

데이터 저장하기
CSV 파일로 저장
- 판다스 데이터프레임은 2차원 배열로 구조화된 데이터이므로 2차원 구조를 갖는 csv 파일로 변환할 수 있음
- to_csv( ) 메소드를 적용

- json, excel 파일의 경우 to_json( ), to_excel( ) 사용