1. DataFrame Source
grade_dic = {
'국어': [98, 88, 92, 63, None],
'영어': [None, 90, 70, 60, 50],
'수학': [88, 62, None, 31, None],
'과학': [64, 72, None, 70, 88]
}
import pandas
from pandas import DataFrame
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.loc['모리'] = [100, 20, 30, 50]
df.loc['모리'] = {'국어' : 100, '영어' : 20, '수학' : 30, '과학' : 50}
+------+-------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+-------+------+------+------+
| 코난 | 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 |
| 모리 | 100.0 | 20.0 | 30.0 | 50.0 |
+------+-------+------+------+------+
Process finished with exit code 0
df.loc['모리'] = df.loc['코난']
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 코난 | 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 |
| 모리 | 98.0 | nan | 88.0 | 64.0 |
+------+------+------+------+------+
Process finished with exit code 0
4. 단일 행 삭제 : 복사본에 반영
df = df.drop('코난')
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 뭉치 | 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
5. 여러 행 삭제 : 복사본에 반영
df = df.drop(['코난', '뭉치'])
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 아름 | 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
6. 인덱싱 삭제
df = df.drop(df.index[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
df = df.drop(df.index[2:4])
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 코난 | 98.0 | nan | 88.0 | 64.0 |
| 뭉치 | 88.0 | 90.0 | 62.0 | 72.0 |
| 장미 | nan | 50.0 | nan | 88.0 |
+------+------+------+------+------+
Process finished with exit code 0
7. 결과 반환없이 삭제(원본 적용)
df = df.drop(['코난', '세모'], inplace=True)
None
Process finished with exit code 0
print(df)
+------+------+------+------+------+
| | 국어 | 영어 | 수학 | 과학 |
+------+------+------+------+------+
| 뭉치 | 88.0 | 90.0 | 62.0 | 72.0 |
| 아름 | 92.0 | 70.0 | nan | nan |
| 장미 | nan | 50.0 | nan | 88.0 |
+------+------+------+------+------+
Process finished with exit code 0
'Python_Intermediate > Pandas' 카테고리의 다른 글
Python Pandas 박스오피스 180505 순위 분석 (0) | 2019.05.06 |
---|---|
Data Preprocessing(데이터 전처리) - 열 추가, 삭제 (0) | 2019.05.04 |
Data Preprocessing(데이터 전처리) - 기초 (0) | 2019.05.04 |
Pandas Aggregate Function(Pandas 집계 함수) (0) | 2019.05.04 |
Pandas Basic(Pandas 기초) (0) | 2019.05.04 |