DataFrame (데이터프레임) 은 여러개의 Series가 모여서 이룬 행*열 데이터이다.
흔히 생각하는 "표" 와 같다.
데이터베이스의 기반이 된다.
#Series는 인덱스를 가진 하나의 "컬럼(열)" 이라고 보면 된다.
1. DataFrame(데이터프레임) 만들기
- 이름을 인덱스로 가지는 3개의 시리즈가 있다. (gender/age/job)
- 이 3개의 시리즈를 이어 붙여서 하나의 family_df 데이터프레임을 만들었다.
- 시리즈끼리 누락되어있는 인덱스 값은 자동으로 NaN 으로 들어간다.
import numpy as np
import pandas as pd
gender_series = pd.Series(['Female','Female','Male', 'Male'], index = ['Skyler','Mary','Hank','Flin'])
age_series = pd.Series([38,25,30], index = ['Skyler','Mary','Hank'])
job_series = pd.Series(["Accountant","Doctor","DEA","Student"],['Skyler','Mary','Hank','Flin'])
family_df = pd.DataFrame({"Gender":gender_series, "Age":age_series, "Job":job_series})
# 결과
Gender Age Job
Flin Male NaN Student
Hank Male 30.0 DEA
Mary Female 25.0 Doctor
Skyler Female 38.0 Accountant
다음과 같은 데이터프레임이 만들어 졌다.
Gender | Age | Job | |
Flin | Male | NaN | Student |
Hank | Male | 30 | DEA |
Mary | Female | 25 | Doctor |
Skyler | Female | 38 | Accountant |
2. 데이터프레임에 새로운 컬럼 추가하기
import numpy as np
import pandas as pd
#2. 특정 시리즈를 데이터프레임에 칼럼으로 추가하기
tall_series = pd.Series([170,183,165,178],
index = ['Skyler','Hank','Mary','Flin'])
family_df["Tall"] = tall_series
# 결과
Gender Age Job Tall
Flin Male NaN Student 178
Hank Male 30.0 DEA 183
Mary Female 25.0 Doctor 165
Skyler Female 38.0 Accountant 170
Gender | Age | Job | Tall | |
Flin | Male | NaN | Student | 178 |
Hank | Male | 30 | DEA | 183 |
Mary | Female | 25 | Doctor | 165 |
Skyler | Female | 38 | Accountant | 170 |
위와 같이 Tall 시리즈를 이용해서 컬럼을 추가했다.
3. 데이터프레임에 새로운 열(Row) 추가하기
3-1) 리스트로 추가하기 : 컬럼의 순서(gender/age/job/tall)에 맞게 리스트요소를 입력해야 한다.
3-2) 딕셔너리로 추가하기 : 순서에 상관없이 key 값과 value값이 서로 호응 하면 된다.
import numpy as np
import pandas as pd
#3. 새로운 데이터를 데이터프레임에 행(row)으로 추가하기
#3-1) 리스트로 추가하기
family_df.loc['Walt'] = ['Male',50, 'Teacher', 180]
# 결과
Gender Age Job Tall
Flin Male NaN Student 178
Hank Male 30.0 DEA 183
Mary Female 25.0 Doctor 165
Skyler Female 38.0 Accountant 170
Walt Male 50.0 Teacher 180
#3-2) 딕셔너리로 추가하기
family_df.loc['Zessi'] = {'Gender':'Male','Job':'Dealer', 'Tall':170, 'Age':23}
# 결과
Gender Age Job Tall
Flin Male NaN Student 178
Hank Male 30.0 DEA 183
Mary Female 25.0 Doctor 165
Skyler Female 38.0 Accountant 170
Walt Male 50.0 Teacher 180
Zessi Male 23.0 Dealer 170
4. 데이터프레임에 빈 칼럼 추가하기
- Weight라는 이름의 빈 칼럼을 추가 하였다
- np.nan 을 사용하였다.
4-1) .loc를 사용하여 행과 열을 지정하여 특정 데이터 하나를 입력할 수있다.
import numpy as np
import pandas as pd
#4. 빈 칼럼을 데이터프레임에 추가하기
family_df['Weight']=np.nan
# 결과
Gender Age Job Tall Weight
Flin Male NaN Student 178 NaN
Hank Male 30.0 DEA 183 NaN
Mary Female 25.0 Doctor 165 NaN
Skyler Female 38.0 Accountant 170 NaN
Walt Male 50.0 Teacher 180 NaN
Zessi Male 23.0 Dealer 170 NaN
#4-1) 빈 칼럼에 특정 데이터 하나 넣기
family_df.loc['Flin','Weight'] = 70
#
Gender Age Job Tall Weight
Flin Male NaN Student 178 70.0
Hank Male 30.0 DEA 183 NaN
Mary Female 25.0 Doctor 165 NaN
Skyler Female 38.0 Accountant 170 NaN
Walt Male 50.0 Teacher 180 NaN
Zessi Male 23.0 Dealer 170 NaN
5. 컬럼끼리의 연산으로 새로운 컬럼 데이터 생성하고 추가하기
- 인덱스로 컬럼데이터를 불러와서 서로 연산을 할 수 있다.
- .fillna(0) 으로 NaN 데이터를 0으로 변경하여 연산을 수행 하였다.
import numpy as np
import pandas as pd
#5. 인덱스로 불러온 시리즈끼리 연산해서 새로운 칼럼추가하기
family_df['Number'] = family_df['Tall'].fillna(0)*family_df['Age'].fillna(0)
# 결과
Gender Age Job Tall Weight Number
Flin Male NaN Student 178 70.0 0.0
Hank Male 30.0 DEA 183 NaN 5490.0
Mary Female 25.0 Doctor 165 NaN 4125.0
Skyler Female 38.0 Accountant 170 NaN 6460.0
Walt Male 50.0 Teacher 180 NaN 9000.0
Zessi Male 23.0 Dealer 170 NaN 3910.0
6. 특정 컬럼 선택하여 새로운 데이터프레임에 저장하기
- 열(Row)을 선택하는 방법은 인덱스처럼 불러오는 것이다.
- 복수의 열이 필요할 때는 인덱스 안에 리스트로 필요한 열을 가져올 수 있다.
- 행(column)을 선택하는 방법은 .loc로 인덱스를 불러오는 것이다.
- 복수의 행이 필요할 때에는 .loc[a:b] 로 범위를 지정하여 불러올 수있다.
import numpy as np
import pandas as pd
#6. 데이터프레임에서 특정 행열 선택해서 신규 데이터프레임 만들기
#열선택
body_data = family_df[['Tall', 'Weight']]
# 결과
Tall Weight
Flin 178 70.0
Hank 183 NaN
Mary 165 NaN
Skyler 170 NaN
Walt 180 NaN
Zessi 170 NaN
#행선택
Woman_df = pd.DataFrame(family_df.loc["Mary":"Skyler"])
# 결과
Gender Age Job Tall Weight Number
Mary Female 25.0 Doctor 165 NaN 4125.0
Skyler Female 38.0 Accountant 170 NaN 6460.0
'programming' 카테고리의 다른 글
[React] 사파리 '홈 화면에 추가' 시 앱 이름 변경하기 (0) | 2021.12.21 |
---|---|
[Python] 파이썬 파일 다루기 / 파일 저장하기 / 파일 읽기 (0) | 2021.12.13 |
[Python] 파이썬 Pandas(판다스) 활용하여 시리즈(Series) 만들기 (0) | 2021.12.12 |
[Python] 파이썬 Numpy(넘파이) 배열 마스킹 (0) | 2021.12.11 |
[Python] 파이썬 Numpy(넘파이)로 생성한 배열의 특징과 관련 함수/메서드 (0) | 2021.12.11 |