💡 Key World 정리 💡
✅ sns.heatmap() vs df.style.background_gradient()
두 가지의 차이점❗
df.style.background_gradient() => 성질이 다른 각 변수를 각각 비교하고자 할 때 적합
예) 변수에 체중, 키, BMI지수, 콜레스테롤수치 처럼 스케일값이 다르고 성질이 다른 값의 스케일을 비교하고자 할 때 적합
✅수치 데이터를 분석 => Histogram
데이터 분포 확인
pairplot -> 짝을 지어 볼 수 있음. 상관관계 파악
✅심슨의 역설(Simpson's paradox)
데이터의 세부 그룹별로 일정한 추세나 경향성이 나타나지만, 전체적으로 보면 그 추세가 사라지거나 반대 방향의 경향성을 나타내는 현상을 의미
✅패러독스(paradox)
:참도 거짓이라고도 할 수없는 모순적인 관계
✅ unique, nunique, value_counts() #빈도수
1.unique()
- unique()는 데이터에 고유값들이 어떠한 종류들이 있는지 알고 싶을때 사용하는 함수
2.nunique()
- nunique()는 데이터에 고유값들의 수를 출력해주는 함수
3.value_counts()
- value_counts()는 값별로 데이터의 수를 출력해주는 함수
✅ 파이썬의 정규표현식 라이브러리 호출
regular expression => regexp
✅ inplace = True
=> 기존 데이터프레임에 변경사항을 덮어 쓰겠다!!
✅nlargest() => sort_values(ascending=Flase).head(n)
✅nsmallest() => sort_values().head(n)
✅px.histogram (histfunc)
=> 범주형 데이터일때는 default값이 count
=> 수치형 데이터일때는 default값이 sum
plotly => 일별시세, KOSIS
* 일별 시세 : 연속된 수치 데이터, 연속된 기간별로 시각화, 종목별 서브플롯 그리는 실습, px.line, bar, area ...
* KOSIS : 범주형 데이터에 대한 시각화, 국가권역별로 수입수출액 비교, px.histogram
* 막대그래프 : px.bar(연산지원 X), px.histogram(histfunc으로 연산 지원)
✅px.histogram에서는 sort기능이 잘 안 보이는데 어떻게 정렬하면 좋을까 ❓
단점 : 계산 시간이 오래 걸림
=> 계산 판다스로 후 px.bar() 로 시각화 하는 것을 추천❗
✅ pandas, seaborn=>matplotlib 기반
plotly =>javascript 기반
✅ list는 가변크기(가변객체), Tuple은 고정크기(불변객체)
✅ 데이터가 너무클 때
[]가 아니라, ()로 불러오면 메모리를 덜 사용❗
df_list = (pd.read_csv(fn, low_memory=False) for fn in file_names)
추가로,
%whos 명령어로 변수명 확인 후,
del 변수명
사용 안하는 변수를 삭제하면, 메모리 사용량이 좀 더 여유로워짐
✅ 왜 groupby 로 할 수 있는 것은 pivot_table로도 대부분 구현이 가능?
- pivot_table이 groupby의 하이레벨 인터페이스이므로
groupby > pivot_table > crosstab
✅facet
=> pandas, seaborn, plot에서 모두 정렬불가
=> 직접 서브플롯을 시각화 하는 것을 추천❗
melt로 깔끔한 데이터 만들기
df = pd.melt(raw, id_vars = cols, var_name='연월', value_name ='달러' )
df
나중에 따로 바꿔줄 수도 있자만 melt 내의 기능 활용하여 컬럼에 이름 할당
연월컬럼(2012.07 월)에서 월 제거
#df['연월'] = df['연월'].replace('[^0-9]','',regex=True)
그냥 str.replace로 변경해주어도 되지만 정규표현식 사용해서 제거해주기
[^0-9] => 숫자가 아닌 문자
근데 이방법으로 해보았는데 .까지 사라진다..! 크게 상관은 없을듯한데
후에 파생변수 만들때 split을 사용하긴 어려울 것 같다. (.을 기준으로 split하므로)
그냥 이런 방법이 있다는것만 알아두자
소부장 (소재/부품/장비) 산업에 대해서만 달러값 보기
# df[~df['산업']=='전산업'].groupby(['국가권역'])['달러'].sum().nlargest(20)
top20 = df[df["산업"] != "전산업"].groupby(["국가권역"])["달러"].sum().nlargest(20)
위에 코드는 왜 안되는지 궁금하다
이런 에러 뜨는데...흠 해석을해도 안되는 이유는 모르겠네
국가권역 => world(지역 및 국가기구) / country(나라)로 분할
df_world = df[df['국가권역'].isin(world)].copy()
df_country = df[~df['국가권역'].isin(world)].copy()
df_world.shape , df_country.shape
isin함수는 리스트에만 사용 가능
📌 Pair Grid 와 Facet Grid의 차이
FacetGrid => 하나의 범주형 변수를 쪼개고 나눠서 시각화(예. relplot, displot, catplot)
PairGrid => 여러 변수의 서브플롯 (예. pairplot)
📌 glob.glob
모듈 이름도 glob이고 그 안의 함수나 클래스 명도 똑같이 glob!!
from glob import glob
glob 모듈에서 glob() 함수를 불러오는 것 -> glob함수까지 불러놓았으므로 바로 사용가능
ex) glob('data/store/*.csv')
import glob
glob 모듈만 불러오는 것 ->glob.glob()로 glob 모듈의 glob 함수 사용한다는것 명시
ex) glob.glob('data/store/*.csv')
📌 px.histogram
seaborn과 pandas에서의 histogram => 수치데이터만 제공
plotly.express 에서의 histogram => 수치 및 범주형 데이터 표현 가능
histfunc
=> 범주형 데이터일때는 default값이 count
=> 수치형 데이터일때는 default값이 sum
histogram에서 정렬
sort기능이 잘 안 보이는데 어떻게 정렬하면 좋을까 ❓
단점 : 계산 시간이 오래 걸림
=> 판다스로 계산 후 px.bar() 로 시각화 하는 것을 추천❗
histogram 데이터들 순차정렬
.update_yaxes(categoryorder='total ascending')
'Python > ▶ Python & Pandas' 카테고리의 다른 글
8주차 비즈니스 데이터 분석 (0) | 2023.02.28 |
---|---|
6주차 Burger 지수 (0) | 2023.02.09 |
6주차 Seaborn (0) | 2023.02.06 |
5주차 plotly (1) | 2023.02.05 |
5주차 TIL ( Pandas : 시각화 ) (0) | 2023.01.31 |