datascienceschool / book

23 stars 23 forks source link

01%20python/04.05%20%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%94%84%EB%A0%88%EC%9E%84%20%EC%9D%B8%EB%8D%B1%EC%8A%A4%20%EC%A1%B0%EC%9E%91 #62

Open utterances-bot opened 2 years ago

utterances-bot commented 2 years ago

4.5 데이터프레임 인덱스 조작 — 데이터 사이언스 스쿨

https://datascienceschool.net/01%20python/04.05%20%EB%8D%B0%EC%9D%B4%ED%84%B0%ED%94%84%EB%A0%88%EC%9E%84%20%EC%9D%B8%EB%8D%B1%EC%8A%A4%20%EC%A1%B0%EC%9E%91.html

lacking-in-thought commented 2 years ago

np.random.seed(0) df_score3=pd.DataFrame(np.vstack([list('AAAAABBBBB'), np.array([i for i in range(1,6)]*2) ,np.random.randint(1,101,size=(3,10))]).T ,columns=['반','번호','국어','영어','수학']) df_score3

df_score4=df_score3.set_index(['반','번호']) df_score4['평균']=df_score4.apply(lambda x: np.round((int(x['국어'])+int(x['영어'])+int(x['수학']))/3),axis=1) df_score4

근데 dfscore3을 어캐 변형해야 열 인덱스를 만드나요

CreatorHun commented 2 years ago

df_score5 = df_score3.set_index(["반", "번호"]) df_score5 = df_score5.unstack("반")

lysnjn commented 2 years ago

4.5.2

1) np.random.seed(0) grade1 = np.random.randint(0,101,(5,3)) class1 = np.random.randint(1,4, (5,1)) number1 = np.random.randint(1,31, (5,1)) df_score3 = pd.DataFrame(np.hstack([grade1,class1,number1]), columns=["국어","영어","수학","반","번호"])

2) df_score4 = df_score3.set_index(['반','번호']).sort_index(level=0)

3) df_score4.loc[:, ("","평균점수")] = df_score4.mean(axis = 1)

4) df_score5 = df_score3.set_index(['반','번호']).unstack('반') df_score5.columns.names = ['과목', '반']

5) df_score5.loc[("평균점수"), :] = df_score5.mean()

Cheon-Young-Hwa commented 7 months ago

4.5.2번의 3번 평균 구하는데 값이 십만단위가 넘는 값이 나오는데 왜 그런걸까요?

np.random.seed(0) df_score3 = pd.DataFrame(np.vstack([np.array(list('AAAAABBBBB')), np.array([i for i in range(1, 6)]*2), np.random.randint(1, 101, (3, 10))]).T, columns=['반', '번호', '국어', '영어', '수학'])

df_score4 = df_score3.set_index(['반', '번호']) df_score4.loc[:,'평균'] = df_score4.mean(axis=1) df_score4

fckapp commented 4 months ago

연습문제 4.5.2

1번 np.random.seed(1) df_score3 = pd.DataFrame( np.vstack([list("AAAAABBBBB"), np.random.randint(0, 100, size=(4, 10))]).T, columns=["반", "번호", "국어", "영어", "수학"], )

2번 df_score4 = df_score3.set_index(["반", "번호"])

3번 df_score4["평균"] = df_score4.loc[slice(None), "국어" : ].astype("int").mean(axis=1).round(2)

4번 df_score5 = df_score3.set_index(["번호","반"]) df_score5.columns.names = ["과목"] df_score5 = df_score5.unstack("반")

5번 df_score5.loc["평균", :] = df_score5.fillna(int(0)).astype("int").mean() df_score5

fckapp commented 4 months ago

4.5.2번의 3번 평균 구하는데 값이 십만단위가 넘는 값이 나오는데 왜 그런걸까요?

np.random.seed(0) df_score3 = pd.DataFrame(np.vstack([np.array(list('AAAAABBBBB')), np.array([i for i in range(1, 6)]*2), np.random.randint(1, 101, (3, 10))]).T, columns=['반', '번호', '국어', '영어', '수학'])

df_score4 = df_score3.set_index(['반', '번호']) df_score4.loc[:,'평균'] = df_score4.mean(axis=1) df_score4

답변: 평균값이 숫자형인지 문자열인지 확인해보시면 될 것 같습니다.