관리 메뉴

파이티스

파이썬 Pandas 라이브러리와 loc함수 사용으로 실습하기 2 본문

Python/Pandas

파이썬 Pandas 라이브러리와 loc함수 사용으로 실습하기 2

파이티스 2023. 5. 23. 16:18
반응형

 

 loc 이란?

- 데이터프레임에서 특정 행과 열에 접근하는 데 사용되는 pandas의 인덱싱 방법 중 하나

- loc을 사용하여 행과 열을 지정하면 해당 위치의 데이터를 선택할 수 있다.

 

Pandas 기초실습 2

- 판다스 라이브러리를 임포트 한다. 

- "winemag-data.csv" 파일을 불러온다.

- head로 제일 앞에 3개의 데이터를 불러온다.

 

import pandas as pd
reviews = pd.read_csv('D:/yh-k4-main/yh-k4-main/data/winemag-data.csv')
reviews.head(3)

 

 

- 지난시간처럼 col_index = 0 을 입력해서 Unnamed를 인덱스화 한다.

 

reviews = pd.read_csv('D:/yh-k4-main/yh-k4-main/data/winemag-data.csv',index_col = 0)

 

과정1 )

- 인덱스를 title 컬럼으로 셋팅한다.

- set_index 사용

 

reviews2 = reviews.set_index('title')
reviews2.head(2)

 

과정2 )

- 빈 데이터 확인

 

reviews2.isna()

reviews2.isna().sum()

 

과정3 )

- 비어있지 않은 데이터 확인

 

reviews2.notna()

reviews2.notna().sum()

 

과정4 )

- 통계량 구하기

 

reviews2['points'].describe()

 

과정5 )

- 가격이 없는 데이터는 빼고, 데이터셋을 가져온다.

 

money_price = reviews2.loc[reviews2['price'].notna() , ]
money_price.head(2)

 

과정6 )

- 리뷰에 새로운 컬럼 critic 만들고, everyone 이라고 값 넣는다.

- 데이터 프레임 제일 마지막에 critic 열이 생성된것을 확인 할 수 있다.

 

# " = " 의 오른쪽을 왼쪽의 변수에 저장하라 이다. ( 메모리에 작업하라 )
# reviews2['critic'] = 'everyone' 
reviews2['critic'] = 'everyone'
reviews2.head(5)

 

과정7 )

- 리뷰의 포인트 컬럼은 수치로 되어있다. 이 컬럼의 기초통계데이터를 확인하시오. (평균, 최대 최소 등)

 

reviews2['points'].describe()

 

과정8 )

- taster_name 컬럼은 사람 이름으로 되어있다. 몇명의 사람들이 평가를 한것인까?

 

reviews2['taster_name']

 

- taster_name 컬럼의 고유한 이름 개수 확인

 

# taster_name 컬럼의 고유한 이름 개수 확인
num_tasters = reviews2['taster_name'].nunique()
num_tasters

 

과정9 )

- 리뷰 포인트의 평균을 구하시오

 

reviews2['points']

 

- mean()을 사용하여 포인트의 평균을 구한다.

 

reviews2['points'].mean()

 

과정10 )

- 테스터들의 이름을 전부 확인하시오

 

reviews2['taster_name'].unique()

 

taster_name는 총 19명이지만, nan이 하나 포함되어 있어서 20으로 출력됨.

 

reviews2['taster_name'].unique().size # nan 이 하나 있어서 19 + 1(nan) = 20

# taster_name 컬럼의 모든 고유한 이름 확인
unique_names = reviews2['taster_name'].unique()

# 결과 출력
print(unique_names)

 

★ 문제해결

- taster_name 에서 NaN을 제외하고 출력하기 위해서  dropna() 사용

 

reviews2['taster_name'].dropna().unique()
# dropna() 사용하여 NaN 을 제외시킴

 

과정11 )

- 각 테스터들은, 각각 몇개의 와인을 테스트 했는지 확인하시오. ( 테스터 이름, 갯수 )

 

reviews2.groupby('taster_name')['taster_name'].count()
#reviews2.groupby('taster_name') 별로 ['taster_name'].count() 카운트 해라

 

- 내림차순으로 정렬

 

# 테스터별 와인 테스트 개수 확인
tester_counts = reviews2['taster_name'].value_counts()

# 결과 출력
print(tester_counts)

 

과정12 )

- 리뷰의 포인트의 평균을 구하고, 리뷰의 포인트값이, 평균보다 큰 데이터 (즉, 평가가 좋은 와인) 만 가져오시오.

 

point_mean = reviews2['points'].mean()
reviews2.loc[reviews2['points'] > point_mean , ].head(3) 
# head(3)으로 앞에 3개의 데이터만 봄

 

실습 끝!

반응형