본문 바로가기

Python_Intermediate/Pandas

Data Preprocessing(데이터 전처리) - 열 추가, 삭제

1. DataFrame Source

import pandas
from pandas import DataFrame
from pandas import Series
from prettytable import PrettyTable

df = DataFrame(grade_dic, index=['코난', '뭉치', '아름', '세모', '장미'])

if isinstance(df, pandas.core.frame.DataFrame):
table = PrettyTable([''] + list(df.columns))
for row in df.itertuples():
table.add_row(row)

print(str(table))

else:
print(df)

+------+------+------+------+------+

|      | 국어 | 영어 | 수학 | 과학 |

+------+------+------+------+------+

| 코난 | 98.0 | nan  | 88.0 | 64.0 |

| 뭉치 | 88.0 | 90.0 | 62.0 | 72.0 |

| 아름 | 92.0 | 70.0 | nan  | nan  |

| 세모 | 63.0 | 60.0 | 31.0 | 70.0 |

| 장미 | nan  | 50.0 | nan  | 88.0 |

+------+------+------+------+------+


Process finished with exit code 0


2. 열 추가

df['컴퓨터'] = [10, 50, 70, 100, 50]
df['컴퓨터'] = Series([10, 50, 70, 100, 50], index=['코난', '뭉치', '아름', '세모', '장미'])

+------+------+------+------+------+--------+

|      | 국어 | 영어 | 수학 | 과학 | 컴퓨터 |

+------+------+------+------+------+--------+

| 코난 | 98.0 | nan  | 88.0 | 64.0 |   10   |

| 뭉치 | 88.0 | 90.0 | 62.0 | 72.0 |   50   |

| 아름 | 92.0 | 70.0 | nan  | nan  |   70   |

| 세모 | 63.0 | 60.0 | 31.0 | 70.0 |  100   |

| 장미 | nan  | 50.0 | nan  | 88.0 |   50   |

+------+------+------+------+------+--------+


Process finished with exit code 0


길이가 다를시 에러 : ValueError: Length of values does not match length of index

3. 열 삭제
df = df.drop('수학', axis = 1)

+------+------+------+------+

|      | 국어 | 영어 | 과학 |

+------+------+------+------+

| 코난 | 98.0 | nan  | 64.0 |

| 뭉치 | 88.0 | 90.0 | 72.0 |

| 아름 | 92.0 | 70.0 | nan  |

| 세모 | 63.0 | 60.0 | 70.0 |

| 장미 | nan  | 50.0 | 88.0 |

+------+------+------+------+


Process finished with exit code 0


4. 여러 열 삭제
df = df.drop(['수학','영어'], axis = 1)

+------+------+------+

|      | 국어 | 과학 |

+------+------+------+

| 코난 | 98.0 | 64.0 |

| 뭉치 | 88.0 | 72.0 |

| 아름 | 92.0 | nan  |

| 세모 | 63.0 | 70.0 |

| 장미 | nan  | 88.0 |

+------+------+------+


Process finished with exit code 0


5. 인덱싱 삭제
df = df.drop(df.columns[2], axis = 1)

+------+------+------+------+

|      | 국어 | 영어 | 과학 |

+------+------+------+------+

| 코난 | 98.0 | nan  | 64.0 |

| 뭉치 | 88.0 | 90.0 | 72.0 |

| 아름 | 92.0 | 70.0 | nan  |

| 세모 | 63.0 | 60.0 | 70.0 |

| 장미 | nan  | 50.0 | 88.0 |

+------+------+------+------+


Process finished with exit code 0

df = df.drop(df.columns[1:3], axis = 1)

+------+------+------+

|      | 국어 | 과학 |

+------+------+------+

| 코난 | 98.0 | 64.0 |

| 뭉치 | 88.0 | 72.0 |

| 아름 | 92.0 | nan  |

| 세모 | 63.0 | 70.0 |

| 장미 | nan  | 88.0 |

+------+------+------+


Process finished with exit code 0


6. 열 조회(필터링)

df = df.filter(items=['국어','수학'])

+------+------+------+

|      | 국어 | 수학 |

+------+------+------+

| 코난 | 98.0 | 88.0 |

| 뭉치 | 88.0 | 62.0 |

| 아름 | 92.0 | nan  |

| 세모 | 63.0 | 31.0 |

| 장미 | nan  | nan  |

+------+------+------+


Process finished with exit code 0