파이썬 2차원 리스트 질문드립니다.
조회수 2354회
안녕하세요. 리스트안의 리스트에서 평균을 구하는 함수를 만들려 합니다.
grades = [
['Student', 'Quiz 1', 'Quiz 2', 'Quiz 3'],
['Joe', 100, 90, 80],
['McD', 88, 99, 111],
['Ruta', 50, 56, 67],
['Kang', 60, 62, 67],
['Samanda', 70, 79, 88],
['Mina', 98, 99, 100]]
첫번째 리스트는 설명을 하고 두번째 리스트부터는 데이터를 담고있습니다. 그리고 두번째 리스트의 첫번째 데이터는 string입니다.
코딩이 익숙하지않아 어디서부터 시작을 해야할지 감을 못잡겠습니다... 인터넷에서 2차원리스트에 관한 글들을 읽어보아도 이해가 잘 되지가 않네요...ㅎㅎㅎ
average = sum(maria.values()) / len(maria)
value()를 이용해서 숫자만 빼내려해도 뜻대로 되지는 않더라구요 어떤 방식으로 접근하는게 좋을까요?
-
(•́ ✖ •̀)
알 수 없는 사용자
4 답변
-
pandas 를 이용하는 방법입니다.
>>> import pandas as pd >>> grades = [ ['Student', 'Quiz 1', 'Quiz 2', 'Quiz 3'], ['Joe', 100, 90, 80], ['McD', 88, 99, 111], ['Ruta', 50, 56, 67], ['Kang', 60, 62, 67], ['Samanda', 70, 79, 88], ['Mina', 98, 99, 100]] >>> df = pd.DataFrame(grades[1:], columns=grades[0]) >>> df Student Quiz 1 Quiz 2 Quiz 3 0 Joe 100 90 80 1 McD 88 99 111 2 Ruta 50 56 67 3 Kang 60 62 67 4 Samanda 70 79 88 5 Mina 98 99 100 >>> df['Average'] = df.apply(lambda row:(row['Quiz 1']+row['Quiz 2']+row['Quiz 3'])/3, axis=1) >>> df Student Quiz 1 Quiz 2 Quiz 3 Average 0 Joe 100 90 80 90.000000 1 McD 88 99 111 99.333333 2 Ruta 50 56 67 57.666667 3 Kang 60 62 67 63.000000 4 Samanda 70 79 88 79.000000 5 Mina 98 99 100 99.000000 >>>
- 정말 감사드립니다 ㅎㅎ panda를 사용하는 방법이 가장 편한방법인가요? 그렇다면 공부를 좀 해봐야겠군요 알 수 없는 사용자 2019.9.6 13:32
- 가장 편한 방법은 아닐 수도 있어요. 테이블형태의 자료를 이케저케 조작(평균내고, 소팅하고, 그래프그리고, 등등)하는 데에는 확실히 편리한 방법이고요. 그냥 숙제라면 더 간단하게 for 루프에서 처리하는 게 더 쉽고 그렇죠. nowp 2019.9.6 14:49
- 혹시 평균값들만을 리스트로 출력시키려면 어떤 방법이 있을까요? 위의 예시를 들자면 [90, 99, 57, 63, 79, 99]이런 식으로요 알 수 없는 사용자 2019.9.6 16:53
- df.Average : pandas series, df.Average.values : numpy array, list(df.Average.values) : 리스트 nowp 2019.9.6 20:00
- df.iloc[:, 4].tolist() 하시면 됩니다 알 수 없는 사용자 2019.9.6 21:33
- 정말 감사드립니다! 알 수 없는 사용자 2019.9.7 06:18
-
dictionary를 이용한 방법
grades = [] grades.append({'student':'Joe', 'Quiz 1':100, 'Quiz 2':90, 'Quiz 3':80}) grades.append({'student':'McD', 'Quiz 1':88, 'Quiz 2':99, 'Quiz 3':111}) grades.append({'student':'Ruta', 'Quiz 1':50, 'Quiz 2':56, 'Quiz 3':67}) grades.append({'student':'Kang', 'Quiz 1':60, 'Quiz 2':62, 'Quiz 3':67}) grades.append({'student':'Samanda', 'Quiz 1':70, 'Quiz 2':79, 'Quiz 3':88}) grades.append({'student':'Mina', 'Quiz 1':98, 'Quiz 2':99, 'Quiz 3':100}) for list in grades: print ('average of student', list.get('student'), (list.get('Quiz 1') +list.get('Quiz 2')+list.get('Quiz 3'))/3 )
>>> average of student Joe 90.0 average of student McD 99.33333333333333 average of student Ruta 57.666666666666664 average of student Kang 63.0 average of student Samanda 79.0 average of student Mina 99.0
-
하기와 같이 dictionary comprehension 을 이용할 수 있습니다.
grades = [ ['Student', 'Quiz 1', 'Quiz 2', 'Quiz 3'], ['Joe', 100, 90, 80], ['McD', 88, 99, 111], ['Ruta', 50, 56, 67], ['Kang', 60, 62, 67], ['Samanda', 70, 79, 88], ['Mina', 98, 99, 100]] {row[0] : sum(row[1:]) / len(row[1:]) for row in grades[1:]} {'Joe': 90.0, 'McD': 99.33333333333333, 'Ruta': 57.666666666666664, 'Kang': 63.0, 'Samanda': 79.0, 'Mina': 99.0}
-
댓글 입력