Posts Pandas를 이용한 Column 더하기
Post
Cancel

Pandas를 이용한 Column 더하기

0. 들어가며

  • 데이터 분석을 하다보면 Pandas를 많이 사용하게 된다.
  • 데이터들의 Column을 더하고 싶을때, 어떻게 하면 좋을까?
  • 만약 Column에 결측치가 있다면 어떻게 처리하면 될까?

1. Pandas를 이용해서 Titanic 데이터 Column 더하기

1
2
3
4
5
import pandas as pd


df = pd.read_csv('https://media.githubusercontent.com/media/hmkim312/datas/main/titanic/train.csv')
df.head()
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
1
df.info()
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 891 entries, 0 to 890
Data columns (total 12 columns):
 #   Column       Non-Null Count  Dtype  
---  ------       --------------  -----  
 0   PassengerId  891 non-null    int64  
 1   Survived     891 non-null    int64  
 2   Pclass       891 non-null    int64  
 3   Name         891 non-null    object 
 4   Sex          891 non-null    object 
 5   Age          714 non-null    float64
 6   SibSp        891 non-null    int64  
 7   Parch        891 non-null    int64  
 8   Ticket       891 non-null    object 
 9   Fare         891 non-null    float64
 10  Cabin        204 non-null    object 
 11  Embarked     889 non-null    object 
dtypes: float64(2), int64(5), object(5)
memory usage: 83.7+ KB
  • 타이타닉 데이터에서는 Null이 포함된 컬럼과 모두 수치가 들어가 있는 컬럼이 있다.
1
df.head()
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarked
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS
  • 이 중에서 SibSp(형제, 자매, 배우자의 합) + Parch (부모, 자식의 합) + 1(자기 자신)을 해서 Family_Size 컬럼을 만들어 본다.
1
2
df['Family_Size'] = df['SibSp'] + df['Parch'] + 1
df[['SibSp', 'Parch', 'Family_Size']]
SibSpParchFamily_Size
0102
1102
2001
3102
4001
............
886001
887001
888124
889001
890001

891 rows × 3 columns

  • int형 Column 2개를 더했기 때문에, 숫자를 더한값이 Family_Size가 되었다

2. Null이 있는 Column 더하기

  • 만일 Cabin과 Ticket Column과 같이 Null이 포함된 string형 Colummns 더하면 어떻게 될까?
1
df.head()
PassengerIdSurvivedPclassNameSexAgeSibSpParchTicketFareCabinEmbarkedFamily_SizeTicket_Cabin
0103Braund, Mr. Owen Harrismale22.010A/5 211717.2500NaNS2A/5 21171
1211Cumings, Mrs. John Bradley (Florence Briggs Th...female38.010PC 1759971.2833C85C2PC 17599C85
2313Heikkinen, Miss. Lainafemale26.000STON/O2. 31012827.9250NaNS1STON/O2. 3101282
3411Futrelle, Mrs. Jacques Heath (Lily May Peel)female35.01011380353.1000C123S2113803C123
4503Allen, Mr. William Henrymale35.0003734508.0500NaNS1373450
1
2
df['Ticket_Cabin'] = df['Ticket'] + df['Cabin']
df[['Ticket', 'Cabin', 'Ticket_Cabin']]
TicketCabinTicket_Cabin
0A/5 21171NaNNaN
1PC 17599C85PC 17599C85
2STON/O2. 3101282NaNNaN
3113803C123113803C123
4373450NaNNaN
............
886211536NaNNaN
887112053B42112053B42
888W./C. 6607NaNNaN
889111369C148111369C148
890370376NaNNaN

891 rows × 3 columns

  • Null이 포함된 Column을 더하게 되면 Null로 되게 된다.
  • 그렇다면 Null은 무시하고 더하는 방법은 무엇이 있을까?
1
2
df['Ticket_Cabin'] = df['Ticket'].fillna('') + df['Cabin'].fillna('')
df[['Ticket', 'Cabin', 'Ticket_Cabin']]
TicketCabinTicket_Cabin
0A/5 21171NaNA/5 21171
1PC 17599C85PC 17599C85
2STON/O2. 3101282NaNSTON/O2. 3101282
3113803C123113803C123
4373450NaN373450
............
886211536NaN211536
887112053B42112053B42
888W./C. 6607NaNW./C. 6607
889111369C148111369C148
890370376NaN370376

891 rows × 3 columns

  • NUll이 있는 컬럼에 fillna()를 사용해서 Null을 특정한 값으로 채워준후 두 컬럼을 더해주면 된다.
This post is licensed under CC BY 4.0 by the author.