본문 바로가기
데이터 공부/파이썬 기초공부

Pandas 판다스 내용 정리 - ① 자료구조 및 입출력

by 스터디마형 2024. 5. 13.

1. 데이터프레임 만들기

- 데이터프레임은 2차원 배열이다.

- 여러 개의 시리즈들이 한데 모여서 데이터프레임을 이루는 구조를 보여준다.

 

딕셔너리 -> 데이터프레임 변환 : pandas.DataFrame(딕셔너리 객체)


2. 행 인덱스/ 열 이름 설정

-직접 입력

행 인덱스/열 이름 설정 : pandas.DataFrame( 2차원 배열, index = 행 인덱스 배열, columns = 열 이름 배열)

행 인덱스 변경 : DataFrame 객체.index = 새로운 행 인덱스 배열

열 인덱스 변경 : DataFrame 객체.columns = 새로운 열 인덱스 배열

- rename

행 인덱스 변경 : DataFrame 객체.rename(index = {기존 인덱스 : 새로운 인덱스, ...})

 열 인덱스 변경 : DataFrame 객체.rename(columns = {기존 이름 : 새로운 이름,...})

 

*  inplace = True 옵션을 사용하면 원본 객체 변경

 

rename 메소드는 행 인덱스 또는 열 이름을 변경하는 데 사용됩니다. 이 메소드는 원래의 데이터프레임 구조를 유지하면서 특정 인덱스 또는 열 이름만을 새로운 이름으로 바꾸고자 할 때 유용합니다. rename은 대체할 이름을 사전 형식으로 전달하여 사용합니다.

 

 

3. 행/열 삭제

데이터 프레임의 행 또는 열을 삭제하는 명령 : drop() 메소드

- 삭제할떄는 축(axis) 옵션으로  axis = 0 또는 별도로 입력하지 않는다,

- 삭제할떄는 축(axis) 옵션으로  axis = 1 

 

행 삭제 : df.drop(행 인덱스 또는 배열, axis = 0)

열 삭제 : df.drop(열 이름 또는 배열, axis = 1)


* df2 = df 와 df2 = df[:]의 차이

- df2 = df는 원본 DataFrame 객체에 대한 참조를 만듭니다. 

- df2 = df[:]는 데이터를 새 객체로 복사합니다.

 

4. 행/열 선택
- loc, iloc 선택

이름을 사용할때는 loc[ ]

인덱스 번호를 사용할때는 iloc[ ]

구분  loc iloc
탐색 대상 인덱스 이름 인덱스 위치 범위
범위 지정 [ 'a' : 'c' ]  >>>  'a', 'b', 'c' [ 3 : 7 ]  >>> 3, 4, 5, 6

 


- 열 선택

특정 열 선택 : df.열 이름 또는 df['열 이름']

n개 열 선택  : df[ [ 열1, 열2, 열3, .. 열n] ]   (>>> 2배열)


* 범위 슬라이싱

df.iloc[시작 인덱스, 끝 인덱스, 슬라이싱 간격 ]

* 시작 인덱스를 포함하고 끝 인덱스 보다 작은 1이 작은 인덱스까지 포함/  슬라이싱 간격을 지정하지 않으면 1씩 증가

 

- 원소 선택 

• 인덱스 이름: df.loc[행 인덱스 이름, 열 이름]

• 위치 인덱스: df.iloc[행 번호, 열 번호]

 


5. 열/행 추가

 

6. 원소 값 변경




8. 행, 열 위치 바꾸기

- df.T  또는 df.transpose()

 

 


1. 특정 열을 행 인덱스로 설정

- set_index()

- 원본 데이터프레임을 바꾸지 않고 새로운 데이터프레임 객체를 반환하는 점에 유의

 

- df.set_index( ['열이름'] 또는 '열 이름')


2. 행 인덱스 재배열

- reindex( 새로운 인덱스 배열 )

 

reindex 메소드는 데이터프레임의 새로운 인덱스를 설정하거나 기존 인덱스를 재배열하는 데 사용됩니다. 이 메소드는 새로운 인덱스를 기반으로 데이터프레임의 행 순서를 변경하거나 새로운 행을 추가할 때 사용됩니다. 만약 새 인덱스에 해당하는 데이터가 없는 경우 해당 위치에는 NaN 값이 삽입됩니다.


3. 행 인덱스 초기화
reset_index()

reset_index() 메소드를 활용하여 행 인덱스를 정수형 위치 인덱스로 초기화 한다. 이때 기존 행 인덱스는 열로 이동한다.


4. 행 인덱스를 기준으로 데이터프레임 정렬
sort_index()

sort_index() 메소드를 활용하여 행 인덱스를 기준으로 데이터프레임의 값을 정렬

- ascending 옵션을 사용하여 오름차순, 내림차순 설정

• ascending = False : 내림차순

• ascending = True  : 오름차순


* 특정 열의 데이터 값을 기준으로 데이터프레임 정렬하기
sort_values()

특정 열의 데이터 기준으로 데이터프레임 정렬하기

 


[산술연산]
1. 시리즈 vs 숫자


2. 시리즈 vs 시리즈


3. 연산 메소드

- add, sub, mul, div 등


fill_value 옵션은 pandas에서 두 데이터 구조(시리즈 또는 데이터프레임) 간의 연산을 수행할 때 사용할 수 있습니다. 

이 옵션은 연산 과정에서 발생할 수 있는 NaN(결측치) 값을 특정 값으로 대체하고자 할 때 유용합니다. 따라서, fill_value 옵션은 시리즈 뿐만 아니라 데이터프레임 연산에서도 사용할 수 있습니다.

 


4. 데이터프레임 vs 숫자 , 데이터프레임 vs 데이터프레임

 


Part 2 데이터 입출력

1. 외부파일 불러오기/ 저장하기

- CSV 파일 불러오기/저장하기

CSV 파일은 데이터 저장과 데이터 교환의 가장 흔한 형식 중 하나입니다. 

- read_csv() 함수를 사용하여 불러오기
- to_csv() 메소드를 사용하여 저장

 

csv 파일에 따라서는 쉼표(,) 대신 탭(/t)이나 공백(" ")으로 텍스트를 구분하기도 한다.

이때는 sep 또는 delimier 옵션을 알맞게 입력해야한다.

read_csv 옵션 설명

  1. path: 파일의 경로 또는 URL을 문자열로 지정합니다. 이는 필수 매개변수로, 읽어올 CSV 파일의 위치를 나타냅니다.
  2. sep: 데이터가 사용하는 구분자를 지정합니다. 기본값은 콤마(,)입니다. 탭(TSV 파일), 세미콜론 등 다른 문자를 사용할 경우 이 옵션을 통해 지정할 수 있습니다.
  3. header: 열 이름으로 사용할 행의 번호를 지정합니다. 기본값은 0이며, 첫 번째 행을 열 이름으로 사용합니다. 헤더가 없는 경우 None을 지정할 수 있습니다.
  4. index_col: 인덱스로 사용할 열의 번호나 이름을 지정합니다. 여러 열을 리스트로 제공하여 다중 인덱스를 설정할 수도 있습니다.
  5. names: 열 이름의 리스트를 제공하여 데이터에 헤더가 없는 경우, 이를 열 이름으로 지정할 수 있습니다. header=None과 함께 사용됩니다.
  6. skiprows: 무시할 행의 수 또는 행 번호의 리스트를 지정합니다. 파일의 처음 몇 행을 건너뛰고 데이터를 읽을 때 유용합니다.
  7. parse_dates: 날짜 데이터를 파싱할 열을 지정합니다. 이 옵션에 열 번호나 이름의 리스트를 제공하면, pandas는 자동으로 날짜 형식으로 변환을 시도합니다.
  8. skip_footer: 무시할 파일의 마지막 행 수를 지정합니다. 이 옵션은 파일의 끝에서 일부 데이터를 제외하고 싶을 때 사용됩니다. (참고: 이 옵션은 최신 pandas 버전에서 skipfooter로 변경되었습니다.)
  9. encoding: 파일의 문자 인코딩을 지정합니다. 예를 들어, 'utf-8'이 기본값이지만, 다른 인코딩(예: 'latin1', 'ISO-8859-1' 등)을 사용하는 파일을 읽을 때 지정합니다.

 

 

- Excel 파일 불러오기/저장하기

- read_excel() 함수를 사용하여 불러오기

Excel 파일 처리를 위해서는 추가적으로 openpyxl 또는 xlrd 같은 엔진이 필요할 수 있습니다.

Excel 파일의 버전이나 저장 형식에 따라 engine을 설정할 수 있습니다.
예를 들어, openpyxl은 xlsx 파일에 사용하며, xlrd는 구버전 xls 파일에 사용합니다.

* header =None 옵션을 사용하면 정수형 인덱스 열 이름으로 자동을 할당

- to_excel() 메소드를 사용하여 데이터프레임을 Excel 파일로 저장

 





- JSON 파일 불러오기/ 저장하기

- JSON 형식은 데이터 공유 목적으로 개발된 특수한 파일 형식

- 파이썬 딕셔너리와 비슷하게 'key : value' 구조를 갖는데, 구조가 중첩되는 방식에 따라 다르게 적용돈다

- read_json() 함수를 사용하여 JSON 데이터를 불러올 수 있습니다.
- to_json() 함수를 사용해서 저장