In [1]:
import pandas as pd
In [3]:
friend_list = [
{'name':'John','age': 15, 'job': 'student'},
{'name':'Jenny','age': 25, 'job': 'developer'},
{'name':'Nate','age': 30, 'job': 'teacher'},
]
df = pd.DataFrame(friend_list, columns = ['name','age','job'])
df
Out[3]:
name | age | job | |
---|---|---|---|
0 | John | 15 | student |
1 | Jenny | 25 | developer |
2 | Nate | 30 | teacher |
열 생성¶
In [4]:
# salary열 생성
df['salary'] = 0
df
Out[4]:
name | age | job | salary | |
---|---|---|---|---|
0 | John | 15 | student | 0 |
1 | Jenny | 25 | developer | 0 |
2 | Nate | 30 | teacher | 0 |
In [6]:
# 연봉삽입(학생제외)
import numpy as np
df['salary'] = np.where(df['job'] != 'student', 'yes', 'no')
df
Out[6]:
name | age | job | salary | |
---|---|---|---|---|
0 | John | 15 | student | no |
1 | Jenny | 25 | developer | yes |
2 | Nate | 30 | teacher | yes |
In [7]:
#데이터 수정
friend_list = [
{'name':'John','mid': 95, 'final': 85},
{'name':'Jenny','mid': 85, 'final': 80},
{'name':'Nate','mid': 30, 'final': 10},
]
df = pd.DataFrame(friend_list, columns = ['name','mid','final'])
df
Out[7]:
name | mid | final | |
---|---|---|---|
0 | John | 95 | 85 |
1 | Jenny | 85 | 80 |
2 | Nate | 30 | 10 |
In [10]:
#총점 열 생성
df['total'] = df['mid']+ df['final']
df
Out[10]:
name | mid | final | total | |
---|---|---|---|---|
0 | John | 95 | 85 | 180 |
1 | Jenny | 85 | 80 | 165 |
2 | Nate | 30 | 10 | 40 |
In [13]:
#평균 열 생성
df['average'] = df['total']/2
df
Out[13]:
name | mid | final | total | average | |
---|---|---|---|---|---|
0 | John | 95 | 85 | 180 | 90.0 |
1 | Jenny | 85 | 80 | 165 | 82.5 |
2 | Nate | 30 | 10 | 40 | 20.0 |
In [14]:
# 등급 열 생성
grades = []
for row in df['average']:
if row >= 90:
grades.append('A')
elif row >= 80:
grades.append('B')
else:
grades.append('F')
df['grades'] = grades
df
Out[14]:
name | mid | final | total | average | grades | |
---|---|---|---|---|---|---|
0 | John | 95 | 85 | 180 | 90.0 | A |
1 | Jenny | 85 | 80 | 165 | 82.5 | B |
2 | Nate | 30 | 10 | 40 | 20.0 | F |
In [16]:
# pass fail로 바꾸기
def pass_or_fail(row):
if row != 'F':
return "Pass"
else:
return "Fail"
In [19]:
df.grades = df.grades.apply(pass_or_fail)
df
Out[19]:
name | mid | final | total | average | grades | |
---|---|---|---|---|---|---|
0 | John | 95 | 85 | 180 | 90.0 | Pass |
1 | Jenny | 85 | 80 | 165 | 82.5 | Pass |
2 | Nate | 30 | 10 | 40 | 20.0 | Pass |
In [21]:
data_list = [
{
'yyyy-mm-dd': '2000-06-27'
},
{
'yyyy-mm-dd': '2007-10-27'
}
]
df = pd.DataFrame(data_list, columns = ['yyyy-mm-dd'])
df
Out[21]:
yyyy-mm-dd | |
---|---|
0 | 2000-06-27 |
1 | 2007-10-27 |
In [22]:
# -으로 나눠지는 0번째 인자(년도)만 추출하는 함수
def extract_year(row):
return row.split('-')[0]
In [24]:
# 연도 열 생성
df['year'] = df['yyyy-mm-dd'].apply(extract_year)
df
Out[24]:
yyyy-mm-dd | year | |
---|---|---|
0 | 2000-06-27 | 2000 |
1 | 2007-10-27 | 2007 |
행 생성¶
In [25]:
#데이터 수정
friend_list = [
{'name':'John','mid': 95, 'final': 85},
{'name':'Jenny','mid': 85, 'final': 80},
{'name':'Nate','mid': 30, 'final': 10},
]
df = pd.DataFrame(friend_list, columns = ['name','mid','final'])
df
Out[25]:
name | mid | final | |
---|---|---|---|
0 | John | 95 | 85 |
1 | Jenny | 85 | 80 |
2 | Nate | 30 | 10 |
In [27]:
df2 = pd.DataFrame([['Ben', 50,50]], columns = ['name', 'mid', 'final'])
df2
Out[27]:
name | mid | final | |
---|---|---|---|
0 | Ben | 50 | 50 |
In [29]:
# df에 추가
df.append(df2)
Out[29]:
name | mid | final | |
---|---|---|---|
0 | John | 95 | 85 |
1 | Jenny | 85 | 80 |
2 | Nate | 30 | 10 |
0 | Ben | 50 | 50 |
In [30]:
# df 인덱스번호 이어서 추가
df.append(df2, ignore_index = True)
Out[30]:
name | mid | final | |
---|---|---|---|
0 | John | 95 | 85 |
1 | Jenny | 85 | 80 |
2 | Nate | 30 | 10 |
3 | Ben | 50 | 50 |
In [ ]:
'데이터 전처리(Python Pandas)' 카테고리의 다른 글
Pandas 기초 9 (중복데이터 삭제) (0) | 2021.01.27 |
---|---|
Pandas 기초 8 (데이터 그룹화 및 그룹데이터 생성) (0) | 2021.01.27 |
Pandas 기초 5 (데이터프레임 행,열 삭제) (0) | 2021.01.26 |
Pandas 기초 4(데이터프레임 필터링) (0) | 2021.01.26 |
Pandas 기초 3(데이터프레임파일 저장) (0) | 2021.01.26 |