본문 바로가기
개발일지/Pandas

pandas 틀린부분 복기8 merge, add, 등 2개 이상의 파일 붙이고, 가공하기

by 다니엘의 개발 이야기 2022. 8. 8.
320x100

이번 파트는 정말 최악이였다.

난이도가 최악이라기 보다는

내 자신의 태도가 최악이였다.

그간, 수술이니 뭐니 쓰잘대기 없는 것들을 너무 많이 하느라.

이 핑계, 저 핑계대면서 집중을 못했다.

그 결과가 이거다.

 

한 챕터 진행하는데, 순수하게 2일이상을 소비하고, 

말이 2일 이상이지, 그러다보니 집중력도 흐트러 져서 아무것도 남지 않게 되었다.

두번다시는 이러지 말자.

정말 열이 안받을 수가 없었다.

대 부분의 문제가 모르는 것이였다.

심지어 대부분의 문제에 대한 해석이 되질않았다.

번역기를 써도 안될 수준이라면 말 다했지.

이것이 지금의 내 상태다.

 

여기 챕터가 난이도가 어려운건 분명 아니였다.

그럼에도 몰랐다.

정신차리자.

 

# 기본

#run the cell
import pandas as pd

#run the cell
cars = pd.read_csv("cars_clean.csv")

#run the cell
cars_jap = pd.read_csv("cars_jap.csv")
# 문제1 Insert the column origin to cars_jap at the most appropriate position! Fill in the gaps!

# 이 부분은 origin이라는 새로운 컬럼에 뭘 넣으라는건지 당췌 이해가 안갔다.
# 내 코드
# cars_jap.origin(---, ---, "japan")

# 답안 코드
# 7번 컬럼의 자리에 / 'origin'이라는 이름의 컬럼을 넣어주고 / 'japan'이라는 값으로 채워넣어주라.
cars_jap.insert(7, 'origin', 'japan')

# 컬럼 추가
# 컬럼 값 추가


# 문제2 Overwrite the column labels in cars_jap and use the same column labels that we have in cars!

# 아것도 컬럼 라벨을 이용하라는 내용 같은데 당췌 이해가 안간다.
# cars의 컬럼 레이블과 같은 이름을 써라? 컬럼 이름을 cars의 컬럼 이름으로 덮어 쓰라는 건가?
cars_jap.shape
# (79, 9)
cars.shape
# (313, 9)
# cars_jap이나 cars모두 컬럼 값이 9개인건 동일하다. 덮어쓰는거 가능할 것같다.
# 근데 어떻게 덮어 쓰는건지 모르겠다.
# cars_jap.rename(columns = {})
# 뭐 이런걸 생각하기도 했었는데, 이건 컬럼 값 자체의 글씨를 따오는 것이기 때문에 의미가 없다고 보인다.

# 답안 코드
cars_jap.columns = cars.columns

# 여기까지 봤는데도 모르는게 수두룩 하구나..
# 흐름을 끊어먹으면서 공부하면 정말 이게 휘발성이 강해서 더 남질 않는것 같다.


# run the cell!
summer = pd.read_csv("summer.csv")
# run the cell!
dic = pd.read_csv("dictionary.csv")
# 문제3 Create the columns Country, Population and GDP per Capita in the summer DataFrame by using a Left Join with pd.merge().
# Save the merged Dataframe in the variable summer_new! Fill in the gaps!

# merge로 새로운 컬럼을 생성한다?
# 새로 생성하는 컬럼이 3개인데 이미 있는 값이다?
# 어디에 어떤 걸 넣어야 할지 기준을 못정하겠다.

# 답안으로 점철되어서 찾을 수 밖에 없는 한계에 열받는다.
# 그만큼 더 기억하고 또 기억하자.
# summer_new = pd.merge(---, ---, how = "left", left_on= ---, right_on = ---)

summer_new = pd.merge(summer, dic, how = 'left', left_on = 'Country', right_on = 'Code')

'''

    Year	City	Sport	Discipline	Athlete	Country_x	Gender	Event	Medal	Country_y	Code	Population	GDP per Capita
0	1896	Athens	Aquatics	Swimming	HAJOS, Alfred	HUN	Men	100M Freestyle	Gold	Hungary	HUN	9844686.0	12363.543460
1	1896	Athens	Aquatics	Swimming	HERSCHMANN, Otto	AUT	Men	100M Freestyle	Silver	Austria	AUT	8611088.0	43774.985174
2	1896	Athens	Aquatics	Swimming	DRIVAS, Dimitrios	GRE	Men	100M Freestyle For Sailors	Bronze	Greece	GRE	10823732.0	18002.230578
3	1896	Athens	Aquatics	Swimming	MALOKINIS, Ioannis	GRE	Men	100M Freestyle For Sailors	Gold	Greece	GRE	10823732.0	18002.230578
4	1896	Athens	Aquatics	Swimming	CHASAPIS, Spiridon	GRE	Men	100M Freestyle For Sailors	Silver	Greece	GRE	10823732.0	18002.230578
...	...	...	...	...	...	...	...	...	...	...	...	...	...
31160	2012	London	Wrestling	Wrestling Freestyle	JANIKOWSKI, Damian	POL	Men	Wg 84 KG	Bronze	Poland	POL	37999494.0	12554.547554
31161	2012	London	Wrestling	Wrestling Freestyle	REZAEI, Ghasem Gholamreza	IRI	Men	Wg 96 KG	Gold	Iran	IRI	79109272.0	NaN
31162	2012	London	Wrestling	Wrestling Freestyle	TOTROV, Rustam	RUS	Men	Wg 96 KG	Silver	Russia	RUS	144096812.0	9092.580536
31163	2012	London	Wrestling	Wrestling Freestyle	ALEKSANYAN, Artur	ARM	Men	Wg 96 KG	Bronze	Armenia	ARM	3017712.0	3489.127690
31164	2012	London	Wrestling	Wrestling Freestyle	LIDBERG, Jimmy	SWE	Men	Wg 96 KG	Bronze	Sweden	SWE	9798871.0	50579.673649
31165 rows × 13 columns
'''


# 문제4 Filter summer_new for the elements in the column Country_x, where the corresponding value in the column Code is missing!
# Count the frequency! Fill in the gaps!

# 와.. 열받네.. 뭐 다 까먹은것 같다.

# summer_new.loc[summer_new.Code.---, "Country_x"].---

# 답안 코드
summer_new.loc[summer_new.Code.isnull(), 'Country_x'].value_counts()

'''
URS    2049
GDR     825
ROU     640
FRG     490
YUG     435
TCH     329
EUA     260
EUN     223
ZZX      48
SRB      31
ANZ      29
RU1      17
MNE      14
TTO      10
BOH       7
BWI       5
SGP       4
IOP       3
Name: Country_x, dtype: int64
'''


#run the cell
ath_2008 = pd.read_csv("ath_2008.csv")
ath_2012 = pd.read_csv("ath_2012.csv")
ath_2008.set_index('Athlete', inplace = True)
ath_2012.set_index('Athlete', inplace = True)
# 문제5 Add both DataFrames with the most appropriate method! Save the resulting DataFrame in the variable add!

# 문제의 흐름을 정확히 파악 못하겠다.
# 그 만큼 명확히 알지를 못한다는 소리밖엔 되지 않는다.
# ath_2008.merge(ath_2012, how = 'outer', on = 'Athlete')

# 답안 코드
add = ath_2008.add(ath_2012, fill_value = 0)
# fill_value? 이게 뭘까
# 결측값을 0으로 대체해 줘라. 라는 의미같다.
# 결측값 대체

 

이번 챕터는 내 자신이 얼마나 나태한지, 얼마나 잘하는게 아직 없는 주제에 집중도 안하고 있는지 되돌아보는 시간이였다.

두번다시는 결코 이딴 태도로 공부하지 말자.

 

시간을 보냈다고해서, 진도를 나갔다고해서.

그것들이 나의 실력을 보증해주는 건 아니다.

그것들을 하는 과정에서 내가 어떤 태도로 임했고, 어떤것들을 쌓아올렸는지가 정말 중요하다.

그것들은 겉으로 절대 드러나지 않는다.

그러나, 어느 시점에 이르러서는 내가 표현하려고 안해도 겉으로 표출되게 될것이다.

나 자신을 속이지 마라

남들 다 속여도 나 자신은 나에게 속지 않는다.

300x250