본문 바로가기
MachineLearning

[kaggle] Pandas Tutorial - 6

by k0o9 2022. 5. 27.

6. Renaming and Combining

Introduction

데이터는 우리가 만족하지 못하는 명명 규칙과 함게 우리에게 다가온다. 그런 경우 pandas는 위반하는 항목들의 이름을 더 나은 이름으로 바꾸는 기능들을 제공한다.

또한 DataFrame이나 Series의 데이터를 결합하는 방법도 살펴볼 수 있다.

Renaming

rename()함수는 인덱스 이름 이나 열의 이름을 변경할 수 있다. 예를 들어 점수를 매기도록 데이터 집합의 포인트 열을 변경할 수 있다.

reviews.rename(columns={'points': 'score'})

rename() 함수는 인덱스나 열을 특정하는 파라미터를 넘겨줘서 이름을 변경한다. 여러가지 입력 형식을 지원하나 가장 자주 사용하는 방법은 파이썬 딕셔너리를 사용하는 것이다.

reviews.rename(index={0: 'firstEntry', 1: 'secondEntry'})

열의 이름은 자주 바꾸지만 인덱스의 이름은 자주 바꾸지 않는다. 이러한 경우에는 set_index()함수가 더 편리하다. 행 인덱스와 열 인덱스는 모두 고유한 이름 속성을 가질 수 있다. 이러한 이름을 변경하기 위해서 name_axis()방법을 사용할 수 있다.

reviews.rename_axis("wines", axis='rows').rename_axis("fields", axis='columns')

Combining

DataSet에 대한 작업을 수행할 때 간혹 다른 DataFrame 또는 Series를 사소한 방법으로 결합해야 한다. Pandas는 이러한 작업을 하기위해 3가지 핵심방법을 가지고 있다. concat(),join(),merge()이다. merge()이 가능한 대부분의 작업은 join()을 이용하여 간단히 수행할 수 있다.

-복잡성이 증가하는 순서

concat()< join() < merge()

우선 가장 간단한 결합 방법인 concat()부터 살펴보겠다. 요소 목록이 주어지면 이 함수는 축을 따라 요소를 함께 합친다. 같은 필드나 열을 가지고 있는 서로 다른 DataFrame이나 Series를 합칠 때 편리하다.

canadian_youtube = pd.read_csv("../input/youtube-new/CAvideos.csv")
british_youtube = pd.read_csv("../input/youtube-new/GBvideos.csv")

pd.concat([canadian_youtube, british_youtube])

join()을 사용하면 인덱스를 공통으로 가지는 서로 다른 DataFrame 객체를 결합할 수 있다. 예를 들어 캐나다와 영국 모두에서 같은 날 유행하는 비디오를 합칠 수 있다.

left = canadian_youtube.set_index(['title', 'trending_date'])
right = british_youtube.set_index(['title', 'trending_date'])

left.join(right, lsuffix='_CAN', rsuffix='_UK')

lsuffix와 rsuffix 인자는 두 DataFrame에서 같은 이름을 가지는 열들을 구분하기 위해서 필요하다. 만약 같은 이름을 가지는 열이 없다면, 굳이 쓸 필요는 없다.

Exercise

1.

region_1 and region_2 are pretty uninformative names for locale columns in the dataset. Create a copy of reviews with these columns renamed to region and locale, respectively.

# Your code here
renamed = ____

# Check your answer
q1.check()
reviews.rename(columns={"region_1": "region", "region_2": "locale"})

2.

Set the index name in the dataset to wines.

reindexed = ____

# Check your answer
q2.check()
reviews.rename_axis("wines", axis="rows")

3.

The Things on Reddit dataset includes product links from a selection of top-ranked forums ("subreddits") on reddit.com. Run the cell below to load a dataframe of products mentioned on the /r/gaming subreddit and another dataframe for products mentioned on the r//movies subreddit.

gaming_products = pd.read_csv("../input/things-on-reddit/top-things/top-things/reddits/g/gaming.csv")
gaming_products['subreddit'] = "r/gaming"
movie_products = pd.read_csv("../input/things-on-reddit/top-things/top-things/reddits/m/movies.csv")
movie_products['subreddit'] = "r/movies"
pd.concat([gaming_products, movie_products])

4.

The Powerlifting Database dataset on Kaggle includes one CSV table for powerlifting meets and a separate one for powerlifting competitors. Run the cell below to load these datasets into dataframes:

powerlifting_meets = pd.read_csv("../input/powerlifting-database/meets.csv")
powerlifting_competitors = pd.read_csv("../input/powerlifting-database/openpowerlifting.csv")
powerlifting_meets.set_index("MeetID").join(powerlifting_competitors.set_index("MeetID"))

'MachineLearning' 카테고리의 다른 글

[kaggle] Pandas Tutorial - 5  (0) 2022.05.27
[kaggle] Pandas Tutorial - 4  (0) 2022.05.27
[kaggle] Pandas Tutorial - 3  (0) 2022.05.27
[kaggle] Pandas Tutorial - 2  (0) 2022.05.27
[kaggle] Pandas Tutorial - 1  (0) 2022.05.27