Python_09_Pandas 라이브러리
- Pandas 모듈: panel datas(행과 열로 구성된 데이터)
-사용이유: 데이터를 표 형식으로 변환하여 데이터 분석에 편리함
2. 데이터 구조
1)1차원 배열 형태: Series
- 인덱스(index)+값(value)
- 컬럼명이 없음→컬럼명을 추가하면 2차원 배열 형태(DataFrame)임
2)2차원 배열 형태: DataFrame
-행과 열로 구성된 표와 같은 형태
<배열구조 비교>
3. Pandas 모듈 import: import pandas as pd
4. Series
1)생성하기
- 리스트를 활용하여 Series 생성
- 생성방법: pd.Series([list], index=[인덱스명])
-인덱스와 값이 1:1매칭→인덱스의 개수와 값의 개수가 동일해야 함
2)자료구조 확인
- Series의 값 확인: 시리즈명.values
- Series의 인덱스 확인: 시리즈명.index
- Series의 데이터 타입 확인: 시리즈명.dtype
3)이름 지정
- Series의 이름 지정: 시리즈명.name=”이름”
-데이터 출력 시 어떤 데이터인지 확인 가능함
- Series index의 이름 지정: 시리즈명.index.name=”이름”
4)연산: 시리즈 데이터 구조는 넘파이 배열형태이므로 넘파이 배열과 같이 연산가능
5)인덱싱&슬라이싱
- Series 인덱싱: 시리즈명[인덱스]
-인접하지 않은 여러 인덱스의 데이터 추출 →인덱스들을 리스트로 묶음
-시리즈명[[인덱스1, 인덱스2, 인덱스3]]
- Series 슬라이싱: 시리즈명[시작값: 끝값+1]
- boolean 인덱싱: 시리즈명[시리즈 조건]
-다중 조건인 경우 조건의 우선순위 지정: 시리즈명[(조건1)&(조건2)]
6)딕셔너리
- 딕셔너리 자료형 Series로 만들기: pd.Series(딕셔너리 변수명)
- 딕셔너리 →Series: key→index, value→value
- 인덱스명이 같을 경우 연산됨
- 인덱스명이 다른 경우 연산했을 때 NaN(Not a Number)출력
- 결측치가 있는 데이터 처리하기
- 비어있지 않은 데이터만 출력: 변수명.notnull()
- 비어있는 데이터만 출력: 변수명.isnull()
6)데이터 처리
- Series 데이터 추가: 시리즈명[‘추가할 인덱스명’]=’추가할 값’
- Series 데이터 수정: 시리즈명[‘수정할 인덱스명’]=’수정할 값’
- Series 데이터 삭제: del 시리즈명[인덱스값]
5. DataFrame
- 행과 열로 구성된 2차원 형태의 데이터구조 ex)엑셀 표 형태
- 1차원 Series 데이터들이 모여 2차원이 만들어진 형태
1)생성하기
- 딕셔너리 활용하여 DataFrame 생성
-생성방법: pd.DataFrame(딕셔너리명)
-key: 컬럼명
-value: value
-index는 자동으로 지정되지만 사용자가 지정하려면 생성 시 index=[‘인덱스명’]
- 리스트를 활용하여 DataFrame 생성하기
-데이터 프레임에 들어가는 모든 값을 일일이 지정해야 함(value, index, column)
-value가 될 중첩된 리스트 생성하기(2차원)
-index가 될 리스트 생성하기(1차원)
-컬럼명이 될 리스트 생성하기
2)데이터 프레임 전치: 전치할 dataframe명.T
-출력값만 바뀌고 변수에 다시 대입해야 변경된 데이터가 저장됨
3)자료구조확인
-값 확인: values
-인덱스 확인: index
-컬럼 확인: columns
4)데이터 처리
- 데이터 추가: dataframe명['추가할 컬럼명']=[추가할 값]
- 데이터 삭제
-인덱스명으로 데이터 삭제: dataframe명.drop(‘인덱스명’ )
-인덱스 번호로 데이터 삭제: dataframe명.drop(dataframe명.index[인덱스번호] )
-행 단위로 삭제: dataframe명.drop()
-열 단위로 삭제: axis=1로 변경하기
*drop() 함수의 axis(축)
-axis=0 →행 방향 축
-axis=1 →열 방향 축
- 데이터 수정
-컬럼명 수정
-행 이름 수정
- 변경사항 저장하기
-변수에 다시 대입하기
-inplace=True로 변경하기
4)인덱싱(컬럼명): 열 인덱싱만 가능
-1차원 형태로 인덱싱(series로 출력하기): dataframe명['열 이름']
-2차원 형태로 인덱싱(dataframe형태로 출력하기): dataframe명[['열 이름']]
-두 개의 열 출력하기: 두 개의 열이름을 리스트로 묶어 인덱싱 예)df[['2010','2015']]
5)슬라이싱(행 이름): 행 슬라이싱만 가능
-인덱스 번호: dataframe명[시작값, 끝값+1]
-인덱스명: dataframe명[시작 인덱스명, 끝 인덱스명]
6)인덱서
- loc 인덱서: 인덱스명으로 데이터 추출
-dataframe명.loc[행 데이터, 열 데이터]
-행 데이터='시작 인덱스명': '끝 인덱스명'
-열 데이터='시작 컬럼명': '끝 컬럼명'
- iloc 인덱서: 인덱스 번호로 데이터 추출
-dataframe명.iloc[행 데이터, 열 데이터]
-행 데이터='시작 인덱스번호': '끝 인덱스번호+1'
-열 데이터='시작 컬럼번호': '끝 컬럼번호+1'
7)boolean 인덱싱
-조건: 1차원 형태
-dataframe: 2차원 형태
-변수와 조건의 결과 형태가 동일해야함
예)df3['2010'][df3['2010']>=2500000]
-변수명을 series 형태로 만들기: 인덱싱한 값을 변수로 작성 예)df3['2010']
[실습1]
- 파일 불러오기: pd.read_확장자('불러올 파일명')
- index_col: 컬럼을 인덱스로 바꾸기(도시->인덱스)
- 한글 encoding 방식: EUC-KR/UTF-8/CP949
8)정렬
- 인덱스 (index)기준
-오름차순(기본값)
-내림차순
- 값(value) 기준
-지정한 컬럼만 정렬
-전체 데이터 정렬
-여러 컬럼 기준 정렬
9) 병합
- merge() 함수: 두 개의 DataFrame을 합칠 때 특정 컬럼의 값을 기준으로 합치는 함수
-pd.merge(데이터1, 데이터2, on='기준이 되는 컬럼명', how='병합방식')
- 병합방식
-inner join: 왼쪽 테이블과 오른쪽 테이블의 교집합 데이터만 출력 예)how=’inner’
-left join: 왼쪽 테이블 출력+교집합 데이터 출력 예)how=’left’
-right join: 오른쪽 테이블 출력+교집합 데이터 출력
-full outer join: 전체 테이블 모두 출력(합집합)
- concat() 함수: 두 개의 Dataframe을 합칠 때 축의 방향을 기준으로 합치는 함수
-pd,concat([데이터1, 데이터 2, 데이터 3])
-axis=0 기본값->행 방향으로 병합, 같은 컬럼명인 경우 겹쳐서 출력
-axis=0 기본값->열 방향으로 병합, 같은 인덱스인 경우 겹처서 출력
'PYTHON' 카테고리의 다른 글
[Python]9.Matplotlib (0) | 2023.06.23 |
---|---|
[Python]7. Numpy 라이브러리 (0) | 2023.06.20 |
[Python]6. 딕셔너리, 함수 (0) | 2023.06.19 |
[Python]5. 반복문 실습 (0) | 2023.06.15 |
[Python]4. 반복문 (0) | 2023.06.11 |