728x90
Make New Columns¶
In [1]:
import pandas as pd
import seaborn as sns
import numpy as np
In [2]:
df = sns.load_dataset("iris")
df.head()
Out[2]:
sepal_length | sepal_width | petal_length | petal_width | species | |
---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa |
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa |
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa |
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa |
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa |
새로운 열 추가¶
단일 열 추가¶
In [3]:
df['all_length'] = df.sepal_length + df.petal_length
df
Out[3]:
sepal_length | sepal_width | petal_length | petal_width | species | all_length | |
---|---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa | 6.5 |
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa | 6.3 |
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa | 6.0 |
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa | 6.1 |
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa | 6.4 |
... | ... | ... | ... | ... | ... | ... |
145 | 6.7 | 3.0 | 5.2 | 2.3 | virginica | 11.9 |
146 | 6.3 | 2.5 | 5.0 | 1.9 | virginica | 11.3 |
147 | 6.5 | 3.0 | 5.2 | 2.0 | virginica | 11.7 |
148 | 6.2 | 3.4 | 5.4 | 2.3 | virginica | 11.6 |
149 | 5.9 | 3.0 | 5.1 | 1.8 | virginica | 11.0 |
150 rows × 6 columns
- 단일행을 추가하고 싶을때는 다음과 같은 방법으로 추가합니다..
여러 열 추가: assign¶
In [4]:
df = df.assign(sepal2=lambda df: df.sepal_length*df.sepal_width,
petal2=lambda df: df.petal_length*df.petal_width)
df
Out[4]:
sepal_length | sepal_width | petal_length | petal_width | species | all_length | sepal2 | petal2 | |
---|---|---|---|---|---|---|---|---|
0 | 5.1 | 3.5 | 1.4 | 0.2 | setosa | 6.5 | 17.85 | 0.28 |
1 | 4.9 | 3.0 | 1.4 | 0.2 | setosa | 6.3 | 14.70 | 0.28 |
2 | 4.7 | 3.2 | 1.3 | 0.2 | setosa | 6.0 | 15.04 | 0.26 |
3 | 4.6 | 3.1 | 1.5 | 0.2 | setosa | 6.1 | 14.26 | 0.30 |
4 | 5.0 | 3.6 | 1.4 | 0.2 | setosa | 6.4 | 18.00 | 0.28 |
... | ... | ... | ... | ... | ... | ... | ... | ... |
145 | 6.7 | 3.0 | 5.2 | 2.3 | virginica | 11.9 | 20.10 | 11.96 |
146 | 6.3 | 2.5 | 5.0 | 1.9 | virginica | 11.3 | 15.75 | 9.50 |
147 | 6.5 | 3.0 | 5.2 | 2.0 | virginica | 11.7 | 19.50 | 10.40 |
148 | 6.2 | 3.4 | 5.4 | 2.3 | virginica | 11.6 | 21.08 | 12.42 |
149 | 5.9 | 3.0 | 5.1 | 1.8 | virginica | 11.0 | 17.70 | 9.18 |
150 rows × 8 columns
- assign은 여러열을 추가하고 싶을때 사용하는 함수입니다.
- 다음은 sepal_length와 sepal_width을 곱하여 나온값을 Area라는 새로운 열로 추가합니다.
구간 나누기¶
In [5]:
pd.qcut(df.sepal2, 2, labels=False)
Out[5]:
0 1 1 0 2 0 3 0 4 1 .. 145 1 146 0 147 1 148 1 149 1 Name: sepal2, Length: 150, dtype: int64
qcut는 원하는 열의 구간을 나누어 주는 함수입니다.
옵션으로 숫자2를 입력하면 다음과 같이 2개의 구간으로 나누어줍니다.
In [6]:
pd.qcut(df.sepal2, 2, labels=["low", "high"])
Out[6]:
0 high 1 low 2 low 3 low 4 high ... 145 high 146 low 147 high 148 high 149 high Name: sepal2, Length: 150, dtype: category Categories (2, object): ['low' < 'high']
- 다음과 같이 labels 옵션을 사용하여 object형태로 표현할 수도 있습니다.
In [7]:
from IPython.core.display import display, HTML
display(HTML("<style>.container {width:90% !important;}</style>"))
'Python' 카테고리의 다른 글
[Pandas] Pandas Cheat Sheet(Group Data) (0) | 2021.06.24 |
---|---|
[Pandas] Pandas Cheat Sheet(Combine Data Sets) (0) | 2021.06.22 |
[Pandas] Pandas Cheat Sheet(Handling Missing Data) (0) | 2021.06.21 |
[Pandas] Pandas Cheat Sheet(Summarize Data) (0) | 2021.06.20 |
[Pandas] Pandas Cheat Sheet(Subset Variables (Columns)) (0) | 2021.06.20 |