본문 바로가기
[코드스테이츠]AI

[S1-Week1]Data Manipulation

by b___gly 2022. 3. 30.

Warm-up

  • Tidy Data는 각 변수가 열, 관측치가 행

 

Session(N113)

  • concat은 두 df를 그냥 합침
  • pandas에서는 concat 사용하면 기본적으로 행으로 붙임(밑으로 더해짐)
pd.concat([df1, df2])
#열로는
pd.concat([df1, df2], axis = 1)
  • merge는 두 df의 공통된 부분을 기반으로 합
x1.merge(x2)
  • conditioning 하는 법(조건 거는 법)
변수 = (df[feature] ~~ condition)
  • Wide Data에서 Tidy Data로 만들고 싶으면 .melt()
tidy1 = tidy1.melt(id_vars = 'index', value_vars = ['A', 'B']
  • Tidy Data에서 Wide Data로 만드록 싶으면 .pivot_table 
wide = tidy1.pivot_table(index = 'row', columns = 'column', values = 'value')
  • groupby.min 이런 거는 numerical 데이터를 다 다룸

 

Quiz-Coding

  • 인덱스 다시 매기기 
ignore_index = True
  • tidy data로 만들기
df_tidy = df.melt(id_vars = '종목명', value_vars = ['매출액','자본총계', 'EPS(원)'])
  • boxplot으로 만들기(여기서 폰트 문제 해결함ㅎ)
def toInt(d):
  if type(d) == str :
    d = d.replace(',','')
    return int(d)
  else:
    return int(d)

df_tidy['value'] = df_tidy['value'].apply(toInt)


import seaborn as sns
sns.boxplot(data = df_tidy, x = '종목명', y = 'value');
  • merge(how, on 주의)

 

 

Challenge

  • 조건문 쓰는 것, concat위한 reset_index에 주의
import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt

#해운 df
data_set1 = pd.DataFrame({'종목명':['대한해운', '팬오션', 'KSS해운'],
              '매출액':[11538,46161,3240],
              '자본총계':[15181,35968,3428],
              'EPS':[838,1028,2418]}
              )

#마리화나 df
data_set2 = pd.DataFrame({'종목명':['에스엘바이오닉스', '오성첨단소재', '우리바이오'],
              '매출액':[286,796,15433],
              '자본총계':[470,1944,1994],
              'EPS':[-55,151,709]}
              )
#concat
df = pd.concat([data_set1, data_set2]).reset_index()

#'테마'컬럼 추가
df['테마'] = None

ship = (df["종목명"] == "대한해운") | (df['종목명'] == "팬오션") | (df['종목명'] == "KSS해운")
df.loc[ship, "테마"] = "해운"

ma = (df["종목명"] == "에스엘바이오닉스") | (df['종목명'] == "오성첨단소재") | (df['종목명'] == "우리바이오")
df.loc[ma, "테마"] = "대마"

#시각화
dat = data_set.groupby('테마').mean().reset_index()
dat 

f, ax = plt.subplots(1,3 ,figsize=(18, 8))
ax[0].set_title("매출액")
sns.barplot(data= dat, x='테마', y="매출액", ax=ax[0])

ax[1].set_title("자본총계")
sns.barplot(data= dat, x='테마', y="자본총계", ax=ax[1])

ax[2].set_title("EPS")
sns.barplot(data= dat, x='테마', y="EPS", ax=ax[2])

plt.show()

 

 


알아두면 좋은 사이트 

 

EDA, Data Preprocessing, Feature Engineering: We are different!

Emphasize the differences between EDA, Data Preprocessing and Feature Engineering.

medium.com

 

10 minutes to pandas — pandas 1.4.1 documentation

Note While standard Python / NumPy expressions for selecting and setting are intuitive and come in handy for interactive work, for production code, we recommend the optimized pandas data access methods, .at, .iat, .loc and .iloc.

pandas.pydata.org

 

Seaborn(SNS)를 사용한 파이썬 데이터 시각화 기초 matplotlib

데이터 과학을 공부하는 데 있어 필수적인 데이터 시각화에 대해서 공부하도록 하겠습니다. 오늘은 Seaborn 과 matplotlib를 사용하여 데이터를 시각화하는 방법에 대해서 알아보겠습니다. 데이터는

chancoding.tistory.com

 

[Pandas 기초] 그룹(group)객체 생성 및 집계(agg) 연산

판다스의 groupby함수 및 다양한 그룹연산 메소드들에 대해 알아보자

yganalyst.github.io

https://www.youtube.com/watch?v=KL1MIuBfWe0&lc=Ugzv57Wq-k55HQ8suxt4AaABAg.9Z7Bp3ZwAoW9ZJcaacmIIb 

 

 

Python Merge Tutorial

Explore and run machine learning code with Kaggle Notebooks | Using data from Restaurant Data with Consumer Ratings

www.kaggle.com


소감 

오늘은 찌이이끔 재밌었음. 그만큼 어려워서 그런가.

내일은 미적이던데 기억 하나도 안 나네.....ㅎ

 

 

'[코드스테이츠]AI' 카테고리의 다른 글

[S1-Week2]Hypothesis Test 2  (0) 2022.04.06
[AI 부트캠프]1주차 총 복습  (0) 2022.04.01
[S1-Week1]Basic Derivative  (0) 2022.03.31
[S1-Week1]Feature Engineering  (0) 2022.03.29
[S1-Week1]Data Preprocessing&EDA  (0) 2022.03.29

댓글