csv 파일을 dataframe으로 읽어오기

In [4]:
import pandas as pd

df1 = pd.read_csv("./sungjuk.csv")

df1
Out[4]:
번호 이름 성별 국어 영어 수학
0 1 강민경 98 96 76
1 2 강순애 94 79 60
2 3 강영하 55 47 93
3 4 강혜정 99 76 78
4 5 권명숙 98 73 61
... ... ... ... ... ... ...
95 96 하혜연 96 96 71
96 97 한경규 96 94 95
97 98 한수정 93 97 77
98 99 한의병 93 59 63
99 100 한정희 93 78 52

100 rows × 6 columns

In [5]:
import pandas as pd
import seaborn as sns

df2 = sns.load_dataset('titanic')
df2
Out[5]:
survived pclass sex age sibsp parch fare embarked class who adult_male deck embark_town alive alone
0 0 3 male 22.0 1 0 7.2500 S Third man True NaN Southampton no False
1 1 1 female 38.0 1 0 71.2833 C First woman False C Cherbourg yes False
2 1 3 female 26.0 0 0 7.9250 S Third woman False NaN Southampton yes True
3 1 1 female 35.0 1 0 53.1000 S First woman False C Southampton yes False
4 0 3 male 35.0 0 0 8.0500 S Third man True NaN Southampton no True
... ... ... ... ... ... ... ... ... ... ... ... ... ... ... ...
886 0 2 male 27.0 0 0 13.0000 S Second man True NaN Southampton no True
887 1 1 female 19.0 0 0 30.0000 S First woman False B Southampton yes True
888 0 3 female NaN 1 2 23.4500 S Third woman False NaN Southampton no False
889 1 1 male 26.0 0 0 30.0000 C First man True C Cherbourg yes True
890 0 3 male 32.0 0 0 7.7500 Q Third man True NaN Queenstown no True

891 rows × 15 columns

dataframe의 행(row)와 열(column) 선택하기

열(column) 선택

In [8]:
df1['국어']
df1[['국어','영어']]
df1.국어
Out[8]:
0     98
1     94
2     55
3     99
4     98
      ..
95    96
96    96
97    93
98    93
99    93
Name: 국어, Length: 100, dtype: int64

행(row) 선택

In [10]:
df1.loc[1]
df1.iloc[1]
Out[10]:
번호      2
이름    강순애
성별      여
국어     94
영어     79
수학     60
Name: 1, dtype: object

원소 선택

In [26]:
df1.loc[1,'이름']
#df1.loc[[1,2], '이름']
#df1.loc[[1,2], ['이름', '국어']]
#df1.loc[1:3]
#df1.loc[1:3, '이름':'수학']

#df1.iloc[1,1]
#df1.iloc[[1,2],1]
#df1.iloc[[1,2],[1,2]]
#df1.iloc[1:3]
#df1.iloc[1:3, 1:3]
Out[26]:
이름 성별
1 강순애
2 강영하

dataframe 만들기

In [21]:
import pandas as pd

df = pd.DataFrame(
    [['hong',90, 88, 78], ['gil',95, 89,98], ['dong',85, 98, 67] ]
    , columns=['name','kor', 'eng', 'mat']
    , index=['2', '4', '6']
)

df
#df.loc[2]
#df.iloc[2]
#df.loc['2']
Out[21]:
name    hong
kor       90
eng       88
mat       78
Name: 2, dtype: object
In [40]:
import pandas as pd

df = pd.DataFrame(
    { 'name': ['hong', 'gil', 'dong'],'kor' :[90, 95, 85], 
    'eng' : [88, 89, 98],   'mat' : [78, 76, 67]}        
)
df.columns = ['name','kor', 'eng', 'mat']
df.index = [202100001,202100002,202100003]

df
#df.loc[2]
#df.loc[202100001]
#df.loc['202100001']
#df.iloc[2]
#df.iloc['202100001']
Out[40]:
name kor eng mat
202100001 hong 90 88 78
202100002 gil 95 89 76
202100003 dong 85 98 67

행, 열, 원소 값 변경

In [46]:
df3 = df.copy()
#df3['kor'] = 100
#df3
#df3.loc[202100002] = ['길', 100, 100, 100]
#df3
#df3.loc[202100002, 'kor'] = 100
#df3
#df3.loc[202100002, ['kor', 'eng']] = 100
#df3
#df3.loc[202100002, ['kor', 'eng']] = [5, 6]
#df3
Out[46]:
name kor eng mat
202100001 hong 90 88 78
202100002 gil 5 6 76
202100003 dong 85 98 67

행/열 추가/삭제

In [59]:
df3 = df.copy()
#df3['sci'] = 100
#df3
#df3['sci'] = [10, 20, 30]
#df3
#df3['sci'] = df3['kor'] * 2
#df3
#df3.loc[202100004] = 100
#df3
#df3.loc[202100004] = ['sir', 100, 100, 100]
#df3

#df3.drop('name', axis=1)
#df3
#df3.drop('name', axis=1, inplace=True)
#df3
#df3 = df3.drop('name', axis=1)
#df3

#df3.drop(202100002, axis=0)
#df3
#df3.drop(202100002, axis=0, inplace=True)
#df3
#df3 = df3.drop(202100002, axis=0)
#df3
Out[59]:
name kor eng mat
202100001 hong 90 88 78
202100003 dong 85 98 67

행과 열의 위치 변경

In [66]:
df3 = df.copy()
#df3.transpose()
#df3
#df3.transpose(inplace=True)
#df3
#df3 = df3.transpose()
#df3
#df3.T
#df3
#df3 = df3.T
#df3
Out[66]:
202100001 202100002 202100003
name hong gil dong
kor 90 95 85
eng 88 89 98
mat 78 76 67

특정 열을 행 인덱스로 설정

In [78]:
df3 = df.copy()
df3

#df3.set_index('name')
#df3
#df3 = df3.set_index('name')
#df3
df3.set_index('name', inplace=True)
df3

df3.loc['hong':'gil']
Out[78]:
kor eng mat
name
hong 90 88 78
gil 95 89 76

인덱스 기준으로 dataframe 정렬

In [89]:
df3 = df.copy()
df3

df3 = df3.sort_index(ascending=False)
df3
Out[89]:
name kor eng mat
202100003 dong 85 98 67
202100002 gil 95 89 76
202100001 hong 90 88 78
In [ ]:

In [ ]:

In [ ]: