지금은마라톤중

멋사 AI스쿨 TIL - (13) 본문

멋쟁이사자처럼/Python

멋사 AI스쿨 TIL - (13)

달리는중 2023. 2. 6. 22:05

2023.02.06

 

 

  Tidy-data => 깔끔한 데이터

🙋🏻‍♂️질문 :  왜 이 데이터는 깔끔한 데이터가 아닐까요?


- 한 열에 하나의 변수가 있는게 아니라 다양한 열에 하나의 변수가 분포되어 있습니다

- 각 행이 개별 관측치가 아니라 집계가 되어 있는 데이터입니다.

 

 

- 이전에 실습했던 서울코로나 데이터 => 각 행이 개별 관측치, 각 확진자에 대한 정보를 담고 있다.
일별 시세 관측 데이터와 집계 데이터 중 어떤 것 일까요? => 집계데이터
 

 

 

● pandas는 tidy data를 위해 melt라는 기능을 제공한다.

 

 

 melt()

- 열에 있던 데이터를 행으로 녹인다.

- wide-form => pandas plot()으로 막대의 색상을 다르게 지정하거나, 서브플롯을 그리거나, 시각화 하기에 좋음.

- long-form => 변수(예. 연도, 월별)에 따라 x, y, hue(color), col 등을 지정해서 사용하기에 좋음.

 

 인코딩

 

- 인코딩을 설정을 해주어야 한글이 깨지지 않는다.

- 보통 엑셀로 저장된 한글의 인코딩은 cp949 혹은 euc-kr로 되어 있다.

- cp949로 통일해서 쓰는 것을 추천

 

 

 Series 특징

- 데이터 타입이 하나라도 다른 것이 있으면 맞춰서 바뀐다.

 

 

🙋🏻‍♂️질문 : 데이터타입이 object인데 .str을 해주는 이유가 있을까요??? .str없이도 같은 값이 나오는 것 같긴합니다.
- replace => 데이터프레임에만 사용가능(regex=True 를 지정하지 않으면 완전히 일치하는 데이터에 대해서면 변경합니다.) 
- str.replace => 시리즈에만 사용가능, 일부만 일치해도 변경합니다.

 

 

 메모리 용량 줄이기

 

- 공개되는 대용량 데이터를 보면 텍스트데이터가 코드로 되어 있는 경우가 많음
- 데이터의 용량이 크면 로드에도 오래걸리지만 전처리나 연산에도 속도가 오래 걸리게 됨.
- 관리, 속도 이슈로 보통은 수치 형태의 코드값으로 관리하는 편.

 

1) 필요없는 문자열 제거

 

# regex(regular expression 정규표현식)
df_last["전용면적"] = df_last['규모구분'].str.replace("전용면적|제곱미터| |이하", "", regex=True)
df_last["전용면적"] = df_last["전용면적"].str.replace("초과", "~")
df_last

 

 

2) 필요없은 컬럼 제거

# drop 사용시 axis에 유의 합니다.
# axis 0:행, 1:열
df_last = df_last.drop(["규모구분", "분양가격"], axis = 1)
df_last

 

-> 컬럼을 줄이기 메모리가 감소한 것을 확인할 수 있다.

 

 

● pairplot

- seaborn의 그래프

- seaborn 서브플롯에서는 figsize가 동작하지 않는다. 
- height = 2.5, aspect = 1로 상대값을 지정해서 조정.

sns.pairplot(df_last, hue = "지역명", corner = True)

 

● ... 없이 모든 컬럼 보는 법

- pd.options.display.max_columns = 10
- 컬럼이나 행이 너무 많은데 None 으로 설정하면 display 하는데 시간이 오래 걸린다.
- 너무 큰 데이터에 이 기능을 사용하면 노트북이 느려질 수 있기 때문에 주의가 필요.

pd.options.display.max_columns = None

 

● pd.melt()

df_first_melt = pd.melt(df_first, id_vars = "지역")
df_first_melt.columns = ["지역명", "기간", "평당분양가격"]
df_first_melt.head(2)

 

 

🙋🏻‍♂️질문 :  replace()는 일부만 일치하면 변경이 되지 않고 전체가 일치되어야 변경된다고 했는데 왜 여기에서는 일부만 일치하는데도 변경이 되었을까요?



메서드명이 같더라도 python string 의 메서드인지, pandas 의 데이터프레임의 메서드인지 등에 따라 다르게 동작합니다.

 

 

● .copy()

=> 파이썬, 판다스, 넘파이에 모두 이 기능이 있습니다. 그런데 미묘한 차이점이 있다.

=> 문서를 참고해서 사용하는 것을 추천.

-  .copy()로 깊은 복사를 하게 되면 원본에는 영향을 주지 않는다.
-  b = a 처럼 얕은 복사를 하게 되면 원본도 함께 변경.

 

 

🙋🏻‍♂️질문 :  보통 한 프로젝트당 어느정도의 시간을 들여서 준비하시는지 궁금합니다!
데이터의 크기, 변수의 수, 결측치, 이상치, 범주형, 수치형데이터 등 전처리할 내용이 어느정도나 되는지도 중요하겠죠. 어느정도의 시간이 드는지는 딱 잘라서 말하기 보다는 어떤 작업을 얼마나 진행할지에 대해 달라질것 같습니다. 예를 들어 지하철 승하차 데이터를 분석한다고 했을 때도, 정제가 잘 되었고 로드가 잘 된다면 큰 문제없이 진행하겠지만 원하는 데이터 형태로 되어있지 않고 전처리도 많이 필요하다면 시간이 다르게 걸릴거에요. 회사에서도 어떤 일이 주어졌을 때 어느정도 시간이 걸릴지 물어봅니다. 협업을 할 때는 시간을 너무 촉박하게 계획하기 보다는 여유를 두는게 좋지만, 일정이 정해져있다면 정해진 일정안에서 어떻게 시간을 나눠사용할지 계획해서 사용하는 것도 업무 능력중에 하나입니다.

 

🙋🏻‍♂️질문 : 혹시 데이터 전처리시 sql이나 엑셀을 이용해 먼저 전 처리 한 데이터를 파이썬에서 분석하는 것과, 파이썬 위주의 전처리 중 어떤 것이 더 효율적인지 궁금합니다
가장 효율적인 방법은 내가 가장 잘 하는 방법으로 하는 것입니다. 

 

🙋🏻‍♂️질문 :  어떤 데이터가 DB에 있고? 어떤 데이터가 파일로 있을까요?

- DB => 실시간성으로 조회해야 하는 데이터, 회원가입데이터, 캐릭터 정보, 인벤토리정보, 장바구니 정보, 구매내역 
- 파일 => 여러 개 물건을 클릭해 본 이력, 여러 메뉴를 이동해 본 이력, 보통 사용자 행동 정보는 따로 관리해 주는 툴(예.Amplitude)이 있기도 합니다. 기록이 필요한 로그

 

 

● heatmap()

- seabron의 그래프

- cmap : 테마를 지정
   - cmap의 컬러값 종류 보는 법 : print(plt.colormaps())

   - matplotlib 문서에 있는 컬러맵을 보는 것을 추천
   -( https://matplotlib.org/stable/tutorials/colors/colormaps.html )

   - 색상_r => 스케일을 반대로 표현

- annot : 값을 위에 표현해주는 유무 지정, T/F로 지정 
- fmt : 텍스트 형식 지정, ex) fmt = ",.0f"

   - fmt => format 을 의미합니다. .0f 는 float을 소숫점 0번째 자리까지 표기한다는 의미.

   - , 는 천단위로 , 로 구분해서 표기해 달라는 의미.

   - ,.0f 는 천단위로 ,를 찍고 소숫점 0번째 자리까지 표기해 달라는 의미.

sns.heatmap(pt.T, cmap = "autumn_r", annot =True, fmt = ",.0f")

 

 

 

🙋🏻‍♂️질문 : barplot, point, box, violin, swarm 을 순서대로 시각화 해볼 예정입니다. 이 그래프들의 공통점은 무엇일까요?
 
범주형 데이터에 사용하는 catplot입니다

 

 

🙋🏻‍♂️질문 : 검은색 막대는 무엇일까요?



- 신뢰구간 입니다.
최신버전은 errorbar 로 표기, 이전버전은 ci로 표기하고 있습니다
- 신뢰구간, 편차 등을 표기할 수 있습니다. 
   ci 에 표준편차까지 표기하면 이름이 직관적이지 않기 때문에 최신버전에서 errorbar 로 명칭이 변경되었습니다.

 

 

 

🙋🏻‍♂️질문 : bar, pointplot의 단점을 보완해서 만들어진 것이 boxplot입니다. bar, point 의 어떤 단점을 보완해서 만들어진걸까요?

bar나 point 는 대표값(평균, 합계 등)만을 표기합니다. 대표값만으로는 데이터를 제대로 설명하기 어렵습니다.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

'멋쟁이사자처럼 > Python' 카테고리의 다른 글

멋사 AI스쿨 TIL - (15)  (0) 2023.02.09
멋사 AI스쿨 TIL - (14)  (0) 2023.02.07
멋사 AI스쿨 TIL - (12)  (1) 2023.02.01
멋사 AI스쿨 TIL - (11)  (0) 2023.01.31
멋사 AI스쿨 TIL - (10)  (0) 2023.01.31
Comments