Python

[pandas] 데이터 둘러보기, 다뤄보기

jsys 2024. 1. 9. 11:40

 

- 결측치(=값이 중간에 비어있음)가 존재하는지 확인

    + 데이터 분석을 할 때 결측치가 있으면 수식 작동이 안된다. > 확인하기

 

 

 

 

데이터를 불러온다.

import pandas as pd

df = pd.read_csv("data/Lemonade2016.csv")

 

 

 

 

이후 info()를 통해 결측치가 있는지 확인할 수 있다.

df.info()

 

# out :

>> Non-Null Count로 Null 값의 개수를 확인(Non-Null : Null이 아니다)

>> 위 예시에서는 전체 값이 32개이므로 31개의 non-null을 가진다면 결측치가 1개 있다는 뜻

 

 

 

 

결측치는 .dropna()로 삭제할 수 있다.

1) 행 기준으로 결측치 제거 : .dropna()

2) 열 기준으로 결측치 제거 : .dropna(axis=1)

3) 특정 열 기준으로 결측치 제거 : .dropna(subset=['특정 열'])

 

 

 

 

다음으로 describe()를 통해 수치 데이터를 확인할 수 있다.

df.describe()  # 기술통계량 제공

 

# out :

 

 

 

 

문자열, 정수, 카테고리 값이 시리즈 값이라면 value_counts()를 통해 데이터를 확인할 수 있다.

각 종류별로 몇 개의 데이터가 있는지 세어준다.

df['Location'].value_counts()

 

# out :

 

 

 

 

- 컬럼 추가

 

먼저 원래 데이터를 확인한다.

df.head(10)

 

# out :

 

 

 

 

아래와 같이 'Sold'라는 컬럼을 추가한다.

df['Sold'] = 0  # df['컬럼명']
df.head(1)

 

# out :

>> 'Sold' 컬럼이 추가된 것을 확인할 수 있다.

 

 

 

 

컬럼에 데이터를 추가한다.

df['Sold'] = df['Lemon'] + df['Orange']  # sold에 lemon과 orange 합친 값 넣기
df.head(10)

 

# out :

>> Lemon과 Orange를 더한 값이 Sold에 출력된다.

 

 

 

 

 

 

- .drop.duplicates()를 통한 중복값 제거

 

위 데이터를 확인하면 7월 6일 자료가 두 개인 등 중복값이 있음을 알 수 있는데, 이를 제거할 수 있다.

매출액 컬럼을 추가하고 중복값을 제거하면 다음과 같다.

df['매출액'] = df['Sold'] * df['Price']
df = df.drop_duplicates(keep='first', ignore_index=True)  # 중복값 지우기
df.head(10)

 

# out :

>> 중복값이 제거된 것을 확인할 수 있다.

 

 

 

 

 

 

- .drop()을 통한 행/열 제거

 

1) columns 제거 (axis=1)

df2 = df.drop('Sold', axis = 1)  # drop('컬럼명', axis=1) : 컬럼이 지워짐
df2.head(5)

 

# out :

>> axis=1을 사용하면 특정 열을 지울 수 있다. 위에선 Sold 컬럼이 사라진 것을 볼 수 있다.

 

 

 

 

2) index 제거 (axis=0)

df3 = df.drop(3, axis=0)  # drop(n, axis=0) : n번째 행이 지워진다.
df3.head(5)

 

# out : 

>> 지정한 번호의 index가 제거된 것을 확인할 수 있다.(위에선 3)

 

 

 

 

 

 

- .loc[]를 이용한 행 추출

# 행 추출
# Location이 Beach인 것만 추출
# loc 사용, 모든 컬럼 조회

df.loc[df['Location'] == 'Beach', :]

 

 

 

 

 

 

- sort_values()를 이용한 데이터 정렬

 

1) 오름차순

df.sort_values(by = ['매출액']).head(5) # 기본값 오름차순

 

# out :

>> 매출액의 데이터가 오름차순으로 정렬되었다.

 

 

 

 

2) 내림차순

 

 ascending=False을 통해 내림차순으로 변경할 수 있다.

df.sort_values(by = ['매출액'], ascending=False).head(5)

 

# out :

>> 매출액의 데이터가 내림차순으로 정렬되었다.

 

 

 

 

 

 

- Groupby 연산

 

* Groupby 기준컬럼 : 패턴이 있는 문자열
* Groupby 대상컬럼 : 수치 데이터
* 필요한 함수 : 집계함수(합, 평균, 표준편차, 최대, 최소 등)

 

* 형식 : df.groupby ('기준컬럼') ['대상컬럼'] .집계함수

df.groupby('Location')['매출액'].agg(['sum', 'mean', 'std'])

 

# out :

 

 

 

 

 

위 상태에서 reset_index()를 통해 집계함수를 열로 만들 수 있다.

df.groupby('Location')['매출액'].agg(['sum', 'mean', 'std']).reset_index()

 

# out :