| ID | 학교 | 학년 | 성적 |
|---|---|---|---|
| M000001 | 중 | 3 | 95 |
| M000002 | 고 | 2 | 73 |
| M000003 | 고 | 3 | 95 |
| M000004 | 고 | 1 | 93 |
| M000005 | 고 | 2 | 88 |
import pandas as pd
import numpy as npDataframe 상위 데이터 확인 (head)
df.head()
--------------------
ID 학교 학년 성적
0 M000001 고 1 76
1 M000002 중 2 84
2 M000003 중 2 69
3 M000004 고 1 73
4 M000005 중 3 70
Dataframe 데이터 정보 (info)
df.info()
--------------------
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 10 entries, 0 to 9
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 ID 10 non-null object
1 학교 10 non-null object
2 학년 10 non-null int64
3 성적 10 non-null int64
dtypes: int64(2), object(2)
memory usage: 448.0+ bytes
Dataframe 요약 정보 (describe)
df.describe()
--------------------
학년 성적
count 10.000000 10.00000
mean 1.800000 78.40000
std 0.632456 9.96884
min 1.000000 68.00000
25% 1.250000 70.75000
50% 2.000000 76.50000
75% 2.000000 82.75000
max 3.000000 100.00000
Dataframe Type 확인 (dtypes)
df.dtypes
--------------------
ID object
학교 object
학년 int64
성적 int64
dtype: object
Dataframe Column Value의 unique(유일성) 확인 (unique)
df["학교"].unique()
--------------------
array(['고', '중'], dtype=object)
Dataframe Column Value의 개수 확인 (value_counts)
df["학교"].value_counts()
--------------------
학교
고 5
중 5
Name: count, dtype: int64
df_sub = pd.DataFrame({"ID":["M000006"], "학교":["고"], "학년":[3], "성적":[72]})
df = pd.concat([df, df_sub], ignore_index=True)
df
--------------------
ID 학교 학년 성적 통과
0 M000001 고 1 100 False
1 M000002 중 2 80 False
2 M000003 중 2 69 False
3 M000004 고 1 73 False
4 M000005 중 3 70 False
5 M000006 고 3 72 NaNdf["통과"] = False
--------------------
ID 학교 학년 성적 통과
0 M000001 고 1 100 False
1 M000002 중 2 80 False
2 M000003 중 2 69 False
3 M000004 고 1 73 False
4 M000005 중 3 70 FalseRow의 데이터 수정
df.iloc[0, 3] = 100
--------------------
ID 학교 학년 성적
0 M000001 고 1 100
1 M000002 중 2 84
2 M000003 중 2 69
3 M000004 고 1 73
4 M000005 중 3 70df.loc[1,"성적"] = 80
--------------------
ID 학교 학년 성적
0 M000001 고 1 100
1 M000002 중 2 80
2 M000003 중 2 69
3 M000004 고 1 73
4 M000005 중 3 70조건을 만족하는 Row만 데이터 수정
df.loc[df["성적"]>70, "통과"] = True
--------------------
ID 학교 학년 성적 통과
0 M000001 고 1 100 True
1 M000002 중 2 80 True
2 M000003 중 2 69 False
3 M000004 고 1 73 True
4 M000005 중 3 70 False
5 M000006 고 3 72 True
df = df.replace({"통과":False}, "Drop")
df
--------------------
ID 학교 학년 성적 통과
0 M000001 고 1 100 True
1 M000002 중 2 80 True
2 M000003 중 2 69 Drop
3 M000004 고 1 73 True
4 M000005 중 3 70 Drop
5 M000006 고 3 72 True
행(Row)/열(Column) 변경
df.loc[4] = ["M000004", "고", 1, 85, True]
--------------------
ID 학교 학년 성적 통과
0 M000001 고 1 100 True
1 M000002 중 2 80 True
2 M000003 중 2 69 Drop
3 M000004 고 1 85 True
4 M000005 중 3 70 Dropdf = df.rename(columns={"ID":"ID", "학교":"School", "학년":"grade", "성적":"Score", "통과":"Pass"})
df
--------------------
ID School grade Score Pass
0 M000001 고 1 100 True
1 M000002 중 2 80 True
2 M000003 중 2 69 Drop
3 M000004 고 1 85 True
4 M000005 중 3 70 Dropdf.drop(5, axis=0)
--------------------
ID 학교 학년 성적 통과
0 M000001 고 1 100 True
1 M000002 중 2 80 True
2 M000003 중 2 69 Drop
3 M000004 고 1 73 True
4 M000005 중 3 70 Dropdf.drop("통과", axis=1)
--------------------
ID 학교 학년 성적
0 M000001 고 1 100
1 M000002 중 2 80
2 M000003 중 2 69
3 M000004 고 1 73
4 M000005 중 3 70