1️⃣판다스
* Pandas *
- 파이썬 데이터 처리를 위한 라이브러리이다.
- 파이썬을 이용한 데이터 분석과 같은 작업에서 필수적인 라이브러리
👉🏻판다스의 기능
- 공식 깃헙에서 본인들을 "관계형" 또는 "레이블된" 데이터를 쉽고 직관적으로 조작할 수 있도록 설계된 파이썬 패키지라고 설명한다.
- 통합 인덱싱으로 데이터를 조작할 수 있는 데이터 프레임
- 다양한 데이터 구조와 파일 형식 지원
- 대규모 데이터 분류, 슬라이싱, 인덱싱
- 데이터의 통계 및 시각화
- 데이터 형태 변경, 삭제 및 추가
- 데이터 그룹화, 정렬, 결합, 필터링
- 데이터 셋 병합
- 시계열/ 문자열 데이터 지원
- 판다스는 데이터를 구조화하고 처리하는데 유용한 기능을 제공한다
- 데이터를 표 형태로 표시하거나, 데이터를 정렬하거나, 데이터를 그룹화하는 등의 작업을 수행할 수 있다.
2️⃣실습
주석 달기
# 주석을 작성할 경우 '#'기호를 사용한다
라이브러리 import
import pandas as pd
- 데이터 프레임 생성을 위한 pandas 라이브러리
- 데이터 분석을 위한 라이브러리(library)인 판다스(pandas)를 불러오는 코드이다.
- as 명령어로 pd라는 별칭 지정하기
- pd라는 별칭(alias)을 사용해 판다스를 불러올 수 있다.
- 이후에 이 라이브러리를 이용하여 데이터를 다루는 코드를 작성할 때마다 'pd'라는 별칭을 사용하여 pandas의 함수들을 호출하게 된다.
- 라이브러리 도는 모듈(module)은 프로그래밍에서 재사용 가능한 코드의 집합이다.
- 라이브러리는 특정 기능이나 작업을 수행하기 위해 필요한 함수, 클래스, 상수 등을 포함하고 있다.
- 이러한 라이브러리는 개발자가 별도로 작성하지 않고도 가져와서 사용할 수 있다
- 이미 구현된 기능들을 제공하여 개발 프로세스를 단순화하고 생산성을 향상시킨다.
파일 읽어오기
df = pd.read_csv('train.csv')
df
- read_csv() 함수를 이용해 'train.csv' 파일을 df라는 변수명으로 불러온다
- train.csv파일을 읽어와 데이터프레임(dataframe)형태로 저장하는 코드이다.
- train.csv파일에 저장된 데이터를 데이터 프레임 형태로 불러와서 필요한 작업을 수행할 수 있다.
- 판다스 라이브러리의 read_csv() 함수를 이용한다.
- 파일의 경로를 인자로 전달하면 해당 파일을 읽어와서 데이터 프레임 형태로 반환한다.
- 이를 df변수에 저장하면, 이후에 df변수를 이용하여 데이터 처리 작업을 수행할 수 있다.
데이터 선택
df.loc[0]
- loc[숫자] 함수를 이용하여 데이터 프레임(DataFrame) df의 첫 번째 행을 선택한다.
- df.loc[0]는 판다스 라이브러리에 있는 데이터 프레임 객체의 loc 속성을 사용하는 코드이다.
- loc 속성은 데이터 프레임에서 특정 행 또는 열을 선택하기 위해 사용되는 방법 중 하나이다.
- loc는 location의 약어로, 데이터 프레임의 행 또는 열의 레이블이나 boolean array로 인덱싱하는 방법이다.
- 즉, 레이블 값을 이용하여 특정 값을 선택할 수 있다.
- df 라는 데이터 프레임에서 레이블이 0인 행을 선택하라는 의미를 가지고 있다
- 행의 첫 번째 요소를 선택하는 것과 같다
- loc은 레이블 기반 인덱싱이므로, 만약 행 인덱스가 0, 1, 2.. 같은 숫자가 아니라
'a', 'b', 'c' 등의 문자로 구성되어있다면 df.loc['a']와 같은 형태로 사용해야 한다.
여러 행 선택하기
display(df[100:])
- 데이터 프레임을 출력하는 용도
- df[100:]을 이용하여 데이터프레임 df의 101번째 행부터 마지막 행까지를 선택
- display(df[100:])는 데이터 프레임의 100번째 인덱스부터 끝까지 출력하는 코드이다.
- df[100:]은 Python의 슬라이싱(Slicing)문법을 사용하고 있다.
- 이는 '100번째 인덱스부터 끝까지'라는 의미이다
- 이 떄의 인덱스는 0부터 시작하기 때문에, 실질적으로는 101번째 행부터 마지막 행까지를 선택한다
- 판다스에서 슬라이싱은 데이터프레임(DataFrame)이나 시리즈(Series)객체에서 원하는데이터를 선택하는 방법이다.
- 슬라이싱은 데이터프레임의 특정 행(row)이나 열(column), 도는 시리즈의 특정 인덱스를 선택하는 데 사용된다.
- 이를 활용해 원하는 데이터를 추출하고 분석에 활용할 수 있다.
iloc를 활용한 인덱스가 100인 데이터 선택
df[100:].iloc[0]
- 데이터 프레임 df의 101번째 행을 선택
- iloc[]는 integer location의 약어
- 데이터프레임의 행이나 열의 순서를 나타내는 정수로 특정 값을 추출하는 함수
- df[100:].iloc[0] 는
- df[100:]로 데이터 프레임의 101번재 행부터 마지막 행까지를 선택한다
- 그 다음 .iloc[0]으로 이 선택된 부분 중 첫 번째 행을 선택한다
- 즉, 원래 데이터프레임에서 101번재 행을 선택하는 것이다.
loc를 활용한 인덱스가 100인 데이터 선택
df[100:].loc[100]
- 데이터 프레임 df의 101번째 행을 선택한다
- df[100:].loc[100]은
- df[100:]로 데이터 프레임의 101번째 행부터 마지막 행까지를 선택한다
- 그 다음 .loc[100]으로 이 선택된 부분 중 레이블이 100인 행을 선택한다.
- 즉, 원래 데이터프레임에서 레이블이 100인 행을 선택하는 것
- loc는 레이블 기반의 인덱싱을 사용
loc를 활용한 genre 열 선택
df.loc[:, 'genre']
- df.loc[행, 열]을 이용하여 데이터프레임 df의 genre열 데이터를 선택
- df.loc[:, 'genre']는 df에서 genre라는 이름의 열(column)을 선택하는 코드이다.
- loc[]는 특정 행 또는 열을 선택하는 데 사용되는 함수이다.
- loc는 레이블 기반의 인덱싱을 사용하며, loc[행,열] 형태로 사용된다
- :는 모든 행을 선택하라는 의미이다 (시작과 끝 숫자를 넣어주지 않아서
- 따라서 df.loc[:, 'genre']는 모든 행에서 genre열의 데이터를 선택하라는 의미
- 열을 선택함으로써 열의 데이터를 수정하거나 추가하는 등의 작업을 수행할수 있다
title 열 선택
df['title']
- df['열 이름']을 이용하여 데이터프레임 df의 title 열 데이터를 선택
- loc[]를 사용해서 열을 선택할 수 있지만, 일반적으로 열을 선택할 대에는 loc과 iloc을 사용하지 않고 직접 지정하는 방식으로 진행된다.
- df['title']은 데이터 프레임 df에서 title이라는 이름의 열(column)을 선택하는 코드이다.
- 데이터 프레임은 2차원 테이블 형태 데이터를 다루는 데 사용된다
- 각 열에는 고유한 레이블(또는 이름)이 있다.
- df['title'] 코드를 사용하면, title 열의 모든 데이터를 선택할 수 있다.
- 이렇게 선택된 데이터는 pandas Series 라는 1차원 데이터 구조로 반환된다.
여러 열 정보 선택하기
- 데이터 프레임 df의 title 열과 genre 열 데이터를 선택한다
df[['title', 'genre']]
- df[['title', 'genre']]는 데이터 프레임 df에서 title과 genre열(column)을 선택하는 코드이다
- 데이터 프레임에서 여러 열을 선택하려면, 선택하려는 열의 이름들을 리스트([ ]) 안에 넣어서 전달해주면 된다.
- 이 코드는 여러 열의 데이터를 이용해 계산을 하거나, 데이터를 수정 및 추가하는 등의 작업을 할때 사용한다.
조건으로 선택하기
df['genre'] == '액션'
- 데이터프레임 df의 genre열에서 값이 액션이면 True 아니면 False를 반환
- df['genre'] == '액션'은 데이터 프레임 df의 genre 열에 서 값이 '액션'인 행을 찾는 코드이다
- 해당 코드는 각 행의 genre 피처의 값이 '액션'인지 여부를 확인하고, 결과를 Boolean값 (True 또는 False)로 반환한다.
- 이 결과 genre가 '액션'인 행은 True로, 그렇지 않은 행은 False로 표시된다,
- 특정 조건을 만족하는 행들을 필터링 하는 데 사용된다
- genre 피처의 값이 '액션'인지 확인하기 위해 비교 연산자 ==을 사용했다.
- 비교 연산자를 사용함으로써 특정 조건에 해당하는 데이터만을 추출할 경우, 불필요한 데이터를 제외한 채 데이터를 분석할 수 있는 이점이 있다.
장르가 '액션'인 데이터 프레임 출력하기
df[df['genre']=='액션']
- 데이터프레임 df의 genre 열의 값이 액션인 행(row)을 선택
-df[df['genre'] == '액션']는 df에서 genre열의 값이 '액션'인 행들만 선택하는 코드
- df['genre'] == '액션' 은 데이터 프레임의 genre 열에서 각 값이 '액션'인지를 비교하고 그 결과를 Boolean값 (True 또는 False)로 구성된 Series를 반환
- 이 Series에서는 genre 값이 '액션'인 행은 True로, 그렇지 않은 행은 False로 표시
- df[...]은 대괄호 안에 Boolean series를 넣어 조건을 만족하는 행들만 선택하는 역할
- 특정 조건을 만족하는 행들을 필터링하고자 할 때 사용됨
두 가지 이상의 조건 선택하기
df[df['genre'] == '액션') & (df['distributor'] == '(주)쇼박스')]
- 데이터프레임 df의 genre열의 값이 '액션'이면서 distributor열의 값이 '(주)쇼박스'인 행을 출력
- df[(df['genre'] == '액션') & (df['distributor'] == '(주)쇼박스')]는 데이터프레임 df에서 genre열의 값이 '액션'이고, 동시에 distributor 열의 값이 '(주)쇼박스'인 행들만 선택하는 코드
- 두 개의 조건을 동시에 충족하는 행들을 필터링
- 여기서 사용된 & 연산자는 논리 AND 연산을 수행하며, 두 조건 모두 True일 때만 True를 반환
- df['genre'] == '액션'은 genre 열의 값이 '액션'인지를 확인하고, 그 결과를 Boolean Series로 반환
- df['distributor'] == '(주)쇼박스'는 distributor열의 값이 '(주)쇼박스'인지를 확인하고, 그 결과를 Boolean Seires로 반환
- (df['genre'] == '액션') & (df['distributor'] == '(주)쇼박스')는 위 두 조건을 AND연산하여 두 조건 모두 충족하는 행을 찾는다.
- df[...]은 최종적으로 이 조건을 충족하는 행들만 선택한다
-논리 연산자를 사용해 두 조건을 만족시키는 데이터만을 선택
- 대표적 논리 연산자
- &: and, 두 값이 동일할 경우에만 1을 출력
- |: or, 두 값 중 하나만 참(True)이어도 1을 출력
조건에 해당하는 데이터 프레임 출력
- 데이터 프레임 df의 num_actor열의 값이 5를 초과하는 행(row)을 출력
df[df['num_actor'] > 5]
- df[df['num_actor'] > 5]는 데이터 프레임 df에서 num_actor열의 값이 5보다 큰 행들마을 선택하는 코드
- 여기서 사용된 > 는 비교 연산자
- num_actor 열의 각 값이 5보다 큰지 검사
- 연산 결과는 각 행에 대해 True 또는 False 값으로 이루어진 Boolean Series를 반환한다
결측치가 존재하는 데이터 선택
- dir_prev_bfnum열의 값이 결측치(NaN)인 행(row) 데이터만을 선택하여 출력
df[df['dir_prev_bfnum'].isnull()]
- df[df['dir_prev_bfnum'].isnull()] 코드는 데이터프레임 df에서 dir_prev_bfnum 열의 값이 null인 행들만 선택하는 코드
- null값은 결측치(missing value)를 나타낸다.
- 결측치는 데이터가 없는 값을 의미한다
- 이것은 데이터 수집 과정에서 정보가 누락되었거나, 해당 정보가 존재하지 않음을 나타낼 수 있다.
- 데이터 분석에서는 결측치를 처리하는 것이 중요하다
- 결측치가 포함된 데이터를 사용하면 분석 결과가 왜곡될 수 있기 때문이다.
- df['dir_prev_bfnum'].isnull()은 dir_prev_bfnum열의 각 값이 null인지, 즉 결측치인지를 확인하고, 그 결과를 Boolean Series로 반환
- 이 Series에서 dir_prev-bfnum값이 결측치인 행은 True로, 그렇지 않은 행은 False로 표시
- df[...]은 대괄호 안에 Boolean Series를 넣어 조건을 만족하는 행들만 선택하는 역할
- dir_prev_bfnum 값이 결측치인 행들만 선택하여 새로운 DataFrame을 만드는 코드
- 이렇게 선택된 데이터를 사용해 결측치를 분석하거나, 대체하거나, 제거하는 처리를 할 수 있다.
결측치가 없는 데이터 출력
[문제 1]
dir_prev_bfnum 열 값이 결측치(NaN)가 아닌 행을 선택하기 위해 notnull() 메서드를 사용해보세요.
notnull_data = df[df['dir_prev_bfnum'].notnull()]
notnull_data
- temp 변수에 'dir_prev_bfnum' 이 NaN이 아닌 값만을 저장
데이터 변경(1)
display(df.head(2))
df.loc[1, 'dir_prev_bfnum'] = 500000.0
df.head(2)
- 인덱스가 1인 dir_prev_bfnum열의 값을 500000.0으로 변경하기
- df.loc['행 인덱스', '열'] = 변경할 값 형식으로 값을 변경할 수 있다.
- 데이터를 변경한 뒤 dri_prev_bfnum의 값이 어떻게 변경되었는지 확인
- display(df.head(2)): 데이터 프레임의 처음 두 행을 출력
- 데이터를 변경하기 전의 데이터를 확인하기 위해 작성된 코드
- df.loc[1, 'dir_prev_bfnum'] = 500000.0은 df데이터프레임의 인덱스가 1인 행의 dri_prev_bfnum열의 위치 값이 500000.0으로 변경됨
- 데이터를 변경하는 코드를 사용함으로써 데이터를 원하는대로 수정하거나 결측치를 처리하는 등의 작업을 수행할 수 있다.
데이터 변경
[문제 2]
0행, 'number'의 값을 4로 변경하기 위해 빈칸을 채워 주세요.
df.loc[0, 'number'] = 4
성공~~!!
이어서 다음 강의 보려고 했더니 돈내라고 하네^^
돈 없는 취준생은 여기서 마칩니다...
데이콘 언제 이렇게 유료화가 된거죠..
정말 속상하다
'데이터분석 > DACON' 카테고리의 다른 글
[Basic 펭귄 몸무게 예측 - EDA] 초보자를 위한 상세 설명 (0) | 2023.09.29 |
---|---|
[Pandas튜토리얼]Ch1. CSV파일과 DataFrame (0) | 2023.09.18 |