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 |