관리 메뉴

파이티스

파이썬 Pandas 라이브러리 정의를 알아보고, 사용방법 실습하기 본문

Python/Pandas

파이썬 Pandas 라이브러리 정의를 알아보고, 사용방법 실습하기

파이티스 2023. 5. 23. 00:53
반응형

 

파이썬을 배운지 약 한달째 되는 날이다. 수업일수로 따지면 하루에 8시간씩 24일째 이다. Python 기초부터  시작해서 데이터 분석과 머신러닝 까지 속전속결로 한바퀴 수박의 겉핧기로 살펴본것 같고, 오늘부터 다시 시작하는 것 같다.

 

이제 어느정도 눈과 귀는 열려있는듯 하지만, 막상 코딩을 하려면 쉽지 않다. 사실 그럴만도 하다라고 나 자신을 위로하지만 좀더 자극 받고 분발해야 할듯 하다.


Pandas 란?

- Python 프로그래밍 언어를 위한 데이터 조작과 분석을 위한 빠르고 유연한 오픈 소스 데이터 분석 라이브러리.

- 데이터를 구조화하고 조작하기 위한 강력한 도구와 데이터 분석 및 조작을 위한 다양한 함수와 메서드를 제공.

- 핵심 데이터 구조는 "시리즈(Series)"와 "데이터프레임(DataFrame)"이다.

- 시리즈는 1차원 데이터 배열로서 각 데이터 포인트에 레이블(인덱스)을 부여하여 표현.

- 데이터프레임은 2차원 테이블로서 여러 개의 시리즈를 포함하며, 행과 열을 가지는 데이터 구조.

- 데이터 구조를 사용하여 데이터를 로드, 조작, 필터링, 정렬, 그룹화, 계산 등 다양한 작업을 수행할 수 있음.

 

Pandas는 데이터 과학 및 데이터 분석 작업에서 매우 인기 있는 도구로, 데이터 전처리, 탐색적 데이터 분석(EDA), 통계 분석, 기계 학습 등 다양한 분야에서 사용한다.

 

Pandas 라이브러리 불러오기

import pandas as pd

데이터 프레임에서 데이터를 가져오는 방법

1. 컬럼데이터 가져오는 방법
    변수에 대괄호 사용. reviews['country']

2. 행과열의 조합으로 데이터 가져오는 방법
    사람용으로 사용된 인덱스와 컬럼명으로ㅗ 데이터 가져오는 방법
    번수에 .loc[ , ] 를 사용. reviews.loc[0 , 'country']

3. 행과열의 조합으로 데이터 가져오는 방법
    컴퓨터용으로 사용된 인덱스로 데이터 가져오는 방법
    변수에 .iloc[ , ] 를 사용. reviews.loc[ 0, 0 ]  

 

Pandas 실습 I

- 사용환경 : Jupyter Notebook

- 실습파일명 : winemag-data_first150k.csv

- 파일위치 : D:/yh-k4-main/yh-k4-main/data/

 

과정1)

 

★ Jupyter Notebook 에서 파일경로를 불러오면 " \ " 를 " / " (역슬래시쉬)로 바꿔주어야 한다.

 

# winemag-data-130k-v2.csv 파일을 reviews 로 읽는다.
import pandas as pd
reviews = pd.read_csv('D:/yh-k4-main/yh-k4-main/data/winemag-data_first150k.csv')
reviews.head()

 

결과) Unnamed 인덱스에 있는것이 이상하게 컬럼에 있다.

 

 

문제해결) index_col = 0 을 맨 뒤에 입력

 

reviews = pd.read_csv('D:/yh-k4-main/yh-k4-main/data/winemag-data_first150k.csv', index_col= 0)
reviews.head()
# index_col= 0 사용하여 첫번째 Unnamed 컬럼을 인덱스로 써라 라고 다시 지정

 

 

과정2)

- reviews의 디스트립션 컬럼을 desc로 저장한다.

 

# reviews의 디스크립션 컬럼을 desc 로 저장한다.
desc = reviews['description']
desc

# 결과)
0         This tremendous 100% varietal wine hails from ...
1         Ripe aromas of fig, blackberry and cassis are ...
2         Mac Watson honors the memory of a wine once ma...
3         This spent 20 months in 30% new French oak, an...
4         This is the top wine from La Bégude, named aft...
                                ...                        
150925    Many people feel Fiano represents southern Ita...
150926    Offers an intriguing nose with ginger, lime an...
150927    This classic example comes from a cru vineyard...
150928    A perfect salmon shade, with scents of peaches...
150929    More Pinot Grigios should taste like this. A r...
Name: description, Length: 150930, dtype: object

 

과정3)

- first_description 이라는 변수에는, 디스크립션 컬럼의 첫번째 데이터를 저장한다.

 

# first_description 이라는 변수에는, 디스크립션 컬럼의 첫번째 데이터를 저장한다.
# 결과를 1열은 인덱스 , 2열은 시리즈라고 함. 1차원  ( pandas는 2차원 )
first_description = reviews['description'][0] # 첫번째 방법 ( 인덱스로 가져오는법 )
first_description = reviews.loc[0,'description'] # 두번째 방법 ( 행과열을 지정하여 가져오는법 )
first_description = reviews.iloc[0,1] # 세번째 방법 ( 컴퓨터가 인식하는 인덱스 번호로 가져오는법 )

first_description

# 결과)
'This tremendous 100% varietal wine hails from Oakville and was aged over three years in oak. Juicy red-cherry fruit and a compelling hint of caramel greet the palate, framed by elegant, fine tannins and a subtle minty tone in the background. Balanced and rewarding from start to finish, it has years ahead of it to develop further nuance. Enjoy 2022–2030.'

 

과정4)

- first_row 라는 변수에, 첫번째 리뷰 데이터(행)를 저장한다.

 

# first_row 라는 변수에, 첫번째 리뷰 데이터(행)를 저장한다.
first_row = reviews.loc[0 , ] # 첫번째 행번호 0 , 칼럼은 비워두면 전체를 가져옴 (1차원으로 가져옴 - pandas 시리즈)
first_row


# 결과)
country                                                       US
description    This tremendous 100% varietal wine hails from ...
designation                                    Martha's Vineyard
points                                                        96
price                                                      235.0
province                                              California
region_1                                             Napa Valley
region_2                                                    Napa
variety                                       Cabernet Sauvignon
winery                                                     Heitz
Name: 0, dtype: object

 

과정5)

- 리뷰의 description column 의 값들 중, 첫번째부터 10번째 데이터까지를 first_descriptions 변수에 저장한다.

 

# 리뷰의 description column 의 값들 중, 첫번째부터 10번째 데이터까지를 
# first_descriptions 변수에 저장한다.
reviews['description'][ :9+1] # 0 부터 9까지 10개의 데이토 가져온다.

# 결과)
0    This tremendous 100% varietal wine hails from ...
1    Ripe aromas of fig, blackberry and cassis are ...
2    Mac Watson honors the memory of a wine once ma...
3    This spent 20 months in 30% new French oak, an...
4    This is the top wine from La Bégude, named aft...
5    Deep, dense and pure from the opening bell, th...
6    Slightly gritty black-fruit aromas include a s...
7    Lush cedary black-fruit aromas are luxe and of...
8    This re-named vineyard was formerly bottled as...
9    The producer sources from two blocks of the vi...
Name: description, dtype: object

 

과정6)

- 리뷰에서 인덱스가 1, 2, 3, 5, 8 인 데이터를,  sample_reviews 변수에 저장한다.

 

# 리뷰에서 인덱스가 1, 2, 3, 5, 8 인 데이터를,  sample_reviews 변수에 저장한다.
reviews.loc[[1,2,3,5,8] , ]

 

과정7)

- df 라는 변수에, 다음 조건을 만족하는 데이터프레임을 저장하시오. 
  인덱스가 0, 1, 10, 100 인 데이터에서, 컬럼이 country, province, region_1, region_2 인 데이터들만 가져와서 저장하시오.

 

# df 라는 변수에, 다음 조건을 만족하는 데이터프레임을 저장하시오. 
# 인덱스가 0, 1, 10, 100 인 데이터에서, 컬럼이 country, province, region_1, region_2
# 데이터들만 가져와서 저장하시오.
df = reviews.loc[[0, 1, 10, 100], ['country', 'province', 'region_1', 'region_2']] 
# 따옴표 쉽게 붙이는 법 컬럼명 더블클릭 후 따옴표 입력
df

 

과정8)

- Italy 에서 만들어진 와인에 대해서 italian_wines 이라는 이름으로 데이터프레임을 만드시오. 

 

# Italy 에서 만들어진 와인에 대해서 italian_wines 이라는 이름으로 데이터프레임을 만드시오. 
# reviews.loc[reviews['country'] == 'Italy' , ] # 부등식으로 한것은 loc만 사용됨.
italian_wines = reviews.loc[reviews['country'] == 'Italy' , ]
italian_wines

 

과정9)

- 리뷰점수가 95점 이상이고, Australia와 New Zealand 에서 만들어진 와인에 대한 데이터프레임을 

  top_oceania_wines 이라는 이름의 변수로 저장.

 

# 리뷰점수가 95점 이상이고,
# Australia와 New Zealand 에서 만들어진 와인에 대한 
# 데이터프레임을 top_oceania_wines 이라는 이름의 변수로 저장.

reviews.loc[(reviews['points'] >= 95) & ((reviews['country'] == 'Australia') | (reviews['country'] == 'New Zealand'))]

 

반응형