Python-데이터 랭 글링
데이터 랭 글링에는 데이터를 분석하거나 다른 데이터 세트와 함께 사용할 준비를하기 위해 병합, 그룹화, 연결 등과 같은 다양한 형식의 데이터 처리가 포함됩니다. Python에는 분석 목표를 달성하기 위해 다양한 데이터 세트에 이러한 랭 글링 방법을 적용하는 기능이 내장되어 있습니다. 이 장에서는 이러한 방법을 설명하는 몇 가지 예를 살펴 보겠습니다.
데이터 병합
Python의 Pandas 라이브러리는 단일 기능을 제공합니다. merge, DataFrame 객체 사이의 모든 표준 데이터베이스 조인 작업의 진입 점으로-
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True)
이제 두 개의 다른 DataFrame을 만들고 병합 작업을 수행하겠습니다.
# import the pandas library
import pandas as pd
left = pd.DataFrame({
'id':[1,2,3,4,5],
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5']})
right = pd.DataFrame(
{'id':[1,2,3,4,5],
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5']})
print left
print right
이것의 output 다음과 같습니다-
Name id subject_id
0 Alex 1 sub1
1 Amy 2 sub2
2 Allen 3 sub4
3 Alice 4 sub6
4 Ayoung 5 sub5
Name id subject_id
0 Billy 1 sub2
1 Brian 2 sub4
2 Bran 3 sub3
3 Bryce 4 sub6
4 Betty 5 sub5
데이터 그룹화
데이터 세트 그룹화는 데이터 세트에 존재하는 다양한 그룹의 관점에서 결과가 필요한 데이터 분석에서 자주 필요합니다. Panadas에는 데이터를 다양한 그룹으로 롤링 할 수있는 내장 메서드가 있습니다.
아래 예에서는 연도별로 데이터를 그룹화 한 다음 특정 연도에 대한 결과를 얻습니다.
# import the pandas library
import pandas as pd
ipl_data = {'Team': ['Riders', 'Riders', 'Devils', 'Devils', 'Kings',
'kings', 'Kings', 'Kings', 'Riders', 'Royals', 'Royals', 'Riders'],
'Rank': [1, 2, 2, 3, 3,4 ,1 ,1,2 , 4,1,2],
'Year': [2014,2015,2014,2015,2014,2015,2016,2017,2016,2014,2015,2017],
'Points':[876,789,863,673,741,812,756,788,694,701,804,690]}
df = pd.DataFrame(ipl_data)
grouped = df.groupby('Year')
print grouped.get_group(2014)
이것의 output 다음과 같습니다-
Points Rank Team Year
0 876 1 Riders 2014
2 863 2 Devils 2014
4 741 3 Kings 2014
9 701 4 Royals 2014
데이터 연결
Pandas는 쉽게 결합 할 수있는 다양한 기능을 제공합니다. Series, DataFrame, 및 Panel사물. 아래 예에서concat함수는 축을 따라 연결 작업을 수행합니다. 다른 객체를 만들고 연결해 보겠습니다.
import pandas as pd
one = pd.DataFrame({
'Name': ['Alex', 'Amy', 'Allen', 'Alice', 'Ayoung'],
'subject_id':['sub1','sub2','sub4','sub6','sub5'],
'Marks_scored':[98,90,87,69,78]},
index=[1,2,3,4,5])
two = pd.DataFrame({
'Name': ['Billy', 'Brian', 'Bran', 'Bryce', 'Betty'],
'subject_id':['sub2','sub4','sub3','sub6','sub5'],
'Marks_scored':[89,80,79,97,88]},
index=[1,2,3,4,5])
print pd.concat([one,two])
이것의 output 다음과 같습니다-
Marks_scored Name subject_id
1 98 Alex sub1
2 90 Amy sub2
3 87 Allen sub4
4 69 Alice sub6
5 78 Ayoung sub5
1 89 Billy sub2
2 80 Brian sub4
3 79 Bran sub3
4 97 Bryce sub6
5 88 Betty sub5