In [1]:
from google.colab import drive
drive.mount('/content/drive')
Mounted at /content/drive
In [3]:
import pandas as pd
import numpy as np
배열의 브로드캐스트¶
In [8]:
x = np.arange(5)
y = np.ones_like(x)
print('x=',x)
print('y=',y)
print('x+y=',x+y)
print('x+1=',x+1)
x= [0 1 2 3 4] y= [1 1 1 1 1] x+y= [1 2 3 4 5] x+1= [1 2 3 4 5]
In [17]:
x = np.array([[0,0,0],
[1,1,1],
[2,2,2],
[3,3,3],
[4,4,4]])
y = np.arange(1,4)
print('y=',y)
print('x+y=',x+y)
y= [1 2 3] x+y= [[1 2 3] [2 3 4] [3 4 5] [4 5 6] [5 6 7]]
In [16]:
x = np.array([[0,0,0],
[1,1,1],
[2,2,2],
[3,3,3],
[4,4,4]])
y = np.arange(1,6)[:,np.newaxis]
print('y=',y)
print('x+y=',x+y)
y= [[1] [2] [3] [4] [5]] x+y= [[1 1 1] [3 3 3] [5 5 5] [7 7 7] [9 9 9]]
판다스¶
딕셔너리를 이용하여, 시리즈 생성¶
In [19]:
import pandas as pd
dict_data = {'a':1, 'b':2, 'c':3}
sr = pd.Series(dict_data)
print(sr)
print(type(sr))
a 1 b 2 c 3 dtype: int64 <class 'pandas.core.series.Series'>
리스트를 이용하여 시리즈 생성¶
In [29]:
list_data = ['칠판', '보드마카', '모니터', 123, 'abd']
sr = pd.Series(list_data)
print(sr)
print('\n')
print('type:', type(sr))
print('\n')
print('index:', sr.index)
print('value:', sr.values)
0 칠판 1 보드마카 2 모니터 3 123 4 abd dtype: object type: <class 'pandas.core.series.Series'> index: RangeIndex(start=0, stop=5, step=1) value: ['칠판' '보드마카' '모니터' 123 'abd']
튜플을 이용해 시리즈 생성¶
In [30]:
tuple_data = ('칠판', '보드마카', '모니터', 123, 'abd')
sr = pd.Series(tuple_data, index = ['강의도구','필기도구','시각도구','숫자','알파벳'])
print(sr)
print('\n')
print('type:', type(sr))
print('\n')
print('index:', sr.index)
print('value:', sr.values)
강의도구 칠판 필기도구 보드마카 시각도구 모니터 숫자 123 알파벳 abd dtype: object type: <class 'pandas.core.series.Series'> index: Index(['강의도구', '필기도구', '시각도구', '숫자', '알파벳'], dtype='object') value: ['칠판' '보드마카' '모니터' 123 'abd']
값 추출¶
In [40]:
list_data = ['칠판', '보드마카', '모니터', 123, 'abd']
sr = pd.Series(list_data, index = ['강의도구','필기도구','시각도구','숫자','알파벳'])
print(sr)
print('\n')
print(sr[[0,2]])
print(sr[['강의도구','필기도구']])
강의도구 칠판 필기도구 보드마카 시각도구 모니터 숫자 123 알파벳 abd dtype: object 강의도구 칠판 시각도구 모니터 dtype: object 강의도구 칠판 필기도구 보드마카 dtype: object
슬라이싱을 사용해 값 추출¶
In [45]:
list_data = ['칠판', '보드마카', '모니터', 123, 'abd']
sr = pd.Series(list_data, index = ['강의도구','필기도구','시각도구','숫자','알파벳'])
print(sr)
print('\n')
print(sr[0:2])
print(sr['강의도구':'필기도구'])
강의도구 칠판 필기도구 보드마카 시각도구 모니터 숫자 123 알파벳 abd dtype: object 강의도구 칠판 필기도구 보드마카 dtype: object 강의도구 칠판 필기도구 보드마카 dtype: object
In [47]:
dict_data = {'a':[1,2,3], 'b':[1,2,3], 'c':[1,2,3]}
df = pd.DataFrame(dict_data)
print(df)
print('type:',type(df))
a b c 0 1 1 1 1 2 2 2 2 3 3 3 type: <class 'pandas.core.frame.DataFrame'>
열 이름, 행 인덱스 따로 지정¶
In [54]:
df = pd.DataFrame([[22, '남', '서울'],
[21, '여', '부산']],
index=['규석', '혜림'],
columns=['나이', '성별', '지역'])
df
Out[54]:
| 나이 | 성별 | 지역 | |
|---|---|---|---|
| 규석 | 22 | 남 | 서울 |
| 혜림 | 21 | 여 | 부산 |
In [55]:
df.index = ['주혁','지혜']
df.columns = ['연령',' 남여', '출신']
df
Out[55]:
| 연령 | 남여 | 출신 | |
|---|---|---|---|
| 주혁 | 22 | 남 | 서울 |
| 지혜 | 21 | 여 | 부산 |
행 인덱스와 열 이름을 선택하여 바꾸기¶
In [60]:
df = pd.DataFrame([[22, '남', '서울'],
[21, '여', '부산']],
index=['규석', '혜림'],
columns=['나이', '성별', '지역'])
df.rename(index = {'규석':'세용'}, inplace=True)
df.rename(columns = {'나이':'Age', '성별':'남여'}, inplace=True)
df
Out[60]:
| Age | 남여 | 지역 | |
|---|---|---|---|
| 세용 | 22 | 남 | 서울 |
| 혜림 | 21 | 여 | 부산 |
행 제거¶
In [70]:
exam_data = {'국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data, index = ['학생1', '학생2', '학생3'])
df2 = df[:]
df2.drop(index = '학생3', inplace = True) #학생3 인덱스에 대한 데이터 삭제
df2.drop(columns = '과학', inplace=True) #과학 컬럼 삭제
display('df2', df2)
df3 = df[:]
df3.drop(index=['학생1','학생2'], axis = 0,inplace=True) #axis = 0 >>> 행삭제이다
display('df3:', df3)
<ipython-input-70-fbc78f756d11>:6: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df2.drop(index = '학생3', inplace = True) #학생3 인덱스에 대한 데이터 삭제 <ipython-input-70-fbc78f756d11>:7: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df2.drop(columns = '과학', inplace=True) #과학 컬럼 삭제
'df2'
| 국어 | 수학 | 영어 | |
|---|---|---|---|
| 학생1 | 90 | 100 | 70 |
| 학생2 | 85 | 80 | 85 |
<ipython-input-70-fbc78f756d11>:11: SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy df3.drop(index=['학생1','학생2'], axis = 0,inplace=True) #axis = 0 >>> 행삭제이다
'df3:'
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생3 | 75 | 60 | 90 | 95 |
행 선택¶
In [75]:
exam_data = {'국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data, index = ['학생1','학생2','학생3'])
display('df',df)
label = df.loc[['학생1','학생2']]
display('label', label)
position = df.iloc[[0,2]]
display('position', position)
'df'
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
'label'
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
'position'
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생1 | 90 | 100 | 70 | 65 |
| 학생3 | 75 | 60 | 90 | 95 |
열 선택¶
In [85]:
exam_data = {'국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data, index = ['학생1','학생2','학생3'])
display('df',df)
math1 = df[['수학']]
display('math1', math1)
math_science = df[['수학','과학']]
display('math_science', math_science)
'df'
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
'math1'
| 수학 | |
|---|---|
| 학생1 | 100 |
| 학생2 | 80 |
| 학생3 | 60 |
'math_science'
| 수학 | 과학 | |
|---|---|---|
| 학생1 | 100 | 65 |
| 학생2 | 80 | 100 |
| 학생3 | 60 | 95 |
In [87]:
exam_data = {'국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data, index = ['학생1','학생2','학생3'])
display('df.iloc[::2]', df.iloc[::2])
'df.iloc[::2]'
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생1 | 90 | 100 | 70 | 65 |
| 학생3 | 75 | 60 | 90 | 95 |
In [93]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace = True)
display(df)
print('\n')
display('학생2의 수학점수_los', df.loc['학생2','수학'])
display('학생2의 수학점수_iloc,', df.iloc[1,1])
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생명 | ||||
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
'학생2의 수학점수_los'
80
'학생2의 수학점수_iloc,'
80
In [94]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace = True)
display(df)
print('\n')
display('학생2의 수학, 과학 점수_los', df.loc['학생2',['수학','과학']])
display('학생2의 수학, 과학 점수_iloc,', df.iloc[1,[1,3]])
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생명 | ||||
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
'학생2의 수학, 과학 점수_los'
수학 80 과학 100 Name: 학생2, dtype: int64
'학생2의 수학, 과학 점수_iloc,'
수학 80 과학 100 Name: 학생2, dtype: int64
In [97]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace = True)
display(df)
print('\n')
display('학생2의 수학, 과학 점수_los', df.loc['학생2','수학':'과학'])
display('학생2의 수학, 과학 점수_iloc,', df.iloc[1,1:])
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생명 | ||||
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
'학생2의 수학, 과학 점수_los'
수학 80 영어 85 과학 100 Name: 학생2, dtype: int64
'학생2의 수학, 과학 점수_iloc,'
수학 80 영어 85 과학 100 Name: 학생2, dtype: int64
In [102]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data)
display(df)
df.loc[3] = 0
df.loc['행4'] = ['학생4',90,80,100,90]
df
| 학생명 | 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|---|
| 0 | 학생1 | 90 | 100 | 70 | 65 |
| 1 | 학생2 | 85 | 80 | 85 | 100 |
| 2 | 학생3 | 75 | 60 | 90 | 95 |
Out[102]:
| 학생명 | 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|---|
| 0 | 학생1 | 90 | 100 | 70 | 65 |
| 1 | 학생2 | 85 | 80 | 85 | 100 |
| 2 | 학생3 | 75 | 60 | 90 | 95 |
| 3 | 0 | 0 | 0 | 0 | 0 |
| 행4 | 학생4 | 90 | 80 | 100 | 90 |
원소 변경¶
In [106]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace=True)
display(df)
df.loc['학생1','국어'] = 95
df.iloc[1,1] = 85
display(df)
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생명 | ||||
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생명 | ||||
| 학생1 | 95 | 100 | 70 | 65 |
| 학생2 | 85 | 85 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
In [110]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace=True)
display(df)
df.loc['학생2',['국어','영어']] = [90,90]
df.iloc[2,[0,1]] = [80,65]
display(df)
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생명 | ||||
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생명 | ||||
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 90 | 80 | 90 | 100 |
| 학생3 | 80 | 65 | 90 | 95 |
행/열 위치 변경¶
In [114]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data)
display(df)
df2 = df.T
display(df2)
print('df2.index:',df2.index)
| 학생명 | 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|---|
| 0 | 학생1 | 90 | 100 | 70 | 65 |
| 1 | 학생2 | 85 | 80 | 85 | 100 |
| 2 | 학생3 | 75 | 60 | 90 | 95 |
| 0 | 1 | 2 | |
|---|---|---|---|
| 학생명 | 학생1 | 학생2 | 학생3 |
| 국어 | 90 | 85 | 75 |
| 수학 | 100 | 80 | 60 |
| 영어 | 70 | 85 | 90 |
| 과학 | 65 | 100 | 95 |
df2.index: Index(['학생명', '국어', '수학', '영어', '과학'], dtype='object')
In [116]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace=True)
display(df)
df2 = df.T
display(df2)
print('df2.index:',df2.index)
print('d2.columns', df2.columns)
| 국어 | 수학 | 영어 | 과학 | |
|---|---|---|---|---|
| 학생명 | ||||
| 학생1 | 90 | 100 | 70 | 65 |
| 학생2 | 85 | 80 | 85 | 100 |
| 학생3 | 75 | 60 | 90 | 95 |
| 학생명 | 학생1 | 학생2 | 학생3 |
|---|---|---|---|
| 국어 | 90 | 85 | 75 |
| 수학 | 100 | 80 | 60 |
| 영어 | 70 | 85 | 90 |
| 과학 | 65 | 100 | 95 |
df2.index: Index(['국어', '수학', '영어', '과학'], dtype='object') d2.columns Index(['학생1', '학생2', '학생3'], dtype='object', name='학생명')
행 인덱스 지정¶
In [119]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95], '학번':[202001,202002,202003]}
df = pd.DataFrame(exam_data)
df.set_index(['학생명','학번'], inplace=True)
display(df)
| 국어 | 수학 | 영어 | 과학 | ||
|---|---|---|---|---|---|
| 학생명 | 학번 | ||||
| 학생1 | 202001 | 90 | 100 | 70 | 65 |
| 학생2 | 202002 | 85 | 80 | 85 | 100 |
| 학생3 | 202003 | 75 | 60 | 90 | 95 |
행 인덱스 재배열¶
In [124]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95], '학번':[202001,202002,202003]}
df = pd.DataFrame(exam_data)
df2 = df.reindex([1, 2, 0, 10, 20])
display(df2)
| 학생명 | 국어 | 수학 | 영어 | 과학 | 학번 | |
|---|---|---|---|---|---|---|
| 1 | 학생2 | 85.0 | 80.0 | 85.0 | 100.0 | 202002.0 |
| 2 | 학생3 | 75.0 | 60.0 | 90.0 | 95.0 | 202003.0 |
| 0 | 학생1 | 90.0 | 100.0 | 70.0 | 65.0 | 202001.0 |
| 10 | NaN | NaN | NaN | NaN | NaN | NaN |
| 20 | NaN | NaN | NaN | NaN | NaN | NaN |
행 정렬(내림차순)¶
In [128]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95], '학번':[202001,202002,202003]}
df = pd.DataFrame(exam_data)
display(df)
df1 = df.sort_index(ascending=False) #오름차순 정렬시 ascending = True
display(df1)
| 학생명 | 국어 | 수학 | 영어 | 과학 | 학번 | |
|---|---|---|---|---|---|---|
| 0 | 학생1 | 90 | 100 | 70 | 65 | 202001 |
| 1 | 학생2 | 85 | 80 | 85 | 100 | 202002 |
| 2 | 학생3 | 75 | 60 | 90 | 95 | 202003 |
| 학생명 | 국어 | 수학 | 영어 | 과학 | 학번 | |
|---|---|---|---|---|---|---|
| 2 | 학생3 | 75 | 60 | 90 | 95 | 202003 |
| 1 | 학생2 | 85 | 80 | 85 | 100 | 202002 |
| 0 | 학생1 | 90 | 100 | 70 | 65 | 202001 |
열 정렬¶
In [132]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95], '학번':[202001,202002,202003]}
df = pd.DataFrame(exam_data)
display(df)
df1 = df.sort_values(by='국어', ascending=True) #오름차순
display(df1)
df2 = df.sort_values(by='과학', ascending=False) #내림차순
display(df2)
| 학생명 | 국어 | 수학 | 영어 | 과학 | 학번 | |
|---|---|---|---|---|---|---|
| 0 | 학생1 | 90 | 100 | 70 | 65 | 202001 |
| 1 | 학생2 | 85 | 80 | 85 | 100 | 202002 |
| 2 | 학생3 | 75 | 60 | 90 | 95 | 202003 |
| 학생명 | 국어 | 수학 | 영어 | 과학 | 학번 | |
|---|---|---|---|---|---|---|
| 2 | 학생3 | 75 | 60 | 90 | 95 | 202003 |
| 1 | 학생2 | 85 | 80 | 85 | 100 | 202002 |
| 0 | 학생1 | 90 | 100 | 70 | 65 | 202001 |
| 학생명 | 국어 | 수학 | 영어 | 과학 | 학번 | |
|---|---|---|---|---|---|---|
| 1 | 학생2 | 85 | 80 | 85 | 100 | 202002 |
| 2 | 학생3 | 75 | 60 | 90 | 95 | 202003 |
| 0 | 학생1 | 90 | 100 | 70 | 65 | 202001 |
시리즈와 숫자 연산¶
In [136]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95], '학번':[202001,202002,202003]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace=True)
display(df)
sr = df['국어']/10
sr
| 국어 | 수학 | 영어 | 과학 | 학번 | |
|---|---|---|---|---|---|
| 학생명 | |||||
| 학생1 | 90 | 100 | 70 | 65 | 202001 |
| 학생2 | 85 | 80 | 85 | 100 | 202002 |
| 학생3 | 75 | 60 | 90 | 95 | 202003 |
Out[136]:
학생명 학생1 9.0 학생2 8.5 학생3 7.5 Name: 국어, dtype: float64
시리즈와 시리즈 연산¶
In [140]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95], '학번':[202001,202002,202003]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace=True)
display(df)
sr = df['국어'] + df['수학']
sr
| 국어 | 수학 | 영어 | 과학 | 학번 | |
|---|---|---|---|---|---|
| 학생명 | |||||
| 학생1 | 90 | 100 | 70 | 65 | 202001 |
| 학생2 | 85 | 80 | 85 | 100 | 202002 |
| 학생3 | 75 | 60 | 90 | 95 | 202003 |
Out[140]:
학생명 학생1 190 학생2 165 학생3 135 dtype: int64
In [147]:
exam_data = {'학생명' : ['학생1','학생2','학생3'], '국어':[90,85,75], '수학':[100,80,60], '영어':[70,85,90], '과학':[65,100,95], '음악':[80,90,np.nan], '학번':[202001,202002,202003]}
df = pd.DataFrame(exam_data)
df.set_index('학생명', inplace=True)
display(df)
sr = df['국어'] + df['음악'] #nan연산은 nan이된다
sr2 = df['국어'].add(df['음악'], fill_value = 0) #nan은 0으로 처리하고 연산을 하게됨
df2 = pd.DataFrame([df['국어'], df['음악'], sr2])
df2
| 국어 | 수학 | 영어 | 과학 | 음악 | 학번 | |
|---|---|---|---|---|---|---|
| 학생명 | ||||||
| 학생1 | 90 | 100 | 70 | 65 | 80.0 | 202001 |
| 학생2 | 85 | 80 | 85 | 100 | 90.0 | 202002 |
| 학생3 | 75 | 60 | 90 | 95 | NaN | 202003 |
Out[147]:
| 학생명 | 학생1 | 학생2 | 학생3 |
|---|---|---|---|
| 국어 | 90.0 | 85.0 | 75.0 |
| 음악 | 80.0 | 90.0 | NaN |
| Unnamed 0 | 170.0 | 175.0 | 75.0 |
In [ ]:
'데이터 분석 기초' 카테고리의 다른 글
| 데이터 시각화(6.9) (0) | 2023.06.09 |
|---|---|
| 기술통계, 시각화(6.8) (0) | 2023.06.08 |
| numpy(6.5) (0) | 2023.06.05 |
| 16.퀴즈 (0) | 2023.03.15 |
| 15. 그룹화 (0) | 2023.03.15 |