본문 바로가기
개발일지/Pandas

pandas (판다스) 기초9 **중요** filtering with any, all, between, isin, 열, 행 삭제 추가하기

by 개발에정착하고싶다 2022. 7. 18.
320x100
import pandas as pd

summer = pd.read_csv('summer.csv')
og_1988 = summer.loc[summer.Year == 1988]
og_1988.info()

'''
<class 'pandas.core.frame.DataFrame'>
Int64Index: 1546 entries, 18051 to 19596
Data columns (total 9 columns):
 #   Column      Non-Null Count  Dtype 
---  ------      --------------  ----- 
 0   Year        1546 non-null   int64 
 1   City        1546 non-null   object
 2   Sport       1546 non-null   object
 3   Discipline  1546 non-null   object
 4   Athlete     1546 non-null   object
 5   Country     1546 non-null   object
 6   Gender      1546 non-null   object
 7   Event       1546 non-null   object
 8   Medal       1546 non-null   object
dtypes: int64(1), object(8)
memory usage: 120.8+ KB
'''
og_since1992 = summer.loc[summer.Year >= 1992]
og_since1992
# 연속적으로 펼쳐져 있는 기간 안에서 원하는 값을 찾는 방법
# summer 이라는 변수의 Year 컬럼 중에서 1960 부터 1969 사이의 값

# inclusive 는 경계값을 포함할건지 말지를 선택하는 설정이다.
# 설정해주면 1960~ 1969, False로 하면 1961~1968
og_60s = summer.loc[summer.Year.between(1960, 1969, inclusive=True)]
og_60s.tail()
# 불 연속적으로 펼쳐져 있는 기간 안에서 원하는 값을 찾는 방법 isin

# 1
choosen_year = [1972,1996]
og_72_96 = summer.loc[summer.Year.isin(choosen_year)]
og_72_96
# 안에 들어있는 행 값을 unique로 확인
og_not_72_96 = summer.loc[~summer.Year.isin(choosen_year)]
og_not_72_96.Year.unique()
## any() and all()
import pandas as pd
titanic = pd.read_csv('titanic.csv')
(titanic.sex == 'male').any()

# True
# any()는 해당되는 값이 단 하나라도 있다면 True 를 반환한다.
(titanic.sex == 'male').all()

# False
(titanic.age == 80.0).any()

# True
# all()은 모든 원소가 해당이 되어야 True를 반환 한다.
pd.Series([-1, 0.5, 1, -0.1, 0]).all()

# False


## Removing Columns 열 삭제하기 ** 중요 **

import pandas as pd

summer = pd.read_csv('summer.csv')
summer.head()
# inplace = True 를 해줘야 적용된다.
summer.drop(columns = 'Sport')
# 다중컬럼 drop하기 원할때
summer.drop(columns = ['Sport', 'Discipline'])
# inplace = True 없이 바로 삭제된다.
del summer['Event']
summer = pd.read_csv('summer.csv')
summer.drop(labels = 'Event', axis = 'columns')
# 남기고 싶은 열의 갯수가 적을때는 이렇게 일일이 타이핑해주고
summer = summer.loc[:, ['Year', 'City', 'Athlete', 'Country', 'Gender', 'Medal']]
summer.head()
# 남기고 싶은 열의 갯수가 많을때는 drop 메소드로 삭제해준다.
summer.drop(columns= ['City', 'Year'])
# 물론 변형까지 원한다면 inplace = True로 해준다.


## Removing Rows 행 삭제하기 **중요**

import pandas as pd

summer = pd.read_csv('summer.csv', index_col = 'Athlete')
summer.head()
# # 행 삭제방법 1 index
summer.drop(index = ['HAJOS, Alfred', 'HERSCHMANN, Otto'], inplace=True)
summer
# 행 삭제방법 2 labels
summer.drop(labels = 'DRIVAS, Dimitrios', axis = 0, inplace=True)
summer
summer = summer.loc[summer.Year == 1996]
summer.head()
summer = pd.read_csv('summer.csv', index_col = 'Athlete')
summer
mask1 = summer.Year == 1996
mask2 = summer.Sport == 'Aquatics'
summer.loc[~(mask1|mask2)]
(summer.Year == 1996).value_counts
'''
False    29306
True      1859
Name: Year, dtype: int64
'''
1996 in summer.Year.values
summer.Sport.isin(['Aquatics']).any()
# True
(summer.Sport == 'Aquatics').any()
# True
(summer.Sport == 'Aquatics').any()
# True


## Adding new Columns to a DataFrame 열 추가

import pandas as pd

titanic = pd.read_csv('titanic.csv')
titanic.head()
# 정말 흥미로운 부분이다. 보통 변수[컬럼] 과 변수.컬럼 은 같다고 배웠다.
# 하지만 여기서는 변수[컬럼] = 설정값을 입력할 경우 컬럼이 추가되지만
# 변수.컬럼 = 설정값 을 입력할 경우, 출력값이 리턴되긴 하지만 컬럼이 추가되진 않는다.

# 변수[컬럼] = 설정값 버전
titanic['Zeros'] = 0
titanic.head()
# 변수.컬럼 = 설정값 버전

titanic.Ones = 1
titanic.head()


## Creating Columns based on other columns

import pandas as pd

titanic = pd.read_csv('titanic.csv')
titanic.head()
# 일종의 반복문 (루프) 이다.
# 타이타닉 침몰 연도가 1912년이였고, 이를 바탕으로 탑승자 전원 각각의 출생년도를 확인하고자 한다.

1912 - titanic.age

'''
0      1890.0
1      1874.0
2      1886.0
3      1877.0
4      1877.0
        ...  
886    1885.0
887    1893.0
888       NaN
889    1886.0
890    1880.0
Name: age, Length: 891, dtype: float64
'''
# 동 탑승자중, 형제, 자매 등 가족의 수가 3명 초과일 경우의 수는?
(titanic.sibsp + titanic.parch > 3).value_counts()

'''
False    829
True      62
dtype: int64
'''
# relatives 컬럼 추가하기

titanic['relatives'] = titanic.sibsp + titanic.parch
titanic.head()
titanic.drop(columns = ['sibsp', 'parch'], inplace=True)
titanic
# 물가가 100배 올랐다고 가정하고 변수 지정
inflation_factor = 100

present_time_value = titanic.fare * inflation_factor
# 기존에 있던 열에 변형된 값을 심어주기
titanic.fare = present_time_value
titanic


## Adding Columns with insert() 새 열(컬럼)을 특정한 위치에 넣어주기

import pandas as pd

titanic = pd.read_csv('titanic.csv')
titanic.head()
titanic['Test'] = 'Test'
titanic
relatives = titanic.sibsp + titanic.parch
relatives.head()
# 위치, 컬럼명, 컬럼 값으로 들어갈 것
titanic.insert(loc = 6, column = 'relatives', value = relatives)
titanic
300x250