판다스에 대한 자주 사용되는 기술들을 모아두었습니다.
0. 라이브러리 import 및 DataFrame 생성
목차 / 중요도
1. Query ⭐⭐⭐
2. insert new column ⭐⭐
3. Cumsum ⭐⭐⭐
4. Sampling ⭐
5. Where ⭐⭐
6. isin ⭐⭐⭐
7. pct_change & rank ⭐
8. Melt ⭐
9. nunique ⭐⭐
10. object type & memory usage ⭐
11. Replace ⭐⭐
12. Coloring ⭐
13. tqdm
0. 라이브러리 import 및 DataFrame 생성
먼저 필요한 라이브러리를 임포트하고 데이터 프레임을 만들어줍니다.
import numpy as np
import pandas as pd
values_1 = np.random.randint(10, size=10)
values_2 = np.random.randint(10, size=10)
years = np.arange(2010,2020)
groups = ['A','A','B','A','B','B','C','A','C','C']
df = pd.DataFrame({'group':groups, 'year':years, 'value_1':values_1, 'value_2':values_2})
df
1. Query ⭐⭐⭐
마치 DB의 Table처럼 쿼리를 작성하면 된다.
# 1. Query
df.query('value_1 < value_2')
temp = transactions.query('year==2014 and 5< month <9')
2. insert new column ⭐⭐
#new column
new_col = np.random.randn(10)
#insert the new column at position 2
df.insert(2, 'new_col', new_col)
def highlight_cols(s):
color = 'yellow'
return 'background-color: %s' % color
df.style.applymap(highlight_cols, subset=pd.IndexSlice[:, ['new_col']])
3. Cumsum ⭐⭐⭐
# 특정 그룹에 대하여 Sum을 한 부분을 새로 column에 보관
df['cumsum_2'] = df[['value_2','group']].groupby('group').cumsum()
df.groupby(['genreAlt']).agg({'미국_평점_IMDB':['mean','count']})
df
4. Sampling ⭐
# Sample
sample1 = df.sample(n=3)
sample1
# Sample 비율로 조절
sample2 = df.sample(frac=0.5)
sample2
5. Where ⭐⭐
df['new_col'].where(df['new_col'] > 0 , -1)
# numpy 를 이용한 것과 결과가 같다.
# np.where(df['new_col'] > 0, df['new_col'], -1)
6. isin ⭐⭐⭐
# isin
years = ['2010','2014','2017']
df[df.year.isin(years)]
7. pct_change & rank ⭐
# 연속적인 값이라면 변화하는 비율을 나타냄
df.value_1.pct_change()
# 랭크 구하기
df['rank_1'] = df['value_1'].rank()
df
8. Melt & Merge & Join ⭐
# Melt
df_wide = pd.DataFrame({'city':['A','B','C'], 'day1':[22,25,28]
, 'day2':[12,15,18], 'day3':[42,35,28]
, 'day4':[24,20,23], 'day4':[21,23,25]})
df_wide.melt(id_vars=['city'])
# Explode
df1 = pd.DataFrame({'ID':['a','b','c'], 'measurement':[4,8,[2,3,8]],
'day':[1,1,1]})
df1.explode('measurement').reset_index(drop=True)
# join by index
df_made = pd.DataFrame(index=df.index).join(data.set_index('df_index'))
df_made
9. nunique ⭐⭐
# Nunique
df.year.nunique()
10. object type & memory usage ⭐
# infer objects()
df.infer_objects().dtypes
# 특정 데이터 타입 뽑기
df.select_dtypes(include='int64')
# Memory usage
df_large = pd.DataFrame({'A': np.random.randn(1000000),
'B': np.random.randint(100, size=1000000)})
df_large.memory_usage()
# Mega byte 변환
df_large.memory_usage().sum() / (1024**2) #converting to megabytes
11. Replace ⭐⭐
df.replace('A', 'A_1')
df.replace({'A':'A_1', 'B':'B_1'})
12. Coloring ⭐
def color_negative_values(val):
color = 'red' if val < 5 else 'black'
return 'color: %s' % color
df[['value_1', 'value_2']].style.applymap(color_negative_values)
13. Make Multiple columns⭐⭐
def trim(x):
try:
if x:
x = str(x)
if '전국' in x:
x = x.split()
try:
return x[1], x[2], x[4]
except:
return None,None,None
else:
return None,None,None
else:
return None,None,None
except:
print(x)
return None,None,None
df['n_screen'], df['revenu_ko'], df['n_people'] = zip(*df_kobis.stats.apply(trim))
14. Apply 함수에 tqdm 적용하기 ⭐⭐
기존 apply 대신에 progress_apply() 를 사용해주시면 됩니다.
from tqdm import tqdm
tqdm.pandas(position=0, leave=True)
df['리뷰_ko'] = df['리뷰_ko'].progress_apply(trim_ko)
+ for 문에 tqdm 적용하기
from tqdm import tqdm
for i in tqdm(range(30)):
print(i)
+ Colab print 오류 해결 버전
# Try 1
import tqdm.notebook as tq
for i in tq.tqdm(range(len(im))):
# Try 2
from tqdm.auto import tqdm
tqdm.pandas()
15. Apply 함수에 multiprocessing 적용하기⭐
!pip install swifter
import swifter
df['스토리_ko_trim'] = df['스토리_ko'].swifter.apply(trim_ko)
15. Warning 제거
import warnings
warnings.filterwarnings('ignore')
'데이터분석' 카테고리의 다른 글
Frequentist vs Bayesian (0) | 2020.08.03 |
---|---|
Spark 기본 설명 (0) | 2020.07.30 |
[Word Cloud] Mask를 이용한 Word Cloud + Python (0) | 2020.07.17 |
[차트] 원형 차트 시각화 🤖 (0) | 2020.07.14 |
DB Oracle SQL 구문 (0) | 2020.07.13 |