cols = ['beer_servings', 'continent']
small_drinks = pd.read_csv('http://bit.ly/drinksbycountry', usecols=cols)
small_drinks.info()
본 글은 data school의 pandas tricks을 설명한 영상을 보고 작성한 글입니다.
pandas tricks은 데이터를 더 빠르고 보기 좋게 작성하는데 도움이 됩니다.
1. Pandas version 확인
#pandas 버전 확인
pd.__version__
#pandas 내부 속성 버전 확인
pd.show_versions()
2. Example data frame 만들기
np.random.rand(4,8)으로 4개의 row, 8개의 column을 가진 data frame을 생성할 수 있다.
pd.DataFrame(np.random.rand(4,8), columns=list('abcdefgh'))
3. Column명 변경
세가지 모두 동일한 방법으로 'col one', 'col two'로 네이밍 되어있는 column을 'col_one', 'col_two'로 변환하는 방법이다.
#1
df = df.rename({'col one':'col_one', 'col two': 'col_two'}, axis='columns')
#2
df.columns = ['col_one', 'col_two']
#3
df.columns = df.columns.str.replace(' ', '_')
#1 : df.rename({'변경 전 컬럼명' : '변경할 컬럼명'})
#2 : df.columns = ['변경할 컬럼명']
#3 : df.columns = df.columns.str.replace(' ', '_') #공백 문자열을 언더바(_)로 변환
4. Row 순서 변경
데이터를 불러온 후 loc연산자를 이용해 row의 순서를 반대로 바꿀 수 있다.
* loc : index를 기준으로 row 데이터를 추출하는 연산자
drinks.head()
index를 보면 데이터의 row 순서가 변경된 걸 확인할 수 있다.
drinks.loc[::-1].head()
만약 index가 0에서 시작하도록 변경하고 싶다면, 아래의 코드를 통해 바꿀 수 있다.
drinks.loc[::-1].reset_index(drop=True).head()
index는 0으로 재설정 되었지만, feature는 역순으로 남아있는 것을 확인할 수 있다.
5. Column 순서 변경
row 순서를 변경하는 방법과 유사하다.
쉼표 앞에 있는 콜론(:)은 모든 행을 선택하는 것을 쉼표 뒤에 있는 ::-1 은column반전을 의미한다.
drinks.loc[:,::-1].head()
6. 데이터 유형 별 열 선택
데이터에서 특정 유형의 데이터 타입만 불러오고 싶을 경우에는 select_dtypes를 이용한다.
아래 코드는 숫자형 데이터를 선택했지만, 만약 문자열 데이터를 불러오고 싶으면 'number' -> 'string'으로 바꿔주면 된다.
drinks.select_dtypes(include = 'number').head()
특정 데이터 타입을 제외한 나머지 데이터 타입을 불러오고 싶을 경우에는 include -> exclude로 바꿔준다.
drinks.select_dtypes(exclude = 'number').head()
7. 문자열을 숫자로 변환
문자열로 되어있는 데이터의 수학적 연산이 필요할 경우에는 숫자형 데이터로 변환하는 과정이 필요하다.
아래와 같은 object형 데이터를 생성하였다.
df = pd.DataFrame({'a':['10', '20', '30'],
'b':['40', '50', '60'],
'c':['70', '80', '-90']})
df.types
data frame 형 변환을 하는 방법은 아래와 같이 2가지가 있다.
#1
df2 = df.apply(pd.to_numeric)
#2
df3 = df.astype({'a': int, 'b' : int, 'c': int})
df2.types
df3.types
8. DataFrame 메모리 사이즈 줄이기
대용량의 데이터를 Data frame으로 읽을 때 사이즈를 줄여할 상황이 생길 수 있다.
#data size 확인
drinks.info(memory_usage='deep')
'momory_usage'로 메모리 사용량을 확인할 수 있다. drinks data는 30.5KB를 사용하고 있다.
대용량의 데이터를 읽어들일 때 문제가 있거나 메모리가 데이터를 읽어들이지 못할 경우 사용하는 방법을 2단계로 알아보자.
8_1. 필요한 column만 불러온다.
첫번째는 'usecols'를 사용하여 내가 필요한 column만 불러온다.
아래 코드는 drinks 데이터의 beer_serving, continent만 불러오는 것으로 코드를 작성한 것이다.
cols = ['beer_servings', 'continent']
small_drinks = pd.read_csv('http://bit.ly/drinksbycountry', usecols=cols)
small_drinks.info(memory_usage='deep')
두번째는 'dtype'을 사용하여 object type column을 category type column으로 변경하는 것이다.
dtypes = {'continent' : 'category'}
smaller_drinks = pd.read_csv('http://bit.ly/drinksbycountry', usecols=cols, dtype = dtypes)
smaller_drinks.info(memory_usage='deep')
'Data Science > Python' 카테고리의 다른 글
Python 결측치 처리 (0) | 2021.01.14 |
---|---|
python으로 카이제곱 검정 (0) | 2021.01.06 |
Python으로 T-test (0) | 2021.01.05 |
matplotlib - bar chart (0) | 2021.01.05 |
Colab 로컬에서 파일 불러오기 (0) | 2021.01.04 |