320x100
# Series 생성
df2 = pd.Series(index = player, data = nationality, name = 'Nationality').to_frame()
df2
'''
Nationality
(Argentina, FC Barcelona, False, 1.7, 45) Argentina
(Portugal, Juventus FC, False, 1.87, 44) Portugal
(Brasil, Paris SG, False, 1.75, 28) Brasil
(France, Paris SG, True, 1.78, 21) France
(Germany, FC Bayern, True, 1.93, 0) Germany
'''
# Creating DataFrames from Scratch with pd.DataFrame()
## Having Columns in place
import pandas as pd
player = ['Lionel Messi', 'Cristiano Ronaldo', 'Neymar Junior', 'Kylian Mbappe', 'Manuel Neuer']
nationality = ['Argentina', 'Portugal', 'Brasil', 'France', 'Germany']
club = ['FC Barcelona', 'Juventus FC', 'Paris SG', 'Paris SG', 'FC Bayern']
world_champion = [False, False, False, True, True]
height = [1.70, 1.87, 1.75, 1.78, 1.93]
goals = [45,44,28,21,0]
dic = {'Player':player, 'Nationality':nationality, 'Club':club,
'World_Champion':world_champion, 'Height':height, 'Gorls_2018':goals}
dic
df = pd.DataFrame(data = dic)
df
'''
Player Nationality Club World_Champion Height Gorls_2018
0 Lionel Messi Argentina FC Barcelona False 1.70 45
1 Cristiano Ronaldo Portugal Juventus FC False 1.87 44
2 Neymar Junior Brasil Paris SG False 1.75 28
3 Kylian Mbappe France Paris SG True 1.78 21
4 Manuel Neuer Germany FC Bayern True 1.93 0
'''
# Player를 행 인덱스의 기준으로 잡아주기
players = df.set_index('Player')
players
## Having Rows in place (zip 함수 이용)
# zip은 각각 리스트화 되어있는 1,2,3,4,5 의 숫자리스트와 a,b,c,d,e 와 같은 리스트를 세로 배열로 재정의하여 재 튜플화 해주는 함수다.
# (1,a), (2,b)와 같이
zipped = list(zip(nationality, club, world_champion, height, goals))
'''
[('Argentina', 'FC Barcelona', False, 1.7, 45),
('Portugal', 'Juventus FC', False, 1.87, 44),
('Brasil', 'Paris SG', False, 1.75, 28),
('France', 'Paris SG', True, 1.78, 21),
('Germany', 'FC Bayern', True, 1.93, 0)]
'''
# zip으로 특성을 정리해 주었다면, 그 특성들이 어디에 부여가 되는지도 정리해줘야한다.
player = zipped
# Lionel Messi
player[0]
# ('Argentina', 'FC Barcelona', False, 1.7, 45)
df = pd.DataFrame(data = player,
index = ['Lionel Messi', 'Cristiano Ronaldo', 'Neymar Junior', 'Kylian Mbappe', 'Manuel Neuer'],
columns = ['Nationality', 'Club', 'World_Champion', 'Height', 'Goals_2018']
)
df2['Club'] = club
df2
## Adding new Rows (hands-on approach)
### Adding one Row
players
'''
Nationality Club World_Champion Height Gorls_2018
Player
Lionel Messi Argentina FC Barcelona False 1.70 45
Cristiano Ronaldo Portugal Juventus FC False 1.87 44
Neymar Junior Brasil Paris SG False 1.75 28
Kylian Mbappe France Paris SG True 1.78 21
Manuel Neuer Germany FC Bayern True 1.93 0
'''
# 기존에 Player라고 rows index에 기준으로 설정되어있는 값이 있었다.
players.reset_index(inplace=True)
players
'''
Player Nationality Club World_Champion Height Gorls_2018
0 Lionel Messi Argentina FC Barcelona False 1.70 45
1 Cristiano Ronaldo Portugal Juventus FC False 1.87 44
2 Neymar Junior Brasil Paris SG False 1.75 28
3 Kylian Mbappe France Paris SG True 1.78 21
4 Manuel Neuer Germany FC Bayern True 1.93 0
'''
# reset_index를 통해서 해당 set_index가 해제되게 되고 general한 시트로 변경되게 된다.
# players의 5번 row index에 (6번째 자리에) []에 들어가는 자료들을 넣어주자.
players.loc[5, :] = ['Sergio Ramos', 'Spain', 'Real Madrid', True, 1.84, 5]
players
## Adding many Rows
new = pd.DataFrame(
data = [
['Mohamed Salah', 'Egypt', 'FC Liverpool', False, 1.75, 44],
['Luis Suarez', 'Urguay', 'FC Barcelona', False, 1.82, 31]],
columns = players.columns
)
new
# merge, concat과 같은 기능을 한다.
players = players.append(new, ignore_index = True)
players
300x250
'개발일지 > Pandas' 카테고리의 다른 글
pandas 판다스 기초 11 체인인덱싱(chain indexing) 피하기, copy, 올바른 값 변경해주기 (0) | 2022.07.19 |
---|---|
pandas 판다스 틀린부분 복기2 (0) | 2022.07.18 |
pandas (판다스) 기초9 **중요** filtering with any, all, between, isin, 열, 행 삭제 추가하기 (0) | 2022.07.18 |
pandas (판다스) 기초 8 and, or (0) | 2022.07.18 |
pandas (판다스) 기초 7 filtering (0) | 2022.07.18 |