<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>데이터 분석 학습 기록</title>
    <link>https://youngchae00.tistory.com/</link>
    <description>비전공자가 데이터 분석가를 목표로 학습하는 과정을 담은 공간입니다.</description>
    <language>ko</language>
    <pubDate>Tue, 4 Aug 2026 19:16:41 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>zer0 </managingEditor>
    <image>
      <title>데이터 분석 학습 기록</title>
      <url>https://tistory1.daumcdn.net/tistory/6802154/attach/1f955b8a3f204009bc93dbea30db9241</url>
      <link>https://youngchae00.tistory.com</link>
    </image>
    <item>
      <title>11. 가설 검정(t 검정, 상관 분석)</title>
      <link>https://youngchae00.tistory.com/13</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 id=&quot;toc-0&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  가설 검정&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기술 통계: 데이터를 요약해 설명하는 통계 분석 기법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ex) 사람들이 받는 월급을 집계해 월급 평균을 계산&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;추론 통계: 단순히 숫자를 요약하는 것을 넘어 표본으로 모집단을 추론하는 통계 분석 기법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;통계적 추정: 모집단의 진짜 특성(ex 평균, 비율)이 어느 정도인지 추론하는 방법&lt;/li&gt;
&lt;li&gt;통계적 가설 검정: 모집단에 대한 가설을 세우고, 이를 표본 데이터를 통해 유의 확률을 계산하여 검정하며 모집단을 추론하는 방법&amp;nbsp;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;가설: 성별에 따른 월급 차이가 있을 것이다.&lt;/li&gt;
&lt;li&gt;기술 통계: 표본 데이터에서 성별에 따라 월급 차이가 있는 것으로 나타난다.&lt;/li&gt;
&lt;li&gt;통계적 가설 검정: 이런 차이가 우연히 발생할 확률을 계산한다.&lt;/li&gt;
&lt;li&gt;결론: 우연히 발생할 확률이 낮다면 모집단에서도 실제로 성별에 따른 월급 차이가 존재한다고 추론한다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  t 검정&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;t 검정: 두 집단의 평균 차이가 모집단 규모에서 통계적으로 유의한 차이인지, 각 집단 표본의 우연에 의해서 일어난 차이인지 알아볼 때 사용하는 통계 분석 기법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;scipy 패키지 stats 모듈의 ttest_ind(비교할 1차원 배열1, 비교할 1차원 배열2, equal_var = 집단 간 분산 동일 여부) 함수 활용&lt;/li&gt;
&lt;li&gt;유의 확률 5%(p-value 0.05) 미만이면 집단 간의 차이가 통계적으로 유의하다고 해석&lt;/li&gt;
&lt;li&gt;집단 간 분산을 고려해야 하는 이유: 집단 간 분산 차이로 인해 유의 확률이 왜곡될 수 있다.&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;6,0,0&quot;&gt;&lt;/b&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-path-to-node=&quot;7&quot; data-ke-size=&quot;size20&quot;&gt;  [상황 예시] 2종 오류가 발생하는 과정&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;13&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,0,0&quot;&gt;A공장 표본:&lt;/b&gt; 10, 10, 10, 10 (평균 10시간 / 기복 0)&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;13,1,0&quot;&gt;B공장 표본:&lt;/b&gt; 14, 14, 2, 2 (평균 8시간 / 널뛰기 심함)&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;14&quot; data-ke-size=&quot;size20&quot;&gt;❌ 분산을 각각 고려하지 않는 경우:&lt;/h4&gt;
&lt;p data-path-to-node=&quot;15&quot; data-ke-size=&quot;size16&quot;&gt;B공장의 널뛰기 분산&amp;nbsp;때문에 전체 오차 잣대가 뚱뚱하게 부풀어 오릅니다.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;16&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,0,0&quot;&gt;통계 심판의 오판:&lt;/b&gt; &lt;i data-index-in-node=&quot;11&quot; data-path-to-node=&quot;16,0,0&quot;&gt;&quot;이 배터리 동네는 원래 널뛰기가 심해서 오차는 흔한 일이야. 그러니까 2시간 차이 난 건 그냥 표본 뽑다 생긴 우연이겠네!&quot;&lt;/i&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;16,1,0&quot;&gt;결과:&lt;/b&gt; A공장은 단 1초의 오차도 없이 2시간이나 긴 성능을 증명했는데도, B공장의 널뛰기 노이즈에 묻혀 &quot;두 공장 성능 차이 없음&quot;이라는 억울한 판정을 받게 됩니다.&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 style=&quot;color: #000000; text-align: start;&quot; data-path-to-node=&quot;14&quot; data-ke-size=&quot;size20&quot;&gt;⭕ 분산을 고려하는 경우:&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot; data-path-to-node=&quot;16&quot;&gt;
&lt;li&gt;&lt;b data-path-to-node=&quot;16,0,0&quot; data-index-in-node=&quot;0&quot;&gt;올바른 계산:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;i data-path-to-node=&quot;16,0,0&quot; data-index-in-node=&quot;11&quot;&gt;&quot; 분산이 큰 쪽의 &lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;자유도를 낮춤&lt;span&gt; &amp;rarr;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;기준선이 깐깐해짐 &lt;i data-index-in-node=&quot;11&quot; data-path-to-node=&quot;16,0,0&quot;&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;rarr; 2시간의 차이는 절대로 우연일 수 없다! 확실한 진짜 차이다!&quot;라고 &lt;/span&gt;&lt;/span&gt;&lt;/i&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #fafafa; color: #333333; text-align: start;&quot;&gt;올바르게 판정합니다.&lt;/span&gt; &lt;/i&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h4 data-path-to-node=&quot;7&quot; data-ke-size=&quot;size20&quot;&gt;  [상황 예시] 1종 오류가 발생하는 과정&lt;/h4&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-path-to-node=&quot;8&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,0,0&quot;&gt;집단 A (대형 그룹):&lt;/b&gt; N = 100명, &lt;b data-index-in-node=&quot;24&quot; data-path-to-node=&quot;8,0,0&quot;&gt;분산이 매우 작음 (1)&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;8,1,0&quot;&gt;집단 B (소형 그룹):&lt;/b&gt; N = 10명, &lt;b data-index-in-node=&quot;23&quot; data-path-to-node=&quot;8,1,0&quot;&gt;분산이 매우 큼 (100)&lt;/b&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-path-to-node=&quot;9&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,0,0&quot;&gt;실제 상태:&lt;/b&gt; B 그룹의 분산이 100으로 어마어마하게 크기 때문에, 실제 불확실성은 매우 높고 두 그룹 간 평균 차이는 그냥 우연일 가능성이 높습니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,1,0&quot;&gt;등분산 t-검정의 착각:&lt;/b&gt; 전통적인 t-검정은 수가 훨씬 많은 &lt;b data-index-in-node=&quot;34&quot; data-path-to-node=&quot;9,1,0&quot;&gt;A 그룹(N=100)의 작은 분산(1)에 끌려가서, 합쳐진 분산을 실제 B 그룹의 위험도보다 훨씬 작게 측정&lt;/b&gt;해 버립니다.&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,2,0&quot;&gt;결과:&lt;/b&gt; 분모(불확실성)가 실제보다 왜곡되어 &lt;b data-index-in-node=&quot;24&quot; data-path-to-node=&quot;9,2,0&quot;&gt;너무 작아집니다.&lt;/b&gt;&lt;/li&gt;
&lt;li&gt;&lt;b data-index-in-node=&quot;0&quot; data-path-to-node=&quot;9,3,0&quot;&gt;판정:&lt;/b&gt; t-통계량이 뻥튀기되고 p-value가 0.05 밑으로 떨어지면서 &lt;b data-index-in-node=&quot;41&quot; data-path-to-node=&quot;9,3,0&quot;&gt;&quot;실제로는 우연인데 유의미한 차이가 있다!&quot;(1종 오류)고 판정&lt;/b&gt;하게 됩니다.&lt;/li&gt;
&lt;/ol&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;compact 자동차와 suv 자동차의 도시 연비 t 검정 (등분산 가정)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785377332981&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 파일 불러오기
import pandas as pd
mpg = pd.read_csv('mpg.csv')&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1785377408157&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 각각의 도시 연비를 추출하여 변수에 할당
compact = mpg.query('category == &quot;compact&quot;')['cty'] # mpg.query('조건')[['변수명']]은 2차원 배열 형태로 사용 불가!
suv = mpg.query('category == &quot;suv&quot;')['cty']&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1785377449155&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# t 검정
from scipy import stats

stats.ttest_ind(compact, suv, equal_var = True) # 결과: 2.39*10^(-21)으로 0.05보다 작아 통계적으로 유의함&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;30&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LiQ8c/dJMcabyidli/jDfEGHYFzlf0J8osLv5xE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LiQ8c/dJMcabyidli/jDfEGHYFzlf0J8osLv5xE0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LiQ8c/dJMcabyidli/jDfEGHYFzlf0J8osLv5xE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLiQ8c%2FdJMcabyidli%2FjDfEGHYFzlf0J8osLv5xE0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;441&quot; height=&quot;30&quot; data-origin-width=&quot;441&quot; data-origin-height=&quot;30&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일반 휘발유와 고급 휘발유의 도시 연비 t 검정 (등분산 가정)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785391306562&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;regular = mpg.query('fl == &quot;r&quot;')['cty']
premium = mpg.query('fl == &quot;p&quot;')['cty']

stats.ttest_ind(regular, premium, equal_var = True)# 결과: 우연일 확률이 28.75%로 유의하지 않음!&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;28&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nLzd8/dJMcabyidku/KYTSKDllPPrvFfzPysdid0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nLzd8/dJMcabyidku/KYTSKDllPPrvFfzPysdid0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nLzd8/dJMcabyidku/KYTSKDllPPrvFfzPysdid0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnLzd8%2FdJMcabyidku%2FKYTSKDllPPrvFfzPysdid0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;28&quot; data-origin-width=&quot;412&quot; data-origin-height=&quot;28&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  상관 분석&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상관 분석: 두 연속 변수가 서로 관련이 있는지 검정하는 통계 분석 기법이며, 상관계수가 1에 가까울 수록 관련성이 크다는 것을 의미하고 양수면 정비례, 음수면 반비례 관계를 의미한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실업자 수와 개인 소비 지출의 상관관계&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785392297199&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 파일 불러오기
economics = pd.read_csv('economics.csv')

# 상관계수 행렬 생성(2개 이상 변수 가능)
economics[['unemploy', 'pce']].corr()
# 출력 결과: 실업자 수와 개인 소비 지출은 한 변수가 증가하면 다른 변수가 증가하는 정비례 관계&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;342&quot; data-origin-height=&quot;136&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/usZ3m/dJMb99UNHi3/GyepG6igLwlbRmNgkOguDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/usZ3m/dJMb99UNHi3/GyepG6igLwlbRmNgkOguDk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/usZ3m/dJMb99UNHi3/GyepG6igLwlbRmNgkOguDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FusZ3m%2FdJMb99UNHi3%2FGyepG6igLwlbRmNgkOguDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;299&quot; height=&quot;119&quot; data-origin-width=&quot;342&quot; data-origin-height=&quot;136&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785392431943&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# (상관계수, 유의확률) 출력
stats.pearsonr(economics['unemploy'], economics['pce'])
# 출력 결과: 유의확률이 0.05 미만으로 실업자 수와 개인 소비 지출의 상관관계가 통계적으로 유의하다.&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;34&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lkoAI/dJMcacjE6hF/RYEGtDEG0ICdUaxkWRKZs1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lkoAI/dJMcacjE6hF/RYEGtDEG0ICdUaxkWRKZs1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lkoAI/dJMcacjE6hF/RYEGtDEG0ICdUaxkWRKZs1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlkoAI%2FdJMcacjE6hF%2FRYEGtDEG0ICdUaxkWRKZs1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1049&quot; height=&quot;34&quot; data-origin-width=&quot;1049&quot; data-origin-height=&quot;34&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상관행렬 히트맵 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785394462717&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 파일 불러오기
mtcars = pd.read_csv('mtcars.csv')

# 상관행렬 만들기
car_cor = mtcars.corr()
car_cor = round(car_cor, 2) # 소수점 둘째자리까지
car_cor

&quot;&quot;&quot;
결과 해석
1. mpg(연비)와 cyl(실린더 수)의 상관계수가 -0.85이므로, 연비가 높을수록 실린더의 수가 적은 경향이 있다.
2. cyl(실린더 수)와 wt(무게)의 상관계수가 0.78이므로, 실린더 수가 많을수록 자동차가 무거운 경향이 있다.
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;535&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwQuma/dJMcacxfPxA/cdzUQIOkQ1VSHfJXJl57Ek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwQuma/dJMcacxfPxA/cdzUQIOkQ1VSHfJXJl57Ek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwQuma/dJMcacxfPxA/cdzUQIOkQ1VSHfJXJl57Ek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwQuma%2FdJMcacxfPxA%2FcdzUQIOkQ1VSHfJXJl57Ek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;596&quot; height=&quot;415&quot; data-origin-width=&quot;768&quot; data-origin-height=&quot;535&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785413016608&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 상관행렬에서 대각선 기준 왼쪽 아래와 오른쪽 위의 값이 대칭이므로 보기 편하도록 중복 제거

# 중복을 제거하기 위한 mask 생성
import numpy as np
mask = np.zeros_like(car_cor) # 상관행렬과 동일한 크기의 0으로 이루어진 배열 생성
mask[np.triu_indices_from(mask)] = 1 # 위쪽 삼각형 영역의 인덱스를 가져온 후, 1로 변환

# 맨 위쪽 행과, 맨 오른쪽 열은 비어있는 결과가 되므로 아예 삭제
mask = mask[1:, :-1] # numpy 배열 접근
car_cor = car_cor.iloc[1:, :-1] # 데이터프레임 인덱스 번호로 접근

# iloc: integer location으로 인덱스 번호로 접근
# loc: 행, 열 이름으로 접근&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1785413173008&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 히트맵 생성
sns.heatmap(data = car_cor,
            annot = True,
            cmap = 'RdBu',
            mask = mask,
            linewidths = .5,
            vmax = 1,
            vmin = -1,
            cbar_kws = {&quot;shrink&quot;: .5})
            
&quot;&quot;&quot;
- data: 상관계수 행렬명
- annot: 상관계수 표시 여부
- cmap: 컬러맵을 의미하며 값이 클수록 진한 색상 (RdBu: 양수는 파란색, 음수는 빨간색)
- mask: 사용할 마스크명
- linewidths: 경계 구분선 추가
- vmax: 가장 진한 파란색으로 표현할 최대값
- vmin: 가장 진한 빨간색으로 표현할 최소값
- cbar_kws: 범례 크기 줄이기
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;617&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbAwZ2/dJMcahL37M0/uTa8EJJeJpk3rh0GolRQmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbAwZ2/dJMcahL37M0/uTa8EJJeJpk3rh0GolRQmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbAwZ2/dJMcahL37M0/uTa8EJJeJpk3rh0GolRQmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbAwZ2%2FdJMcahL37M0%2FuTa8EJJeJpk3rh0GolRQmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;615&quot; height=&quot;495&quot; data-origin-width=&quot;767&quot; data-origin-height=&quot;617&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/13</guid>
      <comments>https://youngchae00.tistory.com/13#entry13comment</comments>
      <pubDate>Thu, 30 Jul 2026 21:10:04 +0900</pubDate>
    </item>
    <item>
      <title>10. 인터랙티브 그래프(plotly 패키지)</title>
      <link>https://youngchae00.tistory.com/12</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 id=&quot;toc-0&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  인터랙티브 그래프 준비&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;plotly 패키지 설치: 아나콘다 프롬프트에 &lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;pip install plotly&lt;/span&gt; 작성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;plotly 패키지: 인터랙티브(마우스 움직임에 반응하며 실시간으로 모양이 변하는) 그래프를 생성하는 패키지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;jupyter-dash 패키지 설치: 아나콘다 프롬프트에 &lt;span style=&quot;color: #ffffff; background-color: #000000;&quot;&gt;pip install jupyter-dash&lt;/span&gt; 작성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;jupyter-dash 패키지: plotly로 만든 그래프를 노트북에 출력하는 패키지&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;패키지 모두 설치 후, JupyterLab 재실행&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  산점도&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;산점도 생성: plotly 패키지 express 모듈의 scatter(data_frame = 데이터프레임명, x = '변수명', y = '변수명', color = '색상 구분할 변수') 함수 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785300500716&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd
import plotly.express as px

# 사용할 파일 불러오기
mpg = pd.read_csv('mpg.csv')

# 산점도 생성
px.scatter(data_frame = mpg, x = 'cty', y = 'hwy', color = 'drv')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bAN6h7/dJMcai5cQw1/UQYQOLaQpWKc5m2nb65eE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bAN6h7/dJMcai5cQw1/UQYQOLaQpWKc5m2nb65eE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bAN6h7/dJMcai5cQw1/UQYQOLaQpWKc5m2nb65eE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbAN6h7%2FdJMcai5cQw1%2FUQYQOLaQpWKc5m2nb65eE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;755&quot; height=&quot;352&quot; data-origin-width=&quot;1080&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  막대 그래프&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;막대 그래프 생성: plotly 패키지 express 모듈의 bar(data_frame = 데이터프레임명, x = '변수명', y = '변수명', color = '색상 구별할 변수명') 함수 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785301089343&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 자동차 종류별 빈도 생성
df = mpg.groupby('category', as_index = False)\
.agg(n = ('category', 'count'))

# 막대 그래프 생성
px.bar(data_frame = df, x = 'category', y = 'n', color = 'category')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;483&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYsgbq/dJMcacjEpgw/AYzdwUheBZRdVkC9ZX10OK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYsgbq/dJMcacjEpgw/AYzdwUheBZRdVkC9ZX10OK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYsgbq/dJMcacjEpgw/AYzdwUheBZRdVkC9ZX10OK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYsgbq%2FdJMcacjEpgw%2FAYzdwUheBZRdVkC9ZX10OK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;785&quot; height=&quot;347&quot; data-origin-width=&quot;1094&quot; data-origin-height=&quot;483&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  선 그래프&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;선 그래프 생성: plotly 패키지 express 모듈의 line(data_frame = 데이터프레임명, x = '변수명', y = '변수명') 함수 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785301386494&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 사용할 파일 불러오기
economics = pd.read_csv('economics.csv')

# 선 그래프 생성 (date가 object 타입이어도, ISO 형식이라면 자동으로 그래프 생성)
px.line(data_frame = economics, x = 'date', y = 'psavert')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/88TAU/dJMcagGtM82/Se5J0XFjA49EwWh5hSUSo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/88TAU/dJMcagGtM82/Se5J0XFjA49EwWh5hSUSo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/88TAU/dJMcagGtM82/Se5J0XFjA49EwWh5hSUSo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F88TAU%2FdJMcagGtM82%2FSe5J0XFjA49EwWh5hSUSo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;728&quot; height=&quot;347&quot; data-origin-width=&quot;984&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  상자 그림&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상자 그림 생성: plotly 패키지 express 모듈의 box(data_frame = 데이터프레임명, x = '변수명', y = '변수명', color = '색상 구별할 변수명') 함수 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;값 설명
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;max: 존재하는 값 중 최대값&lt;/li&gt;
&lt;li&gt;upper fence: 정상적인 데이터의 범위로 인정해 주는 상한선 (Q3 + 1.5IQR)&lt;/li&gt;
&lt;li&gt;q3: 제3사분위수&lt;/li&gt;
&lt;li&gt;median: 중앙값&lt;/li&gt;
&lt;li&gt;q1: 제1사분위수&lt;/li&gt;
&lt;li&gt;lower fence: 정상적인 데이터의 범위로 인정해 주는 하한선 (Q1 - 1.5IQR)&lt;/li&gt;
&lt;li&gt;min: 존재하는 값 중 최소값&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785301958643&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;px.box(data_frame = mpg, x = 'drv', y = 'hwy', color = 'drv')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LYxMD/dJMcajwnXJ9/C103Uyexc5YsK1VZdZxof0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LYxMD/dJMcajwnXJ9/C103Uyexc5YsK1VZdZxof0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LYxMD/dJMcajwnXJ9/C103Uyexc5YsK1VZdZxof0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLYxMD%2FdJMcajwnXJ9%2FC103Uyexc5YsK1VZdZxof0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;810&quot; height=&quot;374&quot; data-origin-width=&quot;1082&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  인터랙티브 그래프 기능 활용&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 값 확인: 마우스 커서 올리기&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;485&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ciE1M3/dJMcabE29TU/GIBsOZ3DGpokUcp5wZkGd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ciE1M3/dJMcabE29TU/GIBsOZ3DGpokUcp5wZkGd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ciE1M3/dJMcabE29TU/GIBsOZ3DGpokUcp5wZkGd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FciE1M3%2FdJMcabE29TU%2FGIBsOZ3DGpokUcp5wZkGd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;691&quot; height=&quot;303&quot; data-origin-width=&quot;1106&quot; data-origin-height=&quot;485&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;축 범위 변경: 마우스 드래그, 그래프 더블 클릭 시 원래대로 돌아온다.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;486&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YSn1y/dJMcabZsBKQ/P2iIzbOQOyUdK0loLrzuL0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YSn1y/dJMcabZsBKQ/P2iIzbOQOyUdK0loLrzuL0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YSn1y/dJMcabZsBKQ/P2iIzbOQOyUdK0loLrzuL0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYSn1y%2FdJMcabZsBKQ%2FP2iIzbOQOyUdK0loLrzuL0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;721&quot; height=&quot;316&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;486&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 범주 표시 on/off: 범례 항목 클릭&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1077&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0GMOX/dJMcajiQceL/hoQgH20qV6UUT0ZEOQpyw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0GMOX/dJMcajiQceL/hoQgH20qV6UUT0ZEOQpyw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0GMOX/dJMcajiQceL/hoQgH20qV6UUT0ZEOQpyw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0GMOX%2FdJMcajiQceL%2FhoQgH20qV6UUT0ZEOQpyw0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;648&quot; height=&quot;299&quot; data-origin-width=&quot;1077&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;HTML 파일로 저장: write_html('파일명') 함수를 활용하며, 웹 브라우저만 있으면 열어볼 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785302357886&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 그래프 변수에 할당
fig = px.scatter(data_frame = mpg, x = 'cty', y = 'hwy')

fig.write_html('scatter_plot.html')&lt;/code&gt;&lt;/pre&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/12</guid>
      <comments>https://youngchae00.tistory.com/12#entry12comment</comments>
      <pubDate>Wed, 29 Jul 2026 14:19:31 +0900</pubDate>
    </item>
    <item>
      <title>9. 지도 시각화(folium 패키지)</title>
      <link>https://youngchae00.tistory.com/11</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #374151; text-align: start;&quot;&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 id=&quot;toc-0&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  지도 시각화 준비&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;folium 패키지 설치: &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;아나콘다 프롬프트에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;color: #ffffff; background-color: #000000;&quot;&gt;pip&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff; letter-spacing: 0px;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;install folium&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;span&gt;&amp;nbsp;작성&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  시군구별 인구 단계 구분도&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시군구 경계 지도 데이터 불러오기
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;open(): 파일 열기&lt;/li&gt;
&lt;li&gt;load(): 내용 불러오기&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785286492245&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import json

# 시군구 경계 지도 데이터 불러오기
geo = json.load(open('SIG.geojson', encoding = 'UTF-8'))

&quot;&quot;&quot;
1. geojson: 위치 정보를 json 포맷으로 저장한 표준 지리 정보 데이터 포맷
2. SIG.geojson 파일 구조: 'features' 값에 각각의 시군구 정보가 딕셔너리 형태로 각각의 리스트에 포함되어 있음
{'features': [
{'type': 타입명,
'properties': {'SIG_CD': 행정구역코드, ...},
'geometry': {'type': 타입명, 'coordinates': [[[]]]
},
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;pre id=&quot;code_1785286867083&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 첫 번째 행정 구역 코드 출력
geo['features'][0]['properties']&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;43&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/tTWkh/dJMcad3UI9L/FymwjmbqSeMo24UPiZetB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/tTWkh/dJMcad3UI9L/FymwjmbqSeMo24UPiZetB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/tTWkh/dJMcad3UI9L/FymwjmbqSeMo24UPiZetB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FtTWkh%2FdJMcad3UI9L%2FFymwjmbqSeMo24UPiZetB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;661&quot; height=&quot;36&quot; data-origin-width=&quot;789&quot; data-origin-height=&quot;43&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785287100414&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 첫 번째 행정 구역 위도 경도 좌표 출력
geo['features'][0]['geometry']&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;113&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/7MhFt/dJMcaalOjj6/FKqKkOqzcTFwRKwvGylOj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/7MhFt/dJMcaalOjj6/FKqKkOqzcTFwRKwvGylOj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/7MhFt/dJMcaalOjj6/FKqKkOqzcTFwRKwvGylOj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F7MhFt%2FdJMcaalOjj6%2FFKqKkOqzcTFwRKwvGylOj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;518&quot; height=&quot;89&quot; data-origin-width=&quot;658&quot; data-origin-height=&quot;113&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시군구별 인구 데이터 불러오기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785287674296&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

# 시군구별 인구 데이터 불러오기
df_pop = pd.read_csv('Population_SIG.csv')
df_pop.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;257&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bVUP3V/dJMcac42VvY/4D70doLurX5gNNh3J7UACk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bVUP3V/dJMcac42VvY/4D70doLurX5gNNh3J7UACk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bVUP3V/dJMcac42VvY/4D70doLurX5gNNh3J7UACk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbVUP3V%2FdJMcac42VvY%2F4D70doLurX5gNNh3J7UACk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;221&quot; height=&quot;172&quot; data-origin-width=&quot;330&quot; data-origin-height=&quot;257&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785287701074&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 변수 속성 출력
df_pop.info()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;250&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgc140/dJMcahyydmG/wSxFU3FJRu9fQwAcXhl6Gk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgc140/dJMcahyydmG/wSxFU3FJRu9fQwAcXhl6Gk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgc140/dJMcahyydmG/wSxFU3FJRu9fQwAcXhl6Gk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgc140%2FdJMcahyydmG%2FwSxFU3FJRu9fQwAcXhl6Gk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;308&quot; height=&quot;186&quot; data-origin-width=&quot;414&quot; data-origin-height=&quot;250&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785287852138&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 숫자 형태의 행정 구역 코드 &amp;rarr; 문자 형태로 변환 (geo 데이터의 행정 구역 코드와 형태 통일)
# 이름이 아니라 행정 구역 코드를 쓰는 이유: 이름은 중복될 수 있음
df_pop['code'] = df_pop['code'].astype(str)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배경 지도 생성: &lt;span style=&quot;color: #000000;&quot;&gt;folium 패키지의 Map(location = [지도 중심 위도, 지도 중심 경도], zoom_start = 확대할 정도, tiles = '지도 종류') 함수 활용&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785288765999&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import folium

# 밝은 배경 지도 생성
# 밝은 배경의 지도를 생성하는 이유: 단계 구분이 잘 보이게 하기 위해
map_sig = folium.Map(location = [35.95, 127.7],
          zoom_start = 6.8,
          width = '90%',
          height = '100%',
          tiles = 'cartodbpositron')
map_sig&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단계 구분도 생성&lt;br /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;계급 구간 설정: 경우에 따라 생략이 가능하며, 데이터프레임의 quantile() 함수를 활용하여 구간을 설정하고 리스트로 반환&lt;/li&gt;
&lt;li&gt;단계 구분도 생성: folium 패키지의 Choropleth() 함수를 활용하며, geo_data를 기준으로 data를 결합하여 색상 레이어를 만드는 과정
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;geo_data = 지도 데이터명&lt;/li&gt;
&lt;li&gt;data = 색으로 표현할 통계 데이터명&lt;/li&gt;
&lt;li&gt;columns = ('지도 데이터와 연결할 통계 데이터의 변수명', '색으로 표현할 변수명')&lt;/li&gt;
&lt;li&gt;key_on = '통계 데이터와 연결할 지도 데이터의 변수명'
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;feature로 시작하는 이유: 지도 데이터 geojson 파일에서 features을 사용하기로 약속되어 있고, features내에서 각 지역을 feature로 가져오게 설정되어 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;fill_color = '컬러맵명'&lt;/li&gt;
&lt;li&gt;fill_opacity = 투명도&lt;/li&gt;
&lt;li&gt;line_opacity = 경계선 투명도&lt;/li&gt;
&lt;li&gt;bins =&amp;nbsp; 계급 구간 변수명&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;배경 지도에 단계 구분도 추가: add_to(배경 지도명) 함수 활용&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785290809945&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 5개의 계급 구간 설정
# 구간을 설정해야 하는 이유: 경기도와 서울특별시의 인구가 다른 지역에 비해 극단적으로 커서 모든 지역이 동일한 색으로 표현
# 극단적으로 값이 크다는 것을 확인하는 방법: 상자 그림 등
# 구간 설정 이전에 서울이 다른 색으로 표현되지 않는 이유: 지도 데이터에서 서울특별시 내의 구단위로 나누어서 경계를 구성

bins = list(df_pop['pop'].quantile([0, 0.2, 0.4, 0.6, 0.8, 1]))&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1785291199597&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 배경 지도에 단계 구분도 생성
folium.Choropleth(geo_data = geo,
data = df_pop,
columns = ('code', 'pop')
key_on = 'feature.properties.SIG_CD',
fill_color = 'YlGnBu',
fill_opacity = 1,
line_opacity = 0.5,
bins = bins)\
.add_to(map_sig)

map_sig&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;759&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RAsxM/dJMb998jO2C/zKNa2leCFvSe0lBIRWsjeK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RAsxM/dJMb998jO2C/zKNa2leCFvSe0lBIRWsjeK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RAsxM/dJMb998jO2C/zKNa2leCFvSe0lBIRWsjeK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRAsxM%2FdJMb998jO2C%2FzKNa2leCFvSe0lBIRWsjeK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;747&quot; height=&quot;476&quot; data-origin-width=&quot;1191&quot; data-origin-height=&quot;759&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  서울시 동별 외국인 인구 단계 구분도&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서울시 동 경계 지도 데이터 불러오기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785294446876&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;geo_seoul = json.load(open('EMD_Seoul.geojson', encoding = 'UTF-8'))
geo_seoul&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;362&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biWE2A/dJMcadbJ19K/ujg6Ez7qkmTxeZ6CVxZcFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biWE2A/dJMcadbJ19K/ujg6Ez7qkmTxeZ6CVxZcFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biWE2A/dJMcadbJ19K/ujg6Ez7qkmTxeZ6CVxZcFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiWE2A%2FdJMcadbJ19K%2Fujg6Ez7qkmTxeZ6CVxZcFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;243&quot; data-origin-width=&quot;800&quot; data-origin-height=&quot;362&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;서울시 동별 외국인 인구 데이터 불러오기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785294677253&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;foreigner = pd.read_csv('Foreigner_EMD_Seoul.csv')
foreigner.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;322&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zGa3L/dJMcaaGf9Ih/c9U7885HlSilOexHZaXULK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zGa3L/dJMcaaGf9Ih/c9U7885HlSilOexHZaXULK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zGa3L/dJMcaaGf9Ih/c9U7885HlSilOexHZaXULK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzGa3L%2FdJMcaaGf9Ih%2Fc9U7885HlSilOexHZaXULK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;258&quot; height=&quot;246&quot; data-origin-width=&quot;322&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785294719600&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 변수 속성 출력
foreigner.info()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;303&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BNVD5/dJMcacRsY99/rhw4eYh0k8IOYwOAVgB9Q0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BNVD5/dJMcacRsY99/rhw4eYh0k8IOYwOAVgB9Q0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BNVD5/dJMcacRsY99/rhw4eYh0k8IOYwOAVgB9Q0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBNVD5%2FdJMcacRsY99%2Frhw4eYh0k8IOYwOAVgB9Q0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;419&quot; height=&quot;243&quot; data-origin-width=&quot;522&quot; data-origin-height=&quot;303&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785294785841&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 숫자 형태의 행정 구역 코드 &amp;rarr; 문자 형태로 변환 (geo 데이터의 행정 구역 코드와 형태 통일)
foreigner['code'] = foreigner['code'].astype(str)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;배경 지도 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785295296626&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import folium

map_seoul = folium.Map(location = [37.56, 127],
                    zoom_start = 11,
                    tiles = 'cartodbpositron')

map_seoul&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JGJKI/dJMcafAJOLZ/TmzHYoBGZ12sIQk8RqG6uk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JGJKI/dJMcafAJOLZ/TmzHYoBGZ12sIQk8RqG6uk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JGJKI/dJMcafAJOLZ/TmzHYoBGZ12sIQk8RqG6uk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJGJKI%2FdJMcafAJOLZ%2FTmzHYoBGZ12sIQk8RqG6uk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;704&quot; height=&quot;402&quot; data-origin-width=&quot;1108&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;단계 구분도 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785295043846&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 8개 계급 구간 설정 (결측치 자동으로 제외)
bins = list(foreigner['pop'].quantile([0, 0.2, 0.4, 0.5, 0.6, 0.7, 0.8, 0.9, 1]))

# 배경 지도에 단계 구분도 생성
# nan_fill_color: 결측치 지역 색깔 (foreigner['pop'].describe() 결과 최소값 7이므로 결측치는 외국인 존재 x 혹은 누락을 의미)
folium.Choropleth(geo_data = geo_seoul,
                 data = foreigner,
                 columns = ('code','pop'),
                 key_on = 'feature.properties.ADM_DR_CD',
                 fill_color = 'Blues',
                 nan_fill_color = 'White',
                 fill_opacity = 1,
                 line_opacity = 0.5,
                 bins = bins)\
.add_to(map_seoul)

map_seoul&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;628&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5q15u/dJMcacKQj1S/dFaKs4mWaZRbOAeTHDm1dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5q15u/dJMcacKQj1S/dFaKs4mWaZRbOAeTHDm1dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5q15u/dJMcacKQj1S/dFaKs4mWaZRbOAeTHDm1dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5q15u%2FdJMcacKQj1S%2FdFaKs4mWaZRbOAeTHDm1dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;739&quot; height=&quot;422&quot; data-origin-width=&quot;1101&quot; data-origin-height=&quot;628&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;구 경계선 추가&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785296285859&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 구 경계 좌표 불러오기
geo_seoul_sig = json.load(open('SIG_Seoul.geojson', encoding = 'UTF-8'))

# 서울 구 라인 추가
# line_weight: 선 두께
folium.Choropleth(geo_data = geo_seoul_sig,
                 fill_opacity = 0,
                 line_weight = 4)\
.add_to(map_seoul)
map_seoul&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1104&quot; data-origin-height=&quot;613&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bD1Dp7/dJMcab6arbv/7Y2f5cgcjUmaeWfKHLQkkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bD1Dp7/dJMcab6arbv/7Y2f5cgcjUmaeWfKHLQkkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bD1Dp7/dJMcab6arbv/7Y2f5cgcjUmaeWfKHLQkkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbD1Dp7%2FdJMcab6arbv%2F7Y2f5cgcjUmaeWfKHLQkkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;734&quot; height=&quot;408&quot; data-origin-width=&quot;1104&quot; data-origin-height=&quot;613&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지도 저장: save('파일명') 함수를 활용하며, 웹 브라우저만 있으면 열어볼 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785296484143&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;map_seoul.save('map_seoul.html')&lt;/code&gt;&lt;/pre&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/11</guid>
      <comments>https://youngchae00.tistory.com/11#entry11comment</comments>
      <pubDate>Wed, 29 Jul 2026 12:42:45 +0900</pubDate>
    </item>
    <item>
      <title>8. 텍스트 마이닝(konlpy 패키지)</title>
      <link>https://youngchae00.tistory.com/10</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 id=&quot;toc-0&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  텍스트 마이닝 준비&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;KoNLPy 패키지 설치하기 전
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;java 설치:&amp;nbsp;&lt;a href=&quot;http://abit.ly/easypy_101&quot;&gt;http://abit.ly/easypy_101&lt;/a&gt;에서 운영체제 버전에 맞는 msi 파일 다운로드&lt;/li&gt;
&lt;li&gt;jpype1 패키지 설치: 아나콘다 프롬프트에 &lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;pip install jpype1&lt;/span&gt;&lt;span style=&quot;color: #000000;&quot;&gt; 작성&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;KoNLPy 패키지 설치: &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;아나콘다 프롬프트에&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;pip install konlpy&lt;/span&gt;&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;span style=&quot;color: #000000; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;작성&lt;/span&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;KoNLPy 패키지: 한글 텍스트로 형태소를 분석할 수 있게 해주는 패키지&lt;span style=&quot;color: #ffffff;&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  대통령 연설문 텍스트 마이닝&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연설문 불러오기
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;open(): 파일 열기
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;encoding: 컴퓨터는 사용자가 지정한 인코딩 방식을 통해 파일의 문자를 숫자로 저장한다. 따라서 이때 사용한 인코딩 방식을 작성해 주면, 파일을 불러올 때 숫자로 저장된 파일을 다시 문자로 변환할 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;read(): 내용 불러오기&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785199239214&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;moon = open('speech_moon.txt', encoding = 'UTF-8').read()
moon&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bHocIA/dJMcacqvTLg/OgrOek9ezrkD54Vkyo5QMk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bHocIA/dJMcacqvTLg/OgrOek9ezrkD54Vkyo5QMk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bHocIA/dJMcacqvTLg/OgrOek9ezrkD54Vkyo5QMk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbHocIA%2FdJMcacqvTLg%2FOgrOek9ezrkD54Vkyo5QMk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1261&quot; height=&quot;135&quot; data-origin-width=&quot;1261&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;불필요한 문자(특수 문자, 한자, 공백) 제거: moon이 str 타입 변수이므로 re(문자 처리) 패키지의 sub('패턴', '대체할 문자', 텍스트) 함수 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785200371463&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import re
moon = re.sub('[^가-힣]', ' ', moon) # 한글이 아닌 모든 문자를 공백으로 변환
moon&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1243&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beEu6C/dJMb99UMf5c/T6SbkVzEp69NJLhtnSQOa0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beEu6C/dJMb99UMf5c/T6SbkVzEp69NJLhtnSQOa0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beEu6C/dJMb99UMf5c/T6SbkVzEp69NJLhtnSQOa0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeEu6C%2FdJMb99UMf5c%2FT6SbkVzEp69NJLhtnSQOa0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1243&quot; height=&quot;131&quot; data-origin-width=&quot;1243&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;글의 내용을 파악하기 쉽도록 명사 추출: konlpy 패키지 tag 모듈 Hannanum 클래스의 nouns(텍스트) 함수 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;tag 모듈: 형태소 분석에 필요한 모든 도구를 모아놓은 상자&lt;/li&gt;
&lt;li&gt;Hannanum 클래스: tag 모듈 안에 Hannanum이라는 형태소 분석 도구&lt;/li&gt;
&lt;li&gt;nouns 함수: 명사 추출 함수&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785203298625&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import os
import konlpy

# konlpy 패키지 실행에 필요한 자바 위치를 못찾아서 에러 발생 &amp;rarr; 자바 위치 경로 지정
os.environ['JAVA_HOME'] = r'C:\Program Files\Amazon Corretto\jdk11.0.32_9'

# 형태소 분석 클래스의 객체 생성 = 클래스라는 설계도로 객체라는 실제 도구를 만들어서 활용
hannanum = konlpy.tag.Hannanum() 

 # 명사 추출
nouns = hannanum.nouns(moon)
nouns&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;137&quot; data-origin-height=&quot;310&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cDN1sw/dJMcadJzGMQ/51vlcM8hsVdYkC16bFsLGk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cDN1sw/dJMcadJzGMQ/51vlcM8hsVdYkC16bFsLGk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cDN1sw/dJMcadJzGMQ/51vlcM8hsVdYkC16bFsLGk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcDN1sw%2FdJMcadJzGMQ%2F51vlcM8hsVdYkC16bFsLGk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;111&quot; height=&quot;251&quot; data-origin-width=&quot;137&quot; data-origin-height=&quot;310&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785204004771&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

# 추출한 명사 리스트 데이터프레임으로 변환
df_word = pd.DataFrame({'word': nouns})
df_word&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;133&quot; data-origin-height=&quot;256&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3YRfP/dJMcaijUwu0/ymfWbfSzakEkHmRuRMLjKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3YRfP/dJMcaijUwu0/ymfWbfSzakEkHmRuRMLjKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3YRfP/dJMcaijUwu0/ymfWbfSzakEkHmRuRMLjKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3YRfP%2FdJMcaijUwu0%2FymfWbfSzakEkHmRuRMLjKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;113&quot; height=&quot;218&quot; data-origin-width=&quot;133&quot; data-origin-height=&quot;256&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빈도표 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785204524561&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 단어 길이 파악
df_word['len'] = df_word['word'].str.len()

# 한 글자 단어는 의미가 없는 경우가 많기 때문에 제거
df_word = df_word.query('len &amp;gt;= 2')
df_word&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;229&quot; data-origin-height=&quot;537&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/P9d3l/dJMcaalNJun/Jaz5UkYIMZzlmVKF5pBke0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/P9d3l/dJMcaalNJun/Jaz5UkYIMZzlmVKF5pBke0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/P9d3l/dJMcaalNJun/Jaz5UkYIMZzlmVKF5pBke0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FP9d3l%2FdJMcaalNJun%2FJaz5UkYIMZzlmVKF5pBke0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;182&quot; height=&quot;427&quot; data-origin-width=&quot;229&quot; data-origin-height=&quot;537&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785204723766&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 단어별 빈도 계산
df_word = df_word.groupby('word', as_index = False)\
.agg(n = ('word', 'count'))\
.sort_values('n', ascending = False)

df_word&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;549&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/viz4o/dJMcaaMXBAO/7WwIq34XbKQEiDUxCU2XE1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/viz4o/dJMcaaMXBAO/7WwIq34XbKQEiDUxCU2XE1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/viz4o/dJMcaaMXBAO/7WwIq34XbKQEiDUxCU2XE1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fviz4o%2FdJMcaaMXBAO%2F7WwIq34XbKQEiDUxCU2XE1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;178&quot; height=&quot;459&quot; data-origin-width=&quot;213&quot; data-origin-height=&quot;549&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;막대 그래프 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785205119498&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 빈도 수 상위 20개 단어 추출
top20 = df_word.head(20)

import seaborn as sns
import matplotlib.pyplot as plt

plt.rcParams.update({'font.family': 'Malgun Gothin'}) # 한글 깨짐 방지
sns.barplot(data = top20, x = 'n', y = 'word', hue = 'word') # 그래프 생성&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;637&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bT8pDX/dJMcahrO97m/bUnzewL9hnZZbMjrYEVdFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bT8pDX/dJMcahrO97m/bUnzewL9hnZZbMjrYEVdFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bT8pDX/dJMcahrO97m/bUnzewL9hnZZbMjrYEVdFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbT8pDX%2FdJMcahrO97m%2FbUnzewL9hnZZbMjrYEVdFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;684&quot; height=&quot;464&quot; data-origin-width=&quot;940&quot; data-origin-height=&quot;637&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;일자리 문제를 해결하고 복지국가를 지향하겠다는 의사 표현이 나타난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  기사 댓글 텍스트 마이닝&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;기사 댓글 파일 불러오기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785214770369&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df = pd.read_csv('news_comment_BTS.csv', encoding = 'UTF-8') # 인코딩을 작성하지 않아도 동작하지만, 확실히 명시하는 것 추천
df.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;519&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/WTITA/dJMcad3Ug26/sZN3wpm8jfWNro1Q9m8b0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/WTITA/dJMcad3Ug26/sZN3wpm8jfWNro1Q9m8b0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/WTITA/dJMcad3Ug26/sZN3wpm8jfWNro1Q9m8b0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWTITA%2FdJMcad3Ug26%2FsZN3wpm8jfWNro1Q9m8b0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;803&quot; height=&quot;337&quot; data-origin-width=&quot;1237&quot; data-origin-height=&quot;519&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785214797924&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df.info()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RuZjI/dJMcaaTHvFO/DZrjj4uxNPnadOhuB96k3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RuZjI/dJMcaaTHvFO/DZrjj4uxNPnadOhuB96k3k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RuZjI/dJMcaaTHvFO/DZrjj4uxNPnadOhuB96k3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRuZjI%2FdJMcaaTHvFO%2FDZrjj4uxNPnadOhuB96k3k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;355&quot; height=&quot;264&quot; data-origin-width=&quot;415&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;불필요한 문자 제거: reply가 데이터프레임에 담겨있는 변수이므로 데이터프레임의 str.replace('패턴', '대체할 문자', regex = True) 함수 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;regex = True: 특정 문자 형태가 아니라, [^가-힣] 등의 정규 표현식을 활용할 것이라고 명시&amp;nbsp;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785215162440&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df['reply'] = df['reply'].str.replace('[^가-힣]', ' ', regex = True)
df['reply'].head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;173&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EN0ds/dJMcaiRK9P6/HTkAr4TydQVoLg0zEhfbp0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EN0ds/dJMcaiRK9P6/HTkAr4TydQVoLg0zEhfbp0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EN0ds/dJMcaiRK9P6/HTkAr4TydQVoLg0zEhfbp0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEN0ds%2FdJMcaiRK9P6%2FHTkAr4TydQVoLg0zEhfbp0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;694&quot; height=&quot;138&quot; data-origin-width=&quot;868&quot; data-origin-height=&quot;173&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;명사 추출: 데이터프레임의 apply 함수를 활용하여 konlpy 패키지 tag 모듈 Kkma 클래스의 nouns 함수 적용
&lt;ul style=&quot;list-style-type: disc; color: #333333; text-align: start;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;tag 모듈: 형태소 분석에 필요한 모든 도구를 모아놓은 상자&lt;/li&gt;
&lt;li&gt;Kkma 클래스: tag 모듈 안의 Kkma이라는 형태소 분석 도구로 띄어쓰기 오류가 있어도 형태소를 잘 추출한다는 장점이 있어 정제되지 않은 댓글 텍스트 분석에 적합&lt;/li&gt;
&lt;li&gt;nouns 함수: 명사 추출 함수&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785216082569&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import konlpy
import os

# konlpy 패키지 실행에 필요한 자바 위치를 못찾아서 에러 발생 &amp;rarr; 자바 위치 경로 지정
os.environ['JAVA_HOME'] = r'C:\Program Files\Amazon Corretto\jdk11.0.32_9'

# 형태소 분석 클래스의 객체 생성
kkma = konlpy.tag.Kkma()

# 각 행마다 함수를 적용하여 명사 추출
nouns = df['reply'].apply(kkma.nouns)
nouns&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;318&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dTUod4/dJMcadXcAWY/V08YQaLnjAPAt4brXZImxk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dTUod4/dJMcadXcAWY/V08YQaLnjAPAt4brXZImxk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dTUod4/dJMcadXcAWY/V08YQaLnjAPAt4brXZImxk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdTUod4%2FdJMcadXcAWY%2FV08YQaLnjAPAt4brXZImxk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;659&quot; height=&quot;236&quot; data-origin-width=&quot;889&quot; data-origin-height=&quot;318&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1785216346396&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 한 행에 한 단어만 들어가도록 구성
nouns = nouns.explode()
nouns&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;309&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QeLuL/dJMcadv1dso/kOx2Z4vKgRkjh4SwNhMBUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QeLuL/dJMcadv1dso/kOx2Z4vKgRkjh4SwNhMBUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QeLuL/dJMcadv1dso/kOx2Z4vKgRkjh4SwNhMBUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQeLuL%2FdJMcadv1dso%2FkOx2Z4vKgRkjh4SwNhMBUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;345&quot; height=&quot;233&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;309&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빈도표 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785216691097&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 데이터프레임으로 변환
df_word = pd.DataFrame({'word': nouns})

# 한 글자 단어 제외하고 추출
df_word['len'] = df_word['word'].str.len()
df_word = df_word.query('len &amp;gt;= 2')

# 단어별 빈도 계산
df_word = df_word.groupby('word', as_index = False)\
.agg(n = ('word', 'count')\
.sort_values('n', ascending = False)
df_word&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;261&quot; data-origin-height=&quot;551&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lwbbP/dJMcac42vm6/WtyrmGNTsJT9TKKVWSUWnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lwbbP/dJMcac42vm6/WtyrmGNTsJT9TKKVWSUWnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lwbbP/dJMcac42vm6/WtyrmGNTsJT9TKKVWSUWnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlwbbP%2FdJMcac42vm6%2FWtyrmGNTsJT9TKKVWSUWnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;163&quot; height=&quot;344&quot; data-origin-width=&quot;261&quot; data-origin-height=&quot;551&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;막대 그래프 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1785216821395&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 빈도 상위 20개 단어 추출
top20 = df_word.head(20)

# 막대 그래프 생성
sns.barplot(data = top20, x = 'n', y = 'word', hue = 'word')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;632&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rXvy8/dJMcaazrSc6/nk357U6Pcsew2ONd5tuajK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rXvy8/dJMcaazrSc6/nk357U6Pcsew2ONd5tuajK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rXvy8/dJMcaazrSc6/nk357U6Pcsew2ONd5tuajK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrXvy8%2FdJMcaazrSc6%2Fnk357U6Pcsew2ONd5tuajK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;744&quot; height=&quot;505&quot; data-origin-width=&quot;931&quot; data-origin-height=&quot;632&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;'축하', '자랑', '국위선양' 등의 단어를 보면 BTS가 빌보드 차트 1위에 오른 일을 축하하고 국위 선양을 했다고 칭찬하는 댓글이 많다는 것을 알 수 있다.&lt;/li&gt;
&lt;li&gt;'군대', '면제', '군면제' 등의 단어를 보면 BTS의 병역 의무를 면제해 줘야 한다는 댓글도 많다는 것을 알 수 있다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/10</guid>
      <comments>https://youngchae00.tistory.com/10#entry10comment</comments>
      <pubDate>Tue, 28 Jul 2026 14:46:11 +0900</pubDate>
    </item>
    <item>
      <title>7-2. 한국복지패널 데이터 분석(2)</title>
      <link>https://youngchae00.tistory.com/9</link>
      <description>&lt;div style=&quot;background-color: #ffffff; color: #374151; text-align: start;&quot;&gt;
&lt;div&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 id=&quot;toc-0&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  직업별 월급 차이&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;&lt;/div&gt;
&lt;/div&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;월급 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://youngchae00.tistory.com/8&quot;&gt;https://youngchae00.tistory.com/8&lt;/a&gt; '성별에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;직업 변수 검토 및 전처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784869591583&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 타입 확인
welfare['code_job'].dtypes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;37&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/n7d8I/dJMcabE0diA/v06iaPDxvEvyykO5hprh70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/n7d8I/dJMcabE0diA/v06iaPDxvEvyykO5hprh70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/n7d8I/dJMcabE0diA/v06iaPDxvEvyykO5hprh70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fn7d8I%2FdJMcabE0diA%2Fv06iaPDxvEvyykO5hprh70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;162&quot; height=&quot;32&quot; data-origin-width=&quot;187&quot; data-origin-height=&quot;37&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784871680020&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값 특징 및 이상치 확인
welfare['code_job'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;335&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cScRcI/dJMcagNcxqW/pi4qazLDy86py2kBtwzkPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cScRcI/dJMcagNcxqW/pi4qazLDy86py2kBtwzkPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cScRcI/dJMcagNcxqW/pi4qazLDy86py2kBtwzkPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcScRcI%2FdJMcagNcxqW%2Fpi4qazLDy86py2kBtwzkPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;345&quot; height=&quot;271&quot; data-origin-width=&quot;426&quot; data-origin-height=&quot;335&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784869796168&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 4자리로 구성된 직종코드에서 4자리를 초과하거나 모름/무응답에 해당하는 9999 존재 확인
# 존재한다면 결측 처리 필요
# 불필요한 검색 과정을 방지하기 위해, 결측을 처리한 후 다른 데이터프레임과 결합하는 순서 추천
welfare['code_job'].max()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;74&quot; data-origin-height=&quot;31&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BPAT3/dJMcaiYnufx/op81vGgAHx2c6UPdrKJUo1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BPAT3/dJMcaiYnufx/op81vGgAHx2c6UPdrKJUo1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BPAT3/dJMcaiYnufx/op81vGgAHx2c6UPdrKJUo1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBPAT3%2FdJMcaiYnufx%2Fop81vGgAHx2c6UPdrKJUo1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;74&quot; height=&quot;31&quot; data-origin-width=&quot;74&quot; data-origin-height=&quot;31&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784870655128&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;&quot;&quot; 
welfare 데이터프레임에서 직업 분류 코드가 어떤 직업을 의미하는지 확인하기 쉽도록
직업 분류 코드별 직업명을 담고 있는 데이터를 불러온 후, welfare 데이터프레임과 결합
&quot;&quot;&quot;
list_job = pd.read_excel('Koweps_Codebook_2019.xlsx', sheet_name = '직종코드')
list_job.head()
welfare = welfare.merge(list_job, how = 'left', on = 'code_job')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;273&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bi0VSZ/dJMcaf1HdOh/LuzwyzIWNMlg4kN3086ChK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bi0VSZ/dJMcaf1HdOh/LuzwyzIWNMlg4kN3086ChK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bi0VSZ/dJMcaf1HdOh/LuzwyzIWNMlg4kN3086ChK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbi0VSZ%2FdJMcaf1HdOh%2FLuzwyzIWNMlg4kN3086ChK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;360&quot; height=&quot;190&quot; data-origin-width=&quot;517&quot; data-origin-height=&quot;273&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784874993436&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;&quot;&quot;
code_job에 값이 있지만 분류표에 해당하는 직업이 없어 job이 결측이 된 경우가 있는지 결측치 개수를 비교하여 확인
* 책에는 없지만, job에 결측값이 언제 생성되는지에서 출발 
* 경우1. code_job이 결측인 경우
* 경우2. code_job에 값이 있지만 분류표에 누락된 경우

직업별 월급을 추출할 때, 9999를 제외한 4자리 직업 분류 코드가 있다면 직업이 존재한다는 의미가 아닐까?
결측값의 개수가 다르다면 분류표에 누락된 직업이 없는지 확인해보는 것이 어떨까?
&quot;&quot;&quot;
print(welfare['code_job'].isna().sum())
print(welfare['job'].isna().sum())&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;54&quot; data-origin-height=&quot;48&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bqVGsl/dJMcagGqIuJ/p6nDqT85NxBqZqi5LT4UD0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bqVGsl/dJMcagGqIuJ/p6nDqT85NxBqZqi5LT4UD0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bqVGsl/dJMcagGqIuJ/p6nDqT85NxBqZqi5LT4UD0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbqVGsl%2FdJMcagGqIuJ%2Fp6nDqT85NxBqZqi5LT4UD0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;54&quot; height=&quot;48&quot; data-origin-width=&quot;54&quot; data-origin-height=&quot;48&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784871192512&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 데이터프레임 결합 확인
welfare.dropna(subset = ['code_job'])[['code_job', 'job']].head()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;266&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kxPYP/dJMcaazpm7g/YrBlSnsG5yNMZ5y5aQOot1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kxPYP/dJMcaazpm7g/YrBlSnsG5yNMZ5y5aQOot1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kxPYP/dJMcaazpm7g/YrBlSnsG5yNMZ5y5aQOot1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkxPYP%2FdJMcaazpm7g%2FYrBlSnsG5yNMZ5y5aQOot1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;329&quot; height=&quot;199&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;266&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;직업별 월급 차이 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784872888136&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 직업별 월급 평균을 확인할 것이므로 직업과 월급의 결측 행 제거

welfare_job_income = welfare.dropna(subset = ['job', 'income'])\
.groupby('job', as_index = False)\
.agg(mean_income = ('income', 'mean'))

welfare_job_income&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;538&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bj5XJ9/dJMcadvYXTf/h9XxtfDANH1kVLlkoRinJk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bj5XJ9/dJMcadvYXTf/h9XxtfDANH1kVLlkoRinJk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bj5XJ9/dJMcadvYXTf/h9XxtfDANH1kVLlkoRinJk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbj5XJ9%2FdJMcadvYXTf%2Fh9XxtfDANH1kVLlkoRinJk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;345&quot; height=&quot;308&quot; data-origin-width=&quot;602&quot; data-origin-height=&quot;538&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784873049649&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 월급 상위 top 10 직업 확인
top10 = welfare_job_income.sort_values('mean_income', ascending = False).head(10)
top10&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKHpfJ/dJMcafgqePh/O1kB8lpMKixpDkx966Fkw1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKHpfJ/dJMcafgqePh/O1kB8lpMKixpDkx966Fkw1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKHpfJ/dJMcafgqePh/O1kB8lpMKixpDkx966Fkw1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKHpfJ%2FdJMcafgqePh%2FO1kB8lpMKixpDkx966Fkw1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;415&quot; height=&quot;365&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784873257320&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import matplotlib.pyplot as plt
plt.rcParams.update({'font.family': 'Malgun Gothic'}) # 그래프 한글 깨짐 방지

# 월급 top10 직업별 월급 막대 그래프 생성 (y축이 직업이어야 각 직업명이 겹치지 않고 출력)
sns.barplot(data = top10, x = 'mean_income', y = 'job', hue = 'job')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1241&quot; data-origin-height=&quot;635&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/y2keB/dJMcacxcf1v/QA9nNXllT1OK7wKU1Acnf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/y2keB/dJMcacxcf1v/QA9nNXllT1OK7wKU1Acnf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/y2keB/dJMcacxcf1v/QA9nNXllT1OK7wKU1Acnf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fy2keB%2FdJMcacxcf1v%2FQA9nNXllT1OK7wKU1Acnf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;737&quot; height=&quot;377&quot; data-origin-width=&quot;1241&quot; data-origin-height=&quot;635&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784873361823&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 월급 하위 10개 직업 확인
bottom10 = welfare_job_income.sort_values('mean_income').head(10)
bottom10&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;493&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/85WzG/dJMb99UKbF8/sZyr90sfC8jDFCOp93X3PK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/85WzG/dJMb99UKbF8/sZyr90sfC8jDFCOp93X3PK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/85WzG/dJMb99UKbF8/sZyr90sfC8jDFCOp93X3PK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F85WzG%2FdJMb99UKbF8%2FsZyr90sfC8jDFCOp93X3PK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;413&quot; height=&quot;336&quot; data-origin-width=&quot;606&quot; data-origin-height=&quot;493&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784873438770&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 월급 하위 10개 직업별 월급 막대 그래프 생성
sns.barplot(data = bottom10, x = 'mean_income', y = 'job', hue = 'job')\
.set(xlim = (0, 800)) # top10과 비교 용이하도록 축 범위 설정&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;629&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/yGgBU/dJMb99NVfEO/eHTYCKsf5siJgapXcliP6k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/yGgBU/dJMb99NVfEO/eHTYCKsf5siJgapXcliP6k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/yGgBU/dJMb99NVfEO/eHTYCKsf5siJgapXcliP6k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FyGgBU%2FdJMb99NVfEO%2FeHTYCKsf5siJgapXcliP6k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;776&quot; height=&quot;400&quot; data-origin-width=&quot;1219&quot; data-origin-height=&quot;629&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;월급이 가장 많은 직업은 의료 진료 전문가이며 평균 781만원을 받는다.&lt;/li&gt;
&lt;li&gt;월급이 가장 적은 직업은 기타 돌봄&amp;middot;보건 및 개인 생활 서비스 종사자이며&amp;nbsp; 평균 73만원을 받는다.&lt;/li&gt;
&lt;li&gt;의료 진료 전문가는 기타 돌봄&amp;middot;보건 및 개인 생활 서비스 종사자의 평균 10배가 넘는 월급을 받는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  성별 직업 빈도&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성별 변수 검토 및 전처리&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://youngchae00.tistory.com/8&quot;&gt;https://youngchae00.tistory.com/8&lt;/a&gt; '성별에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;직업 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '직업별 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성별 직업 빈도 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784876784869&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 남성 직업 빈도 상위 10개 추출

job_male = welfare.dropna(subset = ['job'])\
.query('sex == &quot;male&quot;')\
.groupby('job', as_index = False)\
.agg(n = ('job', 'count'))\
.sort_values('n', ascending = False)\
.head(10)

job_male&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;503&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5oMKb/dJMcaf8ro2l/vgALOe3wxYOGorSvl92GKK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5oMKb/dJMcaf8ro2l/vgALOe3wxYOGorSvl92GKK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5oMKb/dJMcaf8ro2l/vgALOe3wxYOGorSvl92GKK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5oMKb%2FdJMcaf8ro2l%2FvgALOe3wxYOGorSvl92GKK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;282&quot; height=&quot;404&quot; data-origin-width=&quot;351&quot; data-origin-height=&quot;503&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784876999120&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 남성 직업 빈도 상위 10개 막대 그래프 생성
sns.barplot(data = job_male, x = 'n', y = 'job', hue = 'job').set(xlim = (0, 500)) # 비교를 위해 여성, 남성 동일한 축 범위 지정&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;627&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/urpEu/dJMcaaGdlfA/6aRysyjg6Fw5ncyoE67zR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/urpEu/dJMcaaGdlfA/6aRysyjg6Fw5ncyoE67zR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/urpEu/dJMcaaGdlfA/6aRysyjg6Fw5ncyoE67zR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FurpEu%2FdJMcaaGdlfA%2F6aRysyjg6Fw5ncyoE67zR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;716&quot; height=&quot;418&quot; data-origin-width=&quot;1073&quot; data-origin-height=&quot;627&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784876838417&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 여성 직업 빈도 상위 10개 추출
job_female = welfare.dropna(subset = ['job'])\
.query('sex == &quot;female&quot;')\
.groupby('job', as_index = False)\
.agg(n = ('job', 'count'))\
.sort_values('n', ascending = False)\
.head(10)

job_female&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;490&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8CbUj/dJMcaijSpBL/UI9lQwe93gAMZIXX6p2dpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8CbUj/dJMcaijSpBL/UI9lQwe93gAMZIXX6p2dpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8CbUj/dJMcaijSpBL/UI9lQwe93gAMZIXX6p2dpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8CbUj%2FdJMcaijSpBL%2FUI9lQwe93gAMZIXX6p2dpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;308&quot; height=&quot;387&quot; data-origin-width=&quot;390&quot; data-origin-height=&quot;490&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784877066859&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 여성 직업 빈도 상위 10개 막대 그래프 생성
sns.barplot(data = job_female, x = 'n', y = 'job', hue = 'job').set(xlim = (0, 500))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;615&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nPN5K/dJMcaiRINVR/JZDsVOsRvkMt4kkQv0KBy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nPN5K/dJMcaiRINVR/JZDsVOsRvkMt4kkQv0KBy1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nPN5K/dJMcaiRINVR/JZDsVOsRvkMt4kkQv0KBy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnPN5K%2FdJMcaiRINVR%2FJZDsVOsRvkMt4kkQv0KBy1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;792&quot; height=&quot;433&quot; data-origin-width=&quot;1125&quot; data-origin-height=&quot;615&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;남성과 여성 모두 작물 재배 종사자가 가장 많다.&lt;/li&gt;
&lt;li&gt;남성은 작물 재배 종사자 뒤로 자동차 운전원, 경영 관련 사무원, 매장 판매 종사자 순으로 많다.&lt;/li&gt;
&lt;li&gt;여성은 작물 재배 종사자 뒤로 청소원 및 환경미화원, 매장 판매 종사자, 회계 및 경리 사무원 순으로 많다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  종교 유무에 따른 이혼율&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;종교 변수 검토 및 전처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784877501036&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 타입 확인
welfare['religion'].dtypes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;178&quot; data-origin-height=&quot;30&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgu2Oz/dJMcaalLNb3/7VBUItnl84bXZnaOVZzKz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgu2Oz/dJMcaalLNb3/7VBUItnl84bXZnaOVZzKz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgu2Oz/dJMcaalLNb3/7VBUItnl84bXZnaOVZzKz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcgu2Oz%2FdJMcaalLNb3%2F7VBUItnl84bXZnaOVZzKz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;166&quot; height=&quot;28&quot; data-origin-width=&quot;178&quot; data-origin-height=&quot;30&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784877524983&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값 특징 및 이상치 확인
welfare['religion'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k79oI/dJMcadJxDd5/NRa5qKMY3Q8dt4k1w9pLhK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k79oI/dJMcadJxDd5/NRa5qKMY3Q8dt4k1w9pLhK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k79oI/dJMcadJxDd5/NRa5qKMY3Q8dt4k1w9pLhK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk79oI%2FdJMcadJxDd5%2FNRa5qKMY3Q8dt4k1w9pLhK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;253&quot; height=&quot;95&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784877552048&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 종교 변수 결측 개수 확인
welfare['religion'].isna().sum()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;124&quot; data-origin-height=&quot;24&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKnlAq/dJMcadJxDjU/2RVtyuO0pk5lmK9qUCEqz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKnlAq/dJMcadJxDjU/2RVtyuO0pk5lmK9qUCEqz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKnlAq/dJMcadJxDjU/2RVtyuO0pk5lmK9qUCEqz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKnlAq%2FdJMcadJxDjU%2F2RVtyuO0pk5lmK9qUCEqz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;114&quot; height=&quot;22&quot; data-origin-width=&quot;124&quot; data-origin-height=&quot;24&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784877612614&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값의 의미를 이해하기 쉽도록 종교 변수 값 1인 경우 'yes', 2인 경우 'no'로 변경 (값 의미: 코드북 참고)
welfare['religion'] = np.where(welfare['religion'] == 1, 'yes', 'no')

# 값 변경 확인
welfare['religion'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;104&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PghMt/dJMcahFdIo5/HbsNuajv8i4Ezpsp5wI1kK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PghMt/dJMcahFdIo5/HbsNuajv8i4Ezpsp5wI1kK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PghMt/dJMcahFdIo5/HbsNuajv8i4Ezpsp5wI1kK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPghMt%2FdJMcahFdIo5%2FHbsNuajv8i4Ezpsp5wI1kK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;234&quot; height=&quot;89&quot; data-origin-width=&quot;274&quot; data-origin-height=&quot;104&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;혼인 변수 검토 및 전처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784878173754&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 타입 확인
welfare['marriage_type'].dtypes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;181&quot; data-origin-height=&quot;33&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYvp3f/dJMcahSIJ9L/gGD94Hle46JCkpHsGtC331/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYvp3f/dJMcahSIJ9L/gGD94Hle46JCkpHsGtC331/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYvp3f/dJMcahSIJ9L/gGD94Hle46JCkpHsGtC331/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYvp3f%2FdJMcahSIJ9L%2FgGD94Hle46JCkpHsGtC331%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;176&quot; height=&quot;32&quot; data-origin-width=&quot;181&quot; data-origin-height=&quot;33&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784878204422&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값 특징 및 이상치 확인
welfare['marriage_type'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zOM7P/dJMcafU1XeZ/D8JEJ1oLRtpjfNV6fKFH4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zOM7P/dJMcafU1XeZ/D8JEJ1oLRtpjfNV6fKFH4k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zOM7P/dJMcafU1XeZ/D8JEJ1oLRtpjfNV6fKFH4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzOM7P%2FdJMcafU1XeZ%2FD8JEJ1oLRtpjfNV6fKFH4k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;241&quot; height=&quot;199&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;233&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784878225145&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 혼인 변수 결측 개수 확인
welfare['marriage_type'].isna().sum()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;126&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZV2jh/dJMcaixreex/bJJVk00EmtDFHxGcl2l7p0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZV2jh/dJMcaixreex/bJJVk00EmtDFHxGcl2l7p0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZV2jh/dJMcaixreex/bJJVk00EmtDFHxGcl2l7p0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZV2jh%2FdJMcaixreex%2FbJJVk00EmtDFHxGcl2l7p0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;104&quot; height=&quot;34&quot; data-origin-width=&quot;126&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784878439313&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 변수 생성: marriage_type 값에 따라 유배우, 이혼, 그 외로 분류 (값 의미: 코드북 참고)
welfare['marriage'] = np.where(welfare['marriage_type'] == 1, 'marriage', np.where(welfare['marriage_type'] == 3, 'divorce', 'etc'))

# 이혼 여부별 빈도
n_divorce = welfare.groupby('marriage', as_index = False)\
.agg(n = ('marriage', 'count'))

n_divorce&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;198&quot; data-origin-height=&quot;170&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AOQ9l/dJMcajpqTr3/2vO64CloB3QrCkFKK6eRnK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AOQ9l/dJMcajpqTr3/2vO64CloB3QrCkFKK6eRnK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AOQ9l/dJMcajpqTr3/2vO64CloB3QrCkFKK6eRnK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAOQ9l%2FdJMcajpqTr3%2F2vO64CloB3QrCkFKK6eRnK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;163&quot; height=&quot;140&quot; data-origin-width=&quot;198&quot; data-origin-height=&quot;170&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;종교 유무에 따른 이혼율 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784881577189&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 종교별 이혼 여부 확인
rel_div = welfare.query('marriage != &quot;etc&quot;')\
.groupby('religion', as_index = False)\
['marriage']\
.value_counts(normalize = True)

rel_div

&quot;&quot;&quot;
코드 해석
1. welfare.query('marriage != &quot;etc&quot;'): 유배우와 이혼 행만 추출
- 종교가 이혼 여부에 영향을 줄 수 있는가?가 분석 목표!
- 별거는 이혼 여부가 애매하므로 제외!
- 사별은 사망에 의한 것으로 종교에 따른 이혼 O, X를 선택할 기회가 박탈되었으므로 제외!
2. groupby('religion', as_index = False): 종교별 그룹화
3. ['marriage']: 종교별로 그룹화 된 상태에서 각 그룹에서 marriage 변수 열의
4. value_counts(normalize = True): 값에 따른 비율 계산

Q) 왜 전체에서 각각의 이혼 비율을 계산하는 것이 아니라 각 종교 유무마다 이혼의 비율을 계산할까?
A) 종교가 있는 사람의 수가 단순히 많다면, 그냥 종교 있는 사람의 이혼율이 무조건 높다고 나옴
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2Gf4b/dJMcadpgFcF/Vg05r6UmN7Hmnxk5KapoxK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2Gf4b/dJMcadpgFcF/Vg05r6UmN7Hmnxk5KapoxK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2Gf4b/dJMcadpgFcF/Vg05r6UmN7Hmnxk5KapoxK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2Gf4b%2FdJMcadpgFcF%2FVg05r6UmN7Hmnxk5KapoxK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;291&quot; height=&quot;188&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;220&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784882090592&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 이혼인 행만 추출하여 백분율 % 값 소수점 첫 번째 자리까지 변경
rel_div = rel_div.query('marriage == &quot;divorce&quot;')\
.assign(proportion = round(rel_div[proportion] * 100, 1))

rel_div&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/QnoUd/dJMcafOiOKs/sdfob9eqrJBLmGA7TR8GUK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/QnoUd/dJMcafOiOKs/sdfob9eqrJBLmGA7TR8GUK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/QnoUd/dJMcafOiOKs/sdfob9eqrJBLmGA7TR8GUK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FQnoUd%2FdJMcafOiOKs%2Fsdfob9eqrJBLmGA7TR8GUK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;294&quot; height=&quot;109&quot; data-origin-width=&quot;364&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;이혼율은 종교가 있으면 8.0% 종교가 없으면 9.5%로 종교가 있는 사람이 이혼을 덜 한다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  연령대 및 종교 유무에 따른 이혼율&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연령대 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://youngchae00.tistory.com/8&quot;&gt;https://youngchae00.tistory.com/8&lt;/a&gt; '연령대에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;종교 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '종교 유무에 따른 이혼율' 분석에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연령대별 이혼율 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784889432041&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;age_div = welfare.query('marriage != &quot;etc&quot;')\
.groupby('ageg', as_index = False)\
['marriage']\
.value_counts(normalize = True)

age_div&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;314&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bLwslk/dJMcaiEb6sw/AmVUYhNSURxQrrL8SNpUS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bLwslk/dJMcaiEb6sw/AmVUYhNSURxQrrL8SNpUS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bLwslk/dJMcaiEb6sw/AmVUYhNSURxQrrL8SNpUS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbLwslk%2FdJMcaiEb6sw%2FAmVUYhNSURxQrrL8SNpUS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;260&quot; height=&quot;240&quot; data-origin-width=&quot;340&quot; data-origin-height=&quot;314&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784889485311&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 연령대별 빈도 확인
welfare.query('marriage != &quot;etc&quot;')\
.groupby('ageg', as_index = False)\
['marriage']\
.value_counts()
# 출력 결과: 초년층의 표본이 너무 작아 초년층을 대표할 수 없으므로 비교 대상에서 제외&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;312&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LIpfp/dJMcabye1JD/jppKpDFtAOUmtSU0dCjVe1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LIpfp/dJMcabye1JD/jppKpDFtAOUmtSU0dCjVe1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LIpfp/dJMcabye1JD/jppKpDFtAOUmtSU0dCjVe1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLIpfp%2FdJMcabye1JD%2FjppKpDFtAOUmtSU0dCjVe1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;247&quot; height=&quot;260&quot; data-origin-width=&quot;296&quot; data-origin-height=&quot;312&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784889828505&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 중년층, 노년층 이혼인 행만 추출하여 백분율 % 값 소수점 첫 번째 자리까지 변경
age_div = age_div.query('ageg != &quot;young&quot; &amp;amp; marriage == &quot;divorce&quot;')\
.assign(proportion = round(age_div['proportion'] * 100, 1))

age_div&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b7HTJR/dJMcacKNHzg/GCTNONa3eKnxrNTTT8cFG1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b7HTJR/dJMcacKNHzg/GCTNONa3eKnxrNTTT8cFG1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b7HTJR/dJMcacKNHzg/GCTNONa3eKnxrNTTT8cFG1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb7HTJR%2FdJMcacKNHzg%2FGCTNONa3eKnxrNTTT8cFG1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;290&quot; height=&quot;114&quot; data-origin-width=&quot;344&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연령대 및 종교 유무에 따른 이혼율 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784890295124&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 연령대 및 종교별 이혼율 확인
age_rel_div = welfare.query('marriage != &quot;etc&quot; &amp;amp; ageg != &quot;young&quot;')\
.groupby(['ageg', 'religion'], as_index = False)\
['marriage']\
.value_counts(normalize = True)

age_rel_div&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;408&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IRp5A/dJMcaasEmSI/FO4SkdPewkBsHMNpdFK4F0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IRp5A/dJMcaasEmSI/FO4SkdPewkBsHMNpdFK4F0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IRp5A/dJMcaasEmSI/FO4SkdPewkBsHMNpdFK4F0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIRp5A%2FdJMcaasEmSI%2FFO4SkdPewkBsHMNpdFK4F0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;330&quot; height=&quot;312&quot; data-origin-width=&quot;432&quot; data-origin-height=&quot;408&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784890420248&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 이혼인 행만 추출하여 백분율 % 값 소수점 첫 번째 자리까지 변경
age_rel_div = age_rel_div.query('marriage == &quot;divorce&quot;')\
.assign(proportion = round(age_rel_div['proportion'] * 100, 1))

age_rel_div&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;221&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c1tX4O/dJMcaae6ZJS/Yp34B0om7KAsaF1ljDLXd0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c1tX4O/dJMcaae6ZJS/Yp34B0om7KAsaF1ljDLXd0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c1tX4O/dJMcaae6ZJS/Yp34B0om7KAsaF1ljDLXd0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc1tX4O%2FdJMcaae6ZJS%2FYp34B0om7KAsaF1ljDLXd0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;349&quot; height=&quot;178&quot; data-origin-width=&quot;433&quot; data-origin-height=&quot;221&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784890461102&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 연령대 및 종교별 이혼율 막대 그래프 생성
sns.barplot(data = age_rel_div, x = 'ageg', y = 'proportion', hue = 'religion')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;639&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2U6cq/dJMcabLURku/oxkKo5WZghk3AskkJTqvAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2U6cq/dJMcabLURku/oxkKo5WZghk3AskkJTqvAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2U6cq/dJMcabLURku/oxkKo5WZghk3AskkJTqvAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2U6cq%2FdJMcabLURku%2FoxkKo5WZghk3AskkJTqvAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;670&quot; height=&quot;487&quot; data-origin-width=&quot;879&quot; data-origin-height=&quot;639&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중년은 1.3%, 노년은 1.8% 정도로 종교가 없는 사람의 이혼율이 더 높다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  지역별 연령대 비율&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연령대 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;a href=&quot;https://youngchae00.tistory.com/8&quot;&gt;https://youngchae00.tistory.com/8&lt;/a&gt;&lt;span&gt; '&lt;/span&gt;연령대에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지역 변수 검토 및 전처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784892788395&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 타입 확인
welfare['code_region'].dtypes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;181&quot; data-origin-height=&quot;30&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/u0aBv/dJMcagzzCfL/n4vpIJGGBZu1hKSs4tBsz1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/u0aBv/dJMcagzzCfL/n4vpIJGGBZu1hKSs4tBsz1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/u0aBv/dJMcagzzCfL/n4vpIJGGBZu1hKSs4tBsz1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fu0aBv%2FdJMcagzzCfL%2Fn4vpIJGGBZu1hKSs4tBsz1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;169&quot; height=&quot;28&quot; data-origin-width=&quot;181&quot; data-origin-height=&quot;30&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784892808090&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값 특징 및 이상치 확인
welfare['code_region'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/xpfj8/dJMb991zABQ/rjkdmkTHP3rnVa2Xl0CRS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/xpfj8/dJMb991zABQ/rjkdmkTHP3rnVa2Xl0CRS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/xpfj8/dJMb991zABQ/rjkdmkTHP3rnVa2Xl0CRS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fxpfj8%2FdJMb991zABQ%2FrjkdmkTHP3rnVa2Xl0CRS1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;227&quot; height=&quot;191&quot; data-origin-width=&quot;277&quot; data-origin-height=&quot;233&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784892831058&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 지역 변수 결측 개수 확인
welfare['code_region'].isna().sum()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;135&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cYBW99/dJMcadiCLYJ/X8IApyJBGmDkW0adpngirK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cYBW99/dJMcadiCLYJ/X8IApyJBGmDkW0adpngirK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cYBW99/dJMcadiCLYJ/X8IApyJBGmDkW0adpngirK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcYBW99%2FdJMcadiCLYJ%2FX8IApyJBGmDkW0adpngirK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;119&quot; height=&quot;36&quot; data-origin-width=&quot;135&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784892960630&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;&quot;&quot; 
welfare 데이터프레임에서 지역 코드가 어떤 지역을 의미하는지 확인하기 쉽도록
지역 코드 목록을 만든 후, welfare 데이터프레임과 결합
(값 의미: 코드북 참고)
&quot;&quot;&quot;
list_region = pd.DataFrame({'code_region': [1, 2, 3, 4, 5, 6, 7],
                           'region': ['서울',
                                     '수도권(인천/경기)',
                                     '부산/경남/울산',
                                     '대구/경북',
                                     '대전/충남',
                                     '강원/충북',
                                     '광주/전남/전북/제주도']})

welfare = welfare.merge(list_region, how = 'left', on = 'code_region')
welfare[['code_region', 'region']].head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;272&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JmcX7/dJMcaf8rFwF/2kunD9h9OZlroMUpMRwuKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JmcX7/dJMcaf8rFwF/2kunD9h9OZlroMUpMRwuKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JmcX7/dJMcaf8rFwF/2kunD9h9OZlroMUpMRwuKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJmcX7%2FdJMcaf8rFwF%2F2kunD9h9OZlroMUpMRwuKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;218&quot; height=&quot;232&quot; data-origin-width=&quot;256&quot; data-origin-height=&quot;272&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;지역별 연령대 비율 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784893907531&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 지역별 연령대 비율 확인
region_ageg = welfare.groupby('region', as_index = False)\
['ageg']\
.value_counts(normalize = True)

region_ageg&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;201&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/8rTOk/dJMcaiRI4XG/vEdpBuYQXWkdtAUy0CWuB0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/8rTOk/dJMcaiRI4XG/vEdpBuYQXWkdtAUy0CWuB0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/8rTOk/dJMcaiRI4XG/vEdpBuYQXWkdtAUy0CWuB0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F8rTOk%2FdJMcaiRI4XG%2FvEdpBuYQXWkdtAUy0CWuB0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;373&quot; height=&quot;159&quot; data-origin-width=&quot;472&quot; data-origin-height=&quot;201&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784893964170&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 백분율 % 값 소수점 첫 번째 자리까지 변경
region_ageg = region_ageg.assign(proportion = round(region_ageg['proportion'] * 100, 1))
region_ageg.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bEqR2s/dJMcadvZkKH/x7FyFcxuOUgI88McyexVb1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bEqR2s/dJMcadvZkKH/x7FyFcxuOUgI88McyexVb1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bEqR2s/dJMcadvZkKH/x7FyFcxuOUgI88McyexVb1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbEqR2s%2FdJMcadvZkKH%2Fx7FyFcxuOUgI88McyexVb1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;387&quot; height=&quot;222&quot; data-origin-width=&quot;458&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;누적 비율 막대 그래프 생성
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;누적 비율 막대 그래프를 생성하기 위한 피벗 만들기(데이터프레임 행, 열 구성 변경): 데이터프레임의 pivot(index = '변수명', columns = '변수명', values = '변수명') 함수 활용
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;피벗 필요한 이유: 누적 비율 막대 그래프는 한 행의 값을 누적해서 그래프를 표현하므로 이를 명시하기 위함&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;피벗의 행, 열 순서 정렬: 데이터프레임의 sort_values('열 이름')[['1번', '2번', ...]] 함수 활용
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;열 이름의 값이 많은 순서대로 그래프를 생성하고, 각 그래프 내에서는 1번, 2번 순서로 구성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;그래프 생성: 데이터프레임의 plot.barh(stacked = True) 함수 활용&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784894620002&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 피벗 만들기
df_pivot = region_ageg.pivot(index = 'region',
                            columns = 'ageg',
                            values = 'proportion')
df_pivot

&quot;&quot;&quot;
코드 해석
1. index: region을 인덱스로 사용
2. columns: 연령대별로 열을 구성
3. values: 각 항목의 값은 비율로
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;401&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beqXG0/dJMcabkOCAJ/KbhIP9KwPpg5USqbeObG0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beqXG0/dJMcabkOCAJ/KbhIP9KwPpg5USqbeObG0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beqXG0/dJMcabkOCAJ/KbhIP9KwPpg5USqbeObG0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeqXG0%2FdJMcabkOCAJ%2FKbhIP9KwPpg5USqbeObG0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;313&quot; height=&quot;275&quot; data-origin-width=&quot;456&quot; data-origin-height=&quot;401&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784895548797&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# old 값이 많은 순서대로 그래프 생성, 각 막대는 초년, 중년, 노년 순으로 구성
reorder_df = df_pivot.sort_values('old')[['young', 'middle', 'old']]

# 가로 누적 비율 막대 그래프 생성
reorder_df.plot.barh(stacked = True)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;604&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PNLkl/dJMcacKNLot/X6nYuhNwmPVTsxBcNzmgo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PNLkl/dJMcacKNLot/X6nYuhNwmPVTsxBcNzmgo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PNLkl/dJMcacKNLot/X6nYuhNwmPVTsxBcNzmgo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPNLkl%2FdJMcacKNLot%2FX6nYuhNwmPVTsxBcNzmgo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;657&quot; height=&quot;383&quot; data-origin-width=&quot;1036&quot; data-origin-height=&quot;604&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대구/경북의 노년층 비율이 가장 높고, 그 뒤로는 강원/충북, 광주/전남/전북/제주도, 부산/경남/울산 순으로 높다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/9</guid>
      <comments>https://youngchae00.tistory.com/9#entry9comment</comments>
      <pubDate>Fri, 24 Jul 2026 21:21:52 +0900</pubDate>
    </item>
    <item>
      <title>7-1. 한국복지패널 데이터 분석(1)</title>
      <link>https://youngchae00.tistory.com/8</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 id=&quot;toc-0&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  데이터 분석 준비&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;2020년에 발간된 한국복지패널 데이터 다운로드&lt;/li&gt;
&lt;li&gt;아나콘다 프롬프트에 &lt;span style=&quot;background-color: #000000; color: #ffffff;&quot;&gt;pip install pyreadstat&lt;/span&gt; 명령어를 입력하여 pyreadstat 패키지 설치&lt;br /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;pyreadstat 패키지: pandas 패키지로 통계 분석 소프트웨어(SPSS, SAS, STAT 등)의 데이터 파일을 불러올 수 있도록 하는 패키지&lt;/li&gt;
&lt;li&gt;pyreadstat 패키지 설치가 필요한 이유: 한국복지패널 데이터는 통계 분석 소프트웨어인 SPSS 전용 파일&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;데이터를 불러온 후, 코드북을 참고하여 변수명을 변경
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;코드북: 데이터의 특징을 설명해 놓은 자료로, 코드로 된 변수명과 값의 의미가 설명되어 있음&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;505&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/blsH1r/dJMb991x6Hs/V4gVpwUYvAUjXKcXEUWiyk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/blsH1r/dJMb991x6Hs/V4gVpwUYvAUjXKcXEUWiyk/img.png&quot; data-alt=&quot;분석에 사용할 변수에 대한 코드북 내용 정리본&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/blsH1r/dJMb991x6Hs/V4gVpwUYvAUjXKcXEUWiyk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FblsH1r%2FdJMb991x6Hs%2FV4gVpwUYvAUjXKcXEUWiyk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;1641&quot; height=&quot;505&quot; data-origin-width=&quot;1641&quot; data-origin-height=&quot;505&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;분석에 사용할 변수에 대한 코드북 내용 정리본&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784786069881&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 사용할 패키지 로드
import pandas as pd
import numpy as np
import seaborn as sns&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1784786141596&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 데이터 불러오기
raw_welfare = pd.read_spss('Koweps_hpwc14_2019_beta2.sav')&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1784786176632&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 원본데이터 유지하고 분석하기 위한 데이터 복사
welfare = raw_welfare.copy()

# 변수명 변경
welfare = welfare.rename(columns = {'h14_g3': 'sex',
                                   'h14_g4': 'birth',
                                   'h14_g10': 'marriage_type',
                                   'h14_g11': 'religion',
                                   'p1402_8aq1': 'income',
                                   'h14_eco9': 'code_job',
                                   'h14_reg7': 'code_region'})&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  데이터 분석 절차&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;사용할 변수 검토
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;변수 타입 확인: dtypes 활용&lt;/li&gt;
&lt;li&gt;전처리 전략을 수립하기 위해 값의 특징과 이상치/극단치 확인: 범주형 자료인 경우 value_counts(), 연속형 자료인 경우 describe() 함수 활용&amp;nbsp;&lt;/li&gt;
&lt;li&gt;결측치 확인: &lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;isna().sum() 함수 활용&lt;/span&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;변수 전처리
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;분석 과정에서 다루기 편하게 변경&lt;/li&gt;
&lt;li&gt;이상치/극단치를 결측치로 대체&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;결측 행을 제거한 후, 변수 간의 관계 분석&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt; 성별에 따른 월급 차이&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성별 변수 검토 및 전처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784787337580&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 타입 확인
welfare['sex'].dtypes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;193&quot; data-origin-height=&quot;35&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ca9vmI/dJMcacKMbN4/dWgVeWGhYK3k2fKkKR3sdk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ca9vmI/dJMcacKMbN4/dWgVeWGhYK3k2fKkKR3sdk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ca9vmI/dJMcacKMbN4/dWgVeWGhYK3k2fKkKR3sdk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fca9vmI%2FdJMcacKMbN4%2FdWgVeWGhYK3k2fKkKR3sdk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;160&quot; height=&quot;29&quot; data-origin-width=&quot;193&quot; data-origin-height=&quot;35&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784787374185&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값의 특징 및 이상치 확인 (1: 남자, 2: 여자, 9: 모름/무응답)
welfare['sex'].value_counts()

&quot;&quot;&quot;
결과 해석
1. 값이 1, 2로만 구성되어 있어 이상치 존재하지 않는다.
2. 값에 9가 존재하는 경우, 분석에서 제외해야 하므로 아래 코드를 통해 결측치로 변경해야 한다.
welfare['sex'] = np.where(welfare['sex'] == 9, np.nan, welfare['sex'])
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;108&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cf6Ej8/dJMcagNbpd8/ppsLannbYWFD6yURzhOBCK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cf6Ej8/dJMcagNbpd8/ppsLannbYWFD6yURzhOBCK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cf6Ej8/dJMcagNbpd8/ppsLannbYWFD6yURzhOBCK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcf6Ej8%2FdJMcagNbpd8%2FppsLannbYWFD6yURzhOBCK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;243&quot; height=&quot;89&quot; data-origin-width=&quot;294&quot; data-origin-height=&quot;108&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784788191355&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 결측치 확인
welfare['sex'].isna().sum() # 결과: 결측치 존재 X&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;128&quot; data-origin-height=&quot;41&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c64TLS/dJMcaixqbhN/ZIHrrVeDjtoVO8cZtZ4341/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c64TLS/dJMcaixqbhN/ZIHrrVeDjtoVO8cZtZ4341/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c64TLS/dJMcaixqbhN/ZIHrrVeDjtoVO8cZtZ4341/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc64TLS%2FdJMcaixqbhN%2FZIHrrVeDjtoVO8cZtZ4341%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;99&quot; height=&quot;32&quot; data-origin-width=&quot;128&quot; data-origin-height=&quot;41&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784787909336&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값의 의미를 이해하기 쉽도록 변수 값 1인 경우 male로 2인 경우 female로 변경 (값 의미: 코드북 참고)
welfare['sex'] = np.where(welfare['sex'] == 1, 'male', 'female')

# 값 변경 확인
welfare['sex'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;96&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NkOYP/dJMcaalKEhg/I5EoJGkQkTDlJxHjktLpy0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NkOYP/dJMcaalKEhg/I5EoJGkQkTDlJxHjktLpy0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NkOYP/dJMcaalKEhg/I5EoJGkQkTDlJxHjktLpy0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNkOYP%2FdJMcaalKEhg%2FI5EoJGkQkTDlJxHjktLpy0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;241&quot; height=&quot;82&quot; data-origin-width=&quot;282&quot; data-origin-height=&quot;96&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;월급(일한 달의 월 평균 임금) 변수 검토 및 전처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784788999984&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 타입 확인
welfare['income'].dtypes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;185&quot; data-origin-height=&quot;39&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dqzdf3/dJMcadCH6dd/ZkRdrFtz8MkuutkKOlvE70/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dqzdf3/dJMcadCH6dd/ZkRdrFtz8MkuutkKOlvE70/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dqzdf3/dJMcadCH6dd/ZkRdrFtz8MkuutkKOlvE70/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdqzdf3%2FdJMcadCH6dd%2FZkRdrFtz8MkuutkKOlvE70%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;171&quot; height=&quot;36&quot; data-origin-width=&quot;185&quot; data-origin-height=&quot;39&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784789019326&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값의 특징 및 이상치/극단치 확인
welfare['income'].describe()

&quot;&quot;&quot;
결과 해석
1. 평균값(mean) 268만원, 중앙값(50%) 220만원으로 전반적으로 낮은 값 쪽으로 치우쳐져 있다.
2. 양 극단 25% 씩을 제외한 나머지 보통의 50%가 150 ~ 345만원에 분포한다.
3. 0 ~ 1892만원으로 구성되어 있어 모름/무응답에 해당하는 9999는 존재하지 않는다.
4. 근로자들의 월급 만을 비교하기 위해 값이 0인 경우를 결측치로 변경한다.
* 값이 0인 경우를 책에서는 결측치로 여기는 것 같은데, 0은 값이 있는 상태이고, 결측치는 값이 없는 상태로 나는 서로 다른 값이라고 판단
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;235&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NSh10/dJMcacRpuBG/IGtKISj3mXDflZfiHKwlB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NSh10/dJMcacRpuBG/IGtKISj3mXDflZfiHKwlB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NSh10/dJMcacRpuBG/IGtKISj3mXDflZfiHKwlB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNSh10%2FdJMcacRpuBG%2FIGtKISj3mXDflZfiHKwlB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;263&quot; height=&quot;197&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;235&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784802391402&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 히스토그램으로 분포 확인: 0~250만원에 가장 밀집
sns.histplot(data = welfare, x = 'income')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;634&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ed4YO/dJMcadbGq0E/hqyy2gSfeK9rzKjIf8KMq0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ed4YO/dJMcadbGq0E/hqyy2gSfeK9rzKjIf8KMq0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ed4YO/dJMcadbGq0E/hqyy2gSfeK9rzKjIf8KMq0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEd4YO%2FdJMcadbGq0E%2Fhqyy2gSfeK9rzKjIf8KMq0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;565&quot; height=&quot;406&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;634&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784802781872&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 결측치 확인
welfare['income'].isna().sum() # 결과: 9884개

# 0으로 된 값 개수 확인
(welfare['income'] == 0).sum() # 결과: 7개

# 0 &amp;rarr; 결측치로 대체
welfare['income'] = np.where(welfare['income'] == 0, np.nan, welfare['income'])

# 결측치 개수 확인
welfare['income'].isna().sum() # 결과: 9991(= 9884 + 7)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;성별 월급 평균 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784804149129&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;welfare_sex_income = welfare.dropna(subset = ['income'])\
.groupby('sex', as_index = False)\
.agg(mean_income = ('income', 'mean'))

welfare_sex_income&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;257&quot; data-origin-height=&quot;135&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cVVwZb/dJMcahk1t6U/RX3Tk5KFVbN7fSB1copAK1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cVVwZb/dJMcahk1t6U/RX3Tk5KFVbN7fSB1copAK1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cVVwZb/dJMcahk1t6U/RX3Tk5KFVbN7fSB1copAK1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcVVwZb%2FdJMcahk1t6U%2FRX3Tk5KFVbN7fSB1copAK1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;236&quot; height=&quot;124&quot; data-origin-width=&quot;257&quot; data-origin-height=&quot;135&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784804345545&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 막대 그래프 그리기
sns.barplot(data = welfare_sex_income, x = 'sex', y = 'mean_income', hue = 'sex')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;603&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/O4ZoD/dJMcag0zAZR/RmhKRnjJGyZn9atVbKakmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/O4ZoD/dJMcag0zAZR/RmhKRnjJGyZn9atVbKakmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/O4ZoD/dJMcag0zAZR/RmhKRnjJGyZn9atVbKakmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FO4ZoD%2FdJMcag0zAZR%2FRmhKRnjJGyZn9atVbKakmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;552&quot; height=&quot;379&quot; data-origin-width=&quot;878&quot; data-origin-height=&quot;603&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;남성이 여성보다 월급을 평균 약 163만원 더 많이 받는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  나이와 월급의 관계&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;월급 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '성별에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나이 변수 검토 및 전처리&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784808890214&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 타입 확인
welfare['birth'].dtypes&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;181&quot; data-origin-height=&quot;35&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NbcUI/dJMcafOhKIw/IBaSJDNyvbjxPfCPf2WLpK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NbcUI/dJMcafOhKIw/IBaSJDNyvbjxPfCPf2WLpK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NbcUI/dJMcafOhKIw/IBaSJDNyvbjxPfCPf2WLpK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNbcUI%2FdJMcafOhKIw%2FIBaSJDNyvbjxPfCPf2WLpK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;181&quot; height=&quot;35&quot; data-origin-width=&quot;181&quot; data-origin-height=&quot;35&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784808953755&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 값의 특징 및 이상치/극단치 확인
welfare['birth'].describe()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;234&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/CcdSM/dJMcacqsPaM/cwXSt7ATBavhjBiVHl1hW0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/CcdSM/dJMcacqsPaM/cwXSt7ATBavhjBiVHl1hW0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/CcdSM/dJMcacqsPaM/cwXSt7ATBavhjBiVHl1hW0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FCcdSM%2FdJMcacqsPaM%2FcwXSt7ATBavhjBiVHl1hW0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;294&quot; height=&quot;213&quot; data-origin-width=&quot;323&quot; data-origin-height=&quot;234&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784809001651&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 결측치 확인
welfare['birth'].isna().sum()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;124&quot; data-origin-height=&quot;32&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ccAQTd/dJMcabrvpOf/XMRVBtONHkk2aJgCfgi6Fk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ccAQTd/dJMcabrvpOf/XMRVBtONHkk2aJgCfgi6Fk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ccAQTd/dJMcabrvpOf/XMRVBtONHkk2aJgCfgi6Fk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FccAQTd%2FdJMcabrvpOf%2FXMRVBtONHkk2aJgCfgi6Fk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;124&quot; height=&quot;32&quot; data-origin-width=&quot;124&quot; data-origin-height=&quot;32&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784809181380&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 기존 나이 변수 값이 년도로 구성되어 있으므로 조사한 년도인 2019년 기준 나이로 변환
welfare = welfare.assign(age = 2019 - welfare['birth'] + 1)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나이별 월급 평균 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784810040888&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;welfare_age_income = welfare.dropna(subset = ['income'])\
.groupby('age', as_index = False)\
.agg(mean_income = ('income', 'mean')

welfare_age_income&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;267&quot; data-origin-height=&quot;532&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LyZuh/dJMcaidauDn/4AmvDXEkPrAZGtjkMFrro1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LyZuh/dJMcaidauDn/4AmvDXEkPrAZGtjkMFrro1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LyZuh/dJMcaidauDn/4AmvDXEkPrAZGtjkMFrro1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLyZuh%2FdJMcaidauDn%2F4AmvDXEkPrAZGtjkMFrro1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;221&quot; height=&quot;440&quot; data-origin-width=&quot;267&quot; data-origin-height=&quot;532&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784810473392&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 나이별 월급 평균 선그래프 생성
sns.lineplot(data = welfare_age_income, x = 'age', y = 'mean_income')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;644&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b5wPlt/dJMcaf1GzjF/MR9pJakF5VsCLaklkpNt6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b5wPlt/dJMcaf1GzjF/MR9pJakF5VsCLaklkpNt6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b5wPlt/dJMcaf1GzjF/MR9pJakF5VsCLaklkpNt6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb5wPlt%2FdJMcaf1GzjF%2FMR9pJakF5VsCLaklkpNt6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;660&quot; height=&quot;485&quot; data-origin-width=&quot;877&quot; data-origin-height=&quot;644&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;20대 초반에 월급을 평균 150만원 가량 받고 이후 지속해서 증가하는 추세를 보인다.&lt;/li&gt;
&lt;li&gt;40대에 평균 350만원 가량으로 가장 많이 받고 지속해서 감소하다가 60대 후반부터는 20대보다 낮은 월급을 받는다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  연령대에 따른 월급 차이&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;월급 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '성별에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연령대 변수 검토 및 전처리&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 25%; height: 80px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;범주&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;기준&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;초년층&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;30세 미만&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;중년층&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;30 ~ 59세&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;노년층&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center; height: 20px;&quot;&gt;60세 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1784811614237&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 나이대별 파생변수 생성
welfare = welfare.assign(ageg = np.where(welfare['age'] &amp;lt; 30, 'young', np.where(welfare['age'] &amp;lt; 60, 'middle', 'old')))

welfare['ageg'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EhxvU/dJMb998gjKA/hQAet94bKjspCEd4uhj4i1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EhxvU/dJMb998gjKA/hQAet94bKjspCEd4uhj4i1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EhxvU/dJMb998gjKA/hQAet94bKjspCEd4uhj4i1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEhxvU%2FdJMb998gjKA%2FhQAet94bKjspCEd4uhj4i1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;257&quot; height=&quot;115&quot; data-origin-width=&quot;290&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연령대별 월급 평균 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784811804941&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;welfare_ageg_income = welfare.dropna(subset = ['income'])\
.groupby('ageg', as_index = False)\
.agg(mean_income = ('income', 'mean'))

welfare_ageg_income&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;267&quot; data-origin-height=&quot;181&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRQKul/dJMcaalKX4U/Cn2rimB05dktMhYlk9byB1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRQKul/dJMcaalKX4U/Cn2rimB05dktMhYlk9byB1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRQKul/dJMcaalKX4U/Cn2rimB05dktMhYlk9byB1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRQKul%2FdJMcaalKX4U%2FCn2rimB05dktMhYlk9byB1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;237&quot; height=&quot;161&quot; data-origin-width=&quot;267&quot; data-origin-height=&quot;181&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784811892677&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 연령대별 월급 평균 막대 그래프 생성
sns.barplot(data = welfare_ageg_income, x = 'ageg', y = 'mean_income', order = ['young', 'middle', 'old'], hue = 'ageg')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;637&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bvdUSZ/dJMb991ysSZ/spQNKc9ljBo2MWogb0kZfK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bvdUSZ/dJMb991ysSZ/spQNKc9ljBo2MWogb0kZfK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bvdUSZ/dJMb991ysSZ/spQNKc9ljBo2MWogb0kZfK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbvdUSZ%2FdJMb991ysSZ%2FspQNKc9ljBo2MWogb0kZfK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;531&quot; height=&quot;389&quot; data-origin-width=&quot;870&quot; data-origin-height=&quot;637&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중년층이 평균 330만원 정도로 가장 많은 월급을 받는다.&lt;/li&gt;
&lt;li&gt;노년층은 평균 140만원으로, 초년층이 받는 195만원보다 적다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  연령대 및 성별 월급 차이&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연령대 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '연령대에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;성별 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '성별에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;월급 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '성별에 따른 월급 차이 분석'에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;연령대 및 성별 월급 평균 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784812349286&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;welfare_ageg_sex_income = welfare.dropna(subset = ['income'])\
.groupby(['ageg', 'sex'], as_index = False)\
.agg(mean_income = ('income', 'mean'))

welfare_ageg_sex_income&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;307&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RSY6A/dJMcagTTHLW/oxWj2BXqxYd6MrKHoDDNN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RSY6A/dJMcagTTHLW/oxWj2BXqxYd6MrKHoDDNN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RSY6A/dJMcagTTHLW/oxWj2BXqxYd6MrKHoDDNN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRSY6A%2FdJMcagTTHLW%2FoxWj2BXqxYd6MrKHoDDNN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;282&quot; height=&quot;249&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;307&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784812479190&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 연령대 및 성별 월급 막대 그래프 생성
sns.barplot(data = welfare_ageg_sex_income, x = 'ageg', y = 'mean_income', order = ['young', 'middle', 'old'], hue = 'sex')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;648&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/wlPYB/dJMcabSw0gp/0oxKJtKxdaO3rCp4OraK0K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/wlPYB/dJMcabSw0gp/0oxKJtKxdaO3rCp4OraK0K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/wlPYB/dJMcabSw0gp/0oxKJtKxdaO3rCp4OraK0K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FwlPYB%2FdJMcabSw0gp%2F0oxKJtKxdaO3rCp4OraK0K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;613&quot; height=&quot;450&quot; data-origin-width=&quot;883&quot; data-origin-height=&quot;648&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;초년에는 성별에 따른 월급 차이가 크지 않다.&lt;/li&gt;
&lt;li&gt;중년에는 성별에 따른 월급 차이가 크게 벌어져 남성이 평균 179만 원가량 더 많이 번다.&lt;/li&gt;
&lt;li&gt;노년에는 성별에 따른 월급 차이가 중년에 비해 줄어들지만, 여전히 남성이 평균 114만원 가량 더 많이 번다.&lt;/li&gt;
&lt;li&gt;앞서 연령대별 월급 차이를 분석한 결과 노년층이 초년층보다 월급을 적게 버는 경우는 주로 여성에서만 나타난다.&lt;/li&gt;
&lt;li&gt;앞서 연령대별 월급 차이를 분석한 결과 중년층이 초년층보다 월급을 많이 버는 경우는 주로 남성에서 나타난다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  나이 및 성별 월급 차이&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나이 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '나이와 월급의 관계' 분석에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;성별 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '성별에 따른 월급 차이' 분석에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;월급 변수 검토 및 전처리
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;위의 '성별에 따른 월급 차이' 분석에서 진행&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;나이 및 성별 월급 평균 확인&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784813288852&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;welfare_age_sex = welfare.dropna(subset = ['income'])\
.groupby(['age', 'sex'], as_index = False)\
.agg(mean_income = ('income', 'mean'))

welfare_age_sex&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;530&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjyPYW/dJMcadiBvcx/UC4XtS4qSSKO1KFatG2mh1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjyPYW/dJMcadiBvcx/UC4XtS4qSSKO1KFatG2mh1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjyPYW/dJMcadiBvcx/UC4XtS4qSSKO1KFatG2mh1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjyPYW%2FdJMcadiBvcx%2FUC4XtS4qSSKO1KFatG2mh1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;264&quot; height=&quot;402&quot; data-origin-width=&quot;348&quot; data-origin-height=&quot;530&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784813373869&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 나이 및 성별 월급 평균 선 그래프 생성
sns.lineplot(data = welfare_age_sex, x = 'age', y = 'mean_income', hue = 'sex')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;853&quot; data-origin-height=&quot;643&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cdyWzn/dJMcabdSp5r/k3HqJ9ZbVYadBUKwukud60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cdyWzn/dJMcabdSp5r/k3HqJ9ZbVYadBUKwukud60/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cdyWzn/dJMcabdSp5r/k3HqJ9ZbVYadBUKwukud60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcdyWzn%2FdJMcabdSp5r%2Fk3HqJ9ZbVYadBUKwukud60%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;505&quot; height=&quot;381&quot; data-origin-width=&quot;853&quot; data-origin-height=&quot;643&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;분석 결과
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;남성의 월급은 평균 50세 전후까지 증가하다가 50대 후반부터 급격하게 감소한다.&lt;/li&gt;
&lt;li&gt;여성의 월급은 평균 30세 초반까지 약간 증가하다가 이후로는 완만하게 감소한다.&lt;/li&gt;
&lt;li&gt;성별 월급 격차는 평균 30대 중반부터 벌어지다가 50대에 가장 크게 벌어지고, 이후 점점 줄어들어 80대가 되면 비슷해진다.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/8</guid>
      <comments>https://youngchae00.tistory.com/8#entry8comment</comments>
      <pubDate>Thu, 23 Jul 2026 22:31:58 +0900</pubDate>
    </item>
    <item>
      <title>6. 데이터 시각화(seaborn 패키지)</title>
      <link>https://youngchae00.tistory.com/7</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 id=&quot;toc-0&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  산점도&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;산점도: 연속값으로 된 두 변수의 관계를 표현할 때 사용하며, seaborn 패키지의 scatterplot(data = 데이터 프레임명, x = 'x축 변수명', y = 'y축 변수명') 함수 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파일 불러오기: read_csv('파일경로') 함수 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784508739494&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import seaborn as sns
import pandas as pd

mpg = pd.read_csv('mpg.csv')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;산점도 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784508808932&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sns.scatterplot(data = mpg, x = 'displ', y = 'hwy')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cjNiNa/dJMcabZlcNG/nHYMo1p4KFZN2HK7JIUcF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cjNiNa/dJMcabZlcNG/nHYMo1p4KFZN2HK7JIUcF0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cjNiNa/dJMcabZlcNG/nHYMo1p4KFZN2HK7JIUcF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcjNiNa%2FdJMcabZlcNG%2FnHYMo1p4KFZN2HK7JIUcF0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;532&quot; height=&quot;432&quot; data-origin-width=&quot;615&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;범위 제한: set(xlim = (시작, 끝), ylim = (시작, 끝)) 함수를 활용하며, set 함수 내에 xlim과 ylim 중에 하나만 작성하는 것도 가능&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784509054308&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sns.scatterplot(data = mpg, x = 'displ', y = 'hwy').set(xlim = (3, 6), ylim = (10, 30));

# set(xlim = (3, 6)): x축 범위 3 ~ 6으로 제한
# set(ylim = (10, 30)): y축 범위 10 ~ 30으로 제한
# 함수 뒤에 ;작성시 &amp;lt;Axes: xlabel...&amp;gt; 설명 메시지 숨김 처리 가능&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;469&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYTpx2/dJMb99UF4vD/j14I9sxXBWKC38RsUg4FQK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYTpx2/dJMb99UF4vD/j14I9sxXBWKC38RsUg4FQK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYTpx2/dJMb99UF4vD/j14I9sxXBWKC38RsUg4FQK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYTpx2%2FdJMb99UF4vD%2Fj14I9sxXBWKC38RsUg4FQK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;607&quot; height=&quot;431&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;469&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;종류별 표시 색상 변경: scatterplot(data = 데이터 프레임명, x = 'x축 변수명', y = 'y축 변수명', hue='종류별 색상 다르게 할 변수명')&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784509318181&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sns.scatterplot(data = mpg, x = 'displ', y = 'hwy', hue = 'drv')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;464&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c4xRHP/dJMcacDXy1l/IndsKNTM2WtqegmcW0zwFk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c4xRHP/dJMcacDXy1l/IndsKNTM2WtqegmcW0zwFk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c4xRHP/dJMcacDXy1l/IndsKNTM2WtqegmcW0zwFk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc4xRHP%2FdJMcacDXy1l%2FIndsKNTM2WtqegmcW0zwFk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;579&quot; height=&quot;428&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;464&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그래프 설정 변경&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784509663386&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import matplotlib.pyplot as plt

# 그래프 설정 변경
plt.rcParams.update({'figure.dpi': '150',
'figure.figsize': [8, 6],
'font.size': '15',
'font.family': 'Malgun Gothic'})

# figure.dpi: 해상도 (기본값 72)
# figure.figsize: 가로 세로 크기 (기본값 [6, 4])
# font.size: 글자 크기 (기본값 10)
# font.family: 폰트 (기본값 sans-serif), 맑은 고딕 설정시 그래프에 한글이 깨져보이는 것을 방지

# 그래프 설정 원래대로 복구
plt.rcParams.update(plt.rcParamsDefault)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;그래프 이미지 저장: 이미지 클릭 &amp;rarr; shift + 마우스 오른쪽 &amp;rarr; 이미지를 다른 이름으로 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  막대 그래프&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;막대 그래프: 집단 간 차이를 표현할 때 사용&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;평균 막대 그래프 생성
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;평균 데이터 프레임 생성 후, 막대 그래프를 평균 크기 순서대로 나타내기 위한 정렬 실행&lt;/li&gt;
&lt;li&gt;seaborn 패키지의 barplot(data = 데이터 프레임명, x&amp;nbsp; =&amp;nbsp; 'x축 변수명', y = 'y축 변수명') 함수를 활용하여 막대 그래프 생성&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784511707290&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# drv별 hwy 평균을 나타내는 데이터 프레임 생성한 후, mean_hwy 기준 내림차순 정렬
# groupby 함수 as_index = False 설정 필수: 그래프를 만들기 위해서는 변수명이 필요

hwy_avg = mpg.groupby('drv', as_index = False)\
.agg(mean_hwy = ('hwy', 'mean'))\
.sort_values('mean_hwy', ascending = False)&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1784512048242&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 막대 그래프 생성
sns.barplot(data = hwy_avg, x = 'drv', y = 'mean_hwy')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;빈도 막대 그래프 생성
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;방법1
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;빈도 데이터 프레임 생성 후, 빈도 크기 순서대로 나타내기 위한 정렬 실행&lt;/li&gt;
&lt;li&gt;barplot(data = 데이터 프레임명, x = 'x축 변수명', y = 'y축 변수명') 함수 활용&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;방법2
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;seaborn 패키지의 countplot(data = 데이터 프레임명, x = 'x축 변수명', order = 데이터 프레임명['졍렬할 변수명'].value_counts().index) 함수 활용
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;order을 설정하지 않을시, 데이터 프레임명['순서를 확인할 변수명'].unique()로 출력되는 순서대로 그래프 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784517563106&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df_mpg = mpg.groupby('drv', as_index = False)\
.agg(n = ('drv', 'count')

# 방법 1
sns.barplot(data = df_mpg, x = 'drv', y = 'n')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;501&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lkFvR/dJMcafHrhtA/9ozFptYqckgcZCnyI8vO6K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lkFvR/dJMcafHrhtA/9ozFptYqckgcZCnyI8vO6K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lkFvR/dJMcafHrhtA/9ozFptYqckgcZCnyI8vO6K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlkFvR%2FdJMcafHrhtA%2F9ozFptYqckgcZCnyI8vO6K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;529&quot; height=&quot;422&quot; data-origin-width=&quot;628&quot; data-origin-height=&quot;501&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784517726387&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 방법2

sns.countplot(data = df_mpg, x = 'drv', order = df_mpg['drv'].value_counts().index)

# value_counts().index: 크기 순서대로
# order = ['4', 'f', 'r']로 지정도 가능&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;497&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OTWYO/dJMb998c9YZ/Tce2lG7kb35KdkHT2CZTj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OTWYO/dJMb998c9YZ/Tce2lG7kb35KdkHT2CZTj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OTWYO/dJMb998c9YZ/Tce2lG7kb35KdkHT2CZTj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOTWYO%2FdJMb998c9YZ%2FTce2lG7kb35KdkHT2CZTj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;561&quot; height=&quot;432&quot; data-origin-width=&quot;645&quot; data-origin-height=&quot;497&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  선 그래프&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;선 그래프: 시간에 따라 달라지는 데이터를 표현할 때 사용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시계열 데이터: 일정 시간 간격을 두고 나열된 데이터&lt;/li&gt;
&lt;li&gt;시계열 그래프: 시계열 데이터를 선으로 표현한 그래프&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;시계열 그래프 생성
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;날짜 변수열의 데이터 타입을 확인하고 pandas 패키지의 to_datetime(데이터 프레임명['타입 바꿀 변수명']) 함수로 datetime 타입으로 변경&lt;/li&gt;
&lt;li&gt;x축으로 보고자 하는 변수&lt;span style=&quot;color: #333333; text-align: start;&quot;&gt;(연도, 월, 일 등)를 데이터프레임의 dt.year, dt.month, dt.day 등을 활용하여 추출한 후,&lt;span&gt; 데이터 프레임에&amp;nbsp;&lt;/span&gt;&lt;/span&gt;추가&lt;/li&gt;
&lt;li&gt;seaborn 패키지의 lineplot(data = 데이터 프레임명, x = '변수명', y = '변수명', ci = None) 함수 활용
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;ci(신뢰구간): 데이터의 조사 오차(표본 오차)를 기반하여, 모평균이 표본 평균으로부터 95% 확률(100% 확률로 한다면 신뢰구간이 너무 커지고, 90% 확률로 한다면 틀릴 확률이 높아져)로 존재할 영역을 계산한 구간을 의미(&lt;a href=&quot;https://angeloyeo.github.io/2021/01/05/confidence_interval.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://angeloyeo.github.io/2021/01/05/confidence_interval.html)&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1784533893269&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;website&quot; data-og-title=&quot;신뢰 구간의 의미 - 공돌이의 수학정리노트 (Angelo's Math Notes)&quot; data-og-description=&quot;&quot; data-og-host=&quot;angeloyeo.github.io&quot; data-og-source-url=&quot;https://angeloyeo.github.io/2021/01/05/confidence_interval.html&quot; data-og-url=&quot;https://angeloyeo.github.io/2021/01/05/confidence_interval.html&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://angeloyeo.github.io/2021/01/05/confidence_interval.html&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://angeloyeo.github.io/2021/01/05/confidence_interval.html&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;신뢰 구간의 의미 - 공돌이의 수학정리노트 (Angelo's Math Notes)&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;angeloyeo.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;pre id=&quot;code_1784523900055&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;economics = pd.read_csv('economics.csv')

economics.info() # 'date' 변수의 type 확인 결과: 문자열(object)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dk6oKG/dJMcaccObVF/RDbPIxk4KnkkTyZKGD3xj1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dk6oKG/dJMcaccObVF/RDbPIxk4KnkkTyZKGD3xj1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dk6oKG/dJMcaccObVF/RDbPIxk4KnkkTyZKGD3xj1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdk6oKG%2FdJMcaccObVF%2FRDbPIxk4KnkkTyZKGD3xj1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;303&quot; height=&quot;225&quot; data-origin-width=&quot;331&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784524046824&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# datetime 타입으로 변경한 'date' 변수의 값들을 'date2' 변수에 할당
economics['date2'] = pd.to_datetime(economics['date'])
economics.info()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;263&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5KNNg/dJMcaiREBTS/lT5n6uGjqt9SMrCottZFAK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5KNNg/dJMcaiREBTS/lT5n6uGjqt9SMrCottZFAK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5KNNg/dJMcaiREBTS/lT5n6uGjqt9SMrCottZFAK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5KNNg%2FdJMcaiREBTS%2FlT5n6uGjqt9SMrCottZFAK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;394&quot; height=&quot;222&quot; data-origin-width=&quot;466&quot; data-origin-height=&quot;263&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784524289278&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;economics['year'] = economics['date2'].dt.year # 'date2' 변수의 값들에서 연도 추출 후 할당
economics.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dSeoFC/dJMb99NRBhR/nKo7Ox4u6msPD6aVxvKM50/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dSeoFC/dJMb99NRBhR/nKo7Ox4u6msPD6aVxvKM50/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dSeoFC/dJMb99NRBhR/nKo7Ox4u6msPD6aVxvKM50/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdSeoFC%2FdJMb99NRBhR%2FnKo7Ox4u6msPD6aVxvKM50%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;593&quot; height=&quot;189&quot; data-origin-width=&quot;609&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784524362898&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 연도별 실업자수 그래프
sns.lineplot(data = economics, x = 'year', y = 'unemploy', ci = None)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;499&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bimHo3/dJMcaftPLeV/rAnGoFC7LmKLeiaLhRkomK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bimHo3/dJMcaftPLeV/rAnGoFC7LmKLeiaLhRkomK/img.png&quot; data-alt=&quot;ci = None&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bimHo3/dJMcaftPLeV/rAnGoFC7LmKLeiaLhRkomK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbimHo3%2FdJMcaftPLeV%2FrAnGoFC7LmKLeiaLhRkomK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;410&quot; data-origin-width=&quot;654&quot; data-origin-height=&quot;499&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ci = None&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;498&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mp7ei/dJMcagGmErC/cbJGFnihiN4JWIU7umVXDk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mp7ei/dJMcagGmErC/cbJGFnihiN4JWIU7umVXDk/img.png&quot; data-alt=&quot;ci = None 설정 X&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mp7ei/dJMcagGmErC/cbJGFnihiN4JWIU7umVXDk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fmp7ei%2FdJMcagGmErC%2FcbJGFnihiN4JWIU7umVXDk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;549&quot; height=&quot;417&quot; data-origin-width=&quot;655&quot; data-origin-height=&quot;498&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;ci = None 설정 X&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  상자 그림&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상자 그림: 데이터의 분포를 상자 모양으로 표현한 그래프
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상자 밖 가로선: 극단치 경계로 1.5IQR(IQR = Q3 - Q1의 값)에 해당&lt;/li&gt;
&lt;li&gt;상자 아래 세로선(아랫수염): 극단치 경계 범위 내의 하위 0~25%에 해당하는 값&lt;/li&gt;
&lt;li&gt;상자 밑면: 하위 25% 위치의 값&lt;/li&gt;
&lt;li&gt;상자 안 가로선: 50% 위치의 값(중앙값)&lt;/li&gt;
&lt;li&gt;상자 윗면: 하위 75% 위치의 값&lt;/li&gt;
&lt;li&gt;상자 위 세로선(윗수염): 극단치 경계 범위 내의 하위 75~100%에 해당하는 값&lt;/li&gt;
&lt;li&gt;상자 밖 표식: 1.5IQR을 벗어난 값&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상자 그림 생성: boxplot(data = 데이터 프레임명, x = 'x축 변수명', y = 'y축 변수명')&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784525949011&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;sns.boxplot(data = mpg, x = 'drv', y = 'hwy')&lt;/code&gt;&lt;/pre&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상자 그림 해석
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;f: 26~29 사이의 좁은 범위에 자동차가 모여있고, 극단치가 존재&lt;/li&gt;
&lt;li&gt;4: 중앙값이 상자 아래쪽에 있는 형태로 낮은 값 쪽으로 치우친 형태의 분포&lt;/li&gt;
&lt;li&gt;r: 세로선이 짧고 극단치가 없는 형태로, 자동차들이 사분위 범위(1~3사분위 내) 중심으로 분포&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;467&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgD92F/dJMcagM8vR2/O6mUlWCtbFqfIGVjkpslT0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgD92F/dJMcagM8vR2/O6mUlWCtbFqfIGVjkpslT0/img.png&quot; data-alt=&quot;sns.boxplot(data = mpg, x = 'drv', y = 'hwy')&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgD92F/dJMcagM8vR2/O6mUlWCtbFqfIGVjkpslT0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgD92F%2FdJMcagM8vR2%2FO6mUlWCtbFqfIGVjkpslT0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;537&quot; height=&quot;398&quot; data-origin-width=&quot;630&quot; data-origin-height=&quot;467&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;sns.boxplot(data = mpg, x = 'drv', y = 'hwy')&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/7</guid>
      <comments>https://youngchae00.tistory.com/7#entry7comment</comments>
      <pubDate>Mon, 20 Jul 2026 15:15:34 +0900</pubDate>
    </item>
    <item>
      <title>5. 데이터 정제(결측치, 이상치)</title>
      <link>https://youngchae00.tistory.com/6</link>
      <description>&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 id=&quot;toc-0&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  결측치(누락된 값) 정제&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결측치 찾기: pandas 패키지의 isna(데이터 프레임명) 함수 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;isna() 결과 True: 결측치인 값&lt;/li&gt;
&lt;li&gt;isna() 결과 False: 결측치가 아닌 값&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784246543636&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd
import numpy as np # np.nan을 통해 임의로 결측치를 만들기 위함

df = pd.DataFrame({'sex': ['M', 'F', np.nan, 'M', 'F'],
'score': [5, 4, 3, 4, np.nan]})
df&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;124&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcez1v/dJMcaftN9bf/EJCYOiw8r4HwD3GsUgRcPK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcez1v/dJMcaftN9bf/EJCYOiw8r4HwD3GsUgRcPK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcez1v/dJMcaftN9bf/EJCYOiw8r4HwD3GsUgRcPK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbcez1v%2FdJMcaftN9bf%2FEJCYOiw8r4HwD3GsUgRcPK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;124&quot; height=&quot;205&quot; data-origin-width=&quot;124&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784246588045&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 전체 테이블의 결측치 여부 확인
pd.isna(df)

# 일부 변수 열의 결측치 여부 확인
# df[['sex']].isna() 데이터프레임 형태로 결측치 여부 확인
# df['sex'].isna() 시리즈 형태로 결측치 여부 확인&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;128&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bccCg2/dJMcadvTTGg/hK8JmCxqzEAdTYKW6sqMLK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bccCg2/dJMcadvTTGg/hK8JmCxqzEAdTYKW6sqMLK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bccCg2/dJMcadvTTGg/hK8JmCxqzEAdTYKW6sqMLK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbccCg2%2FdJMcadvTTGg%2FhK8JmCxqzEAdTYKW6sqMLK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;128&quot; height=&quot;193&quot; data-origin-width=&quot;128&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784246708092&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;pd.isna(df).sum() # 각 변수 별 결측치 빈도 출력&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;111&quot; data-origin-height=&quot;57&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dnhakz/dJMcaijMOae/K1h7Pp2NULkWIBb6QXqu0k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dnhakz/dJMcaijMOae/K1h7Pp2NULkWIBb6QXqu0k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dnhakz/dJMcaijMOae/K1h7Pp2NULkWIBb6QXqu0k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdnhakz%2FdJMcaijMOae%2FK1h7Pp2NULkWIBb6QXqu0k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;111&quot; height=&quot;57&quot; data-origin-width=&quot;111&quot; data-origin-height=&quot;57&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결측치 있는 행 제거: 데이터프레임의 dropna(subset = ['결측지 제거할 변수명1', '결측치 제거할 변수명2', ...]) 함수 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;dropna() 괄호 안에 아무것도 작성하지 않는 경우: 결측치가 존재하는 모든 행을 제거하므로, 분석에 필요한 행까지 손실 가능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ex) 성별, 소득, 지역으로 구성된 데이터에서 지역에 결측치가 있고, 성별과 소득의 관계성을 분석 할 때&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;참고 Tip: mean, sum, agg 함수는 자동으로 결측치를 제거하고 계산하지만, 명시적으로 제거하고 분석하는 것 추천&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784247206222&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df_nomiss = df.dropna(subset = ['sex', 'score']) # 결측치 제거한 데이터 프레임 할당
df_nomiss&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;122&quot; data-origin-height=&quot;130&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lvTzV/dJMcaalGAwF/cEYswkLaRKQdSKdmh3B3o0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lvTzV/dJMcaalGAwF/cEYswkLaRKQdSKdmh3B3o0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lvTzV/dJMcaalGAwF/cEYswkLaRKQdSKdmh3B3o0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FlvTzV%2FdJMcaalGAwF%2FcEYswkLaRKQdSKdmh3B3o0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;122&quot; height=&quot;130&quot; data-origin-width=&quot;122&quot; data-origin-height=&quot;130&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;결측치 대체: 데이터프레임의 fillna(대체할 값) 함수를 활용하며, 데이터가 작고 결측치가 많아 데이터 분석에 왜곡이 발생하는 것을 방지하기 위하여 상황에 따라 아래 값들로 대체
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;대체 방법1: 평균값이나 최빈값
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;ex) 평균값 대체: 매출 총액, 시험 1번 결석 시 해당 시험 성적 기존 다른 시험들 평균으로 대체&lt;/li&gt;
&lt;li&gt;ex) 최빈값 대체: 설문조사를 기반으로 각 품목별 생산 개수 예측&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;대체 방법2: 통계 분석 기법으로 예측값 추청
&lt;ul style=&quot;list-style-type: circle;&quot; data-ke-list-type=&quot;circle&quot;&gt;
&lt;li&gt;ex) 중고차 판매 [차종, 연식, 주행거리, 사고 유무, 판매 가격]에서 판매 가격 누락 시, 연식과 주행거리를 기반으로 판매가격 예측&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784248547397&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam = pd.read_csv('exam.csv')
exam.loc[[2, 7, 14], ['math']] = np.nan # loc[행 위치, 열 위치]: 데이터 위치 지정

mean_math = exam['math'].mean()
exam['math'] = exam['math'].fillna(mean_math) # math 열의 결측치를 평균값으로 대체한 후, 저장
exam&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;527&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9HIkB/dJMcafm69Qb/YQehpDYtLqojVjSjT3gDN0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9HIkB/dJMcafm69Qb/YQehpDYtLqojVjSjT3gDN0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9HIkB/dJMcafm69Qb/YQehpDYtLqojVjSjT3gDN0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9HIkB%2FdJMcafm69Qb%2FYQehpDYtLqojVjSjT3gDN0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;334&quot; height=&quot;527&quot; data-origin-width=&quot;334&quot; data-origin-height=&quot;527&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 id=&quot;toc-1&quot; style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  이상치(정상 범위에서 크게 벗어난 값) 정제&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;존재할 수 없는 값 제거하는 방법
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;이상치 확인: 데이터프레임의 value_counts() 활용&lt;/li&gt;
&lt;li&gt;이상치 &amp;rarr; 결측치로 대체: np.where(조건, '참인 경우', '거짓인 경우') 활용
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;np.where() 함수에서 숫자와 NaN을 출력 결과로 활용하는 경우: np.where() 활용&lt;/li&gt;
&lt;li&gt;np.where() 함수에서 문자와 NaN을 출력 결과로 활용하는 경우: np.where() 함수에서 np.nan 대신 다른 문자열 활용 &amp;rarr; 데이터프레임의 replace() 함수를 활용하여 np.nan으로 변경&lt;/li&gt;
&lt;li&gt;np.where() 함수에서 데이터프레임['변수명']의 값이 문자 형태인 것과 NaN을 출력 결과로 활용하는 경우: np.where() 바로 활용&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;결측치 제거: dropna(subset = ['제거할 변수명1', '제거할 변수명2',...]&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784253569140&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 임의의 데이터 프레임 생성

# 정상값: 성별 1, 2로 구성, 성적 1~5점
df = pd.DataFrame({'sex': [1, 2, 1, 3, 2, 1],
'score': [5, 4, 3, 4, 2, 6]}&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1784253672904&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df['sex'].value_counts().sort_index() # 성별 이상치 확인

# value_counts()만 할 경우, 빈도 많은 순서대로 출력
# sort_index(): 이름 순서대로&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;89&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btMxU1/dJMcacw6ULK/QwGmvmfFukmm1qIcK955B1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btMxU1/dJMcacw6ULK/QwGmvmfFukmm1qIcK955B1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btMxU1/dJMcacw6ULK/QwGmvmfFukmm1qIcK955B1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtMxU1%2FdJMcacw6ULK%2FQwGmvmfFukmm1qIcK955B1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;205&quot; height=&quot;89&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;89&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784253716814&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df['score'].value_counts.sort_index() # 성적 이상치 확인&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;137&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rLqeP/dJMcadbB3HP/aXtSKUX5HWIwLTMknsYJXk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rLqeP/dJMcadbB3HP/aXtSKUX5HWIwLTMknsYJXk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rLqeP/dJMcadbB3HP/aXtSKUX5HWIwLTMknsYJXk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrLqeP%2FdJMcadbB3HP%2FaXtSKUX5HWIwLTMknsYJXk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;205&quot; height=&quot;137&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;137&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784253873760&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 이상치 &amp;rarr; 결측치 대체

df['sex'] = np.where(df['sex'] == 3, np.nan, df['sex']) # 성별 값이 3인 경우 NaN
df['score'] = np.where(df['score'] == 6, np.nan, df['score']) # 성적이 6점인 경우 NaN&lt;/code&gt;&lt;/pre&gt;
&lt;div data-ke-type=&quot;moreLess&quot; data-text-more=&quot;더보기&quot; data-text-less=&quot;닫기&quot;&gt;&lt;a class=&quot;btn-toggle-moreless&quot;&gt;더보기&lt;/a&gt;
&lt;div class=&quot;moreless-content&quot;&gt;
&lt;pre id=&quot;code_1784696744286&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;&quot;&quot;
np.where()에서 문자와 함께 np.nan을 활용하면, 결측치가 아닌 문자열로 'nan'이 들어감.
np.nan 말고 다른 문자열을 작성하고 해당 문자열을 nan으로 replace하는 방식 활용하기
&quot;&quot;&quot;

df = pd.DataFrame({'x1': [1, 1, 2, 2]})

df['x1'] = np.where(df['x1'] == 1, 'a', 'etc') # 1이 아닌 경우 NaN을 위해 임의의 문자열 'etc' 부여
df['x1'].replace('etc', np.nan) # 'etc' 문자열 NaN으로 변경&lt;/code&gt;&lt;/pre&gt;
&lt;/div&gt;
&lt;/div&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;135&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bsVwBZ/dJMcahSDCSb/ZHWuoT4EUFmydxeLhxiTx0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bsVwBZ/dJMcahSDCSb/ZHWuoT4EUFmydxeLhxiTx0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bsVwBZ/dJMcahSDCSb/ZHWuoT4EUFmydxeLhxiTx0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbsVwBZ%2FdJMcahSDCSb%2FZHWuoT4EUFmydxeLhxiTx0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;135&quot; height=&quot;226&quot; data-origin-width=&quot;135&quot; data-origin-height=&quot;226&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1784253931778&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 결측치 제거
df.dropna(subset = ['sex', 'score'])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;123&quot; data-origin-height=&quot;157&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cxbiF8/dJMcaa7bpax/Kv8c2ryicgsTsDW96Kd3nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cxbiF8/dJMcaa7bpax/Kv8c2ryicgsTsDW96Kd3nk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cxbiF8/dJMcaa7bpax/Kv8c2ryicgsTsDW96Kd3nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcxbiF8%2FdJMcaa7bpax%2FKv8c2ryicgsTsDW96Kd3nk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;123&quot; height=&quot;157&quot; data-origin-width=&quot;123&quot; data-origin-height=&quot;157&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;존재할 수 있지만 극단적인 값 제거하는 방법
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;방법1: 논리적으로 판단
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;ex) 성인의 몸무게가 40~150kg을 벗어나는 경우는 매우 드물다고 판단하여 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;방법2: 통계적인 기준 설정&amp;nbsp;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;상자 그림으로 극단치 기준 설정: seaborn 패키지의 boxplot(data = 데이터 프레임명, y = '변수명') 함수, 데이터프레임의 quantile(.숫자) 함수 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;상자 밖 가로선: 극단치 경계로 1.5IQR(IQR = Q3 - Q1의 값)에 해당 (1.5 IQR인 이유: &lt;a href=&quot;https://ineed-coffee.github.io/posts/IQR-rule/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://ineed-coffee.github.io/posts/IQR-rule/)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;상자 아래 세로선: 극단치 경계 범위 내의 하위 0~25%에 해당하는 값&lt;/li&gt;
&lt;li&gt;상자 밑면: 하위 25% 위치의 값&lt;/li&gt;
&lt;li&gt;상자 안 가로선: 50% 위치의 값(중앙값)&lt;/li&gt;
&lt;li&gt;상자 윗면: 하위 75% 위치의 값&lt;/li&gt;
&lt;li&gt;상자 위 세로선: 극단치 경계 범위 내의 하위 75~100%에 해당하는 값&lt;/li&gt;
&lt;li&gt;상자 밖 표식: 1.5IQR을 벗어난 값&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;극단치 &amp;rarr; 결측치로 대체: np.where((조건1 | 조건2), '참인 경우', '거짓인 경우') 함수 활용&lt;/li&gt;
&lt;li&gt;결측치 제거: dropna(subset = ['제거할 변수명1', '제거할 변수명2', ...])&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1784261052955&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;IQR Rule&quot; data-og-description=&quot;:mag: Index&quot; data-og-host=&quot;ineed-coffee.github.io&quot; data-og-source-url=&quot;https://ineed-coffee.github.io/posts/IQR-rule/&quot; data-og-url=&quot;https://ineed-coffee.github.io/posts/IQR-rule/&quot; data-og-image=&quot;&quot;&gt;&lt;a href=&quot;https://ineed-coffee.github.io/posts/IQR-rule/&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://ineed-coffee.github.io/posts/IQR-rule/&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url();&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;IQR Rule&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;:mag: Index&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;ineed-coffee.github.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1784260776289&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd
import seaborn as sns

mpg = pd.read_csv('mpg.csv')

sns.boxplot(data = mpg, y = 'hwy') # 상자 그림 생성&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;430&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beSGmC/dJMcabSskQ8/IYAssSQTBuGIzWEFMGRPA1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beSGmC/dJMcabSskQ8/IYAssSQTBuGIzWEFMGRPA1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beSGmC/dJMcabSskQ8/IYAssSQTBuGIzWEFMGRPA1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeSGmC%2FdJMcabSskQ8%2FIYAssSQTBuGIzWEFMGRPA1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;526&quot; height=&quot;348&quot; data-origin-width=&quot;650&quot; data-origin-height=&quot;430&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784261287321&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# IQR을 구하기 위한 Q1, Q3 값 계싼
pct25 = mpg['hwy'].quantile(.25) # 하위 25% 지점(Q1)의 값
pct75 = mpg['hwy'].quantile(.75) # 하위 75% 지점(Q3)의 값

# IQR 계산
IQR = pct75 - pct25

# 극단치 기준 생성
min_value = pct25 - 1.5 * IQR
max_value = pct75 + 1.5 * IQR&lt;/code&gt;&lt;/pre&gt;
&lt;pre id=&quot;code_1784261433839&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 극단치 &amp;rarr; 결측치로 대체
# np.where() 안에 조건을 여러가지 작성하는 경우, 각 조건을 괄호로 묶어야 함
mpg['hwy'] = np.where((mpg['hwy'] &amp;lt; min_value) | (mpg['hwy'] &amp;gt; max_value), np.nan, mpg['hwy'])

# 결측치 개수 확인
mpg['hwy'].isna().sum()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;216&quot; data-origin-height=&quot;84&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/IGdIJ/dJMcac4UMV1/yKl1M24Mxi0LrijJm3e6nk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/IGdIJ/dJMcac4UMV1/yKl1M24Mxi0LrijJm3e6nk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/IGdIJ/dJMcac4UMV1/yKl1M24Mxi0LrijJm3e6nk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FIGdIJ%2FdJMcac4UMV1%2FyKl1M24Mxi0LrijJm3e6nk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;216&quot; height=&quot;84&quot; data-origin-width=&quot;216&quot; data-origin-height=&quot;84&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784261567853&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 결측치 제거
mpg.dropna(subset = ['hwy'])&lt;/code&gt;&lt;/pre&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/6</guid>
      <comments>https://youngchae00.tistory.com/6#entry6comment</comments>
      <pubDate>Fri, 17 Jul 2026 13:15:15 +0900</pubDate>
    </item>
    <item>
      <title>4. 데이터 가공(전처리)</title>
      <link>https://youngchae00.tistory.com/5</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  조건에 맞는 데이터 추출&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;실습 데이터 불러오기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784159721953&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd

exam = pd.read_csv('exam.csv')&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;조건에 맞는 행 추출: 데이터프레임의 query('조건') 함수 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784159832492&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.query('nclass == 1') # 1반에 해당하는 행 추출

# exam.query('nclass != 1'): 1반에 해당하지 않는 행 추출&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;178&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bWA6ww/dJMcahSCDtS/x9INSj5DhbS6P2CziqX2kk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bWA6ww/dJMcahSCDtS/x9INSj5DhbS6P2CziqX2kk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bWA6ww/dJMcahSCDtS/x9INSj5DhbS6P2CziqX2kk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbWA6ww%2FdJMcahSCDtS%2Fx9INSj5DhbS6P2CziqX2kk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;298&quot; height=&quot;178&quot; data-origin-width=&quot;298&quot; data-origin-height=&quot;178&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 조건을 충족하는 행 추출: &amp;amp;(그리고) 연산자 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784160289557&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.query('nclass == 1 &amp;amp; math &amp;gt;= 50') # 1반이면서 math가 50점 이상인 행 추출&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;106&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQkl4L/dJMcagfaQSZ/av6FhMmvnp6NbuZeEtyuRK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQkl4L/dJMcagfaQSZ/av6FhMmvnp6NbuZeEtyuRK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQkl4L/dJMcagfaQSZ/av6FhMmvnp6NbuZeEtyuRK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQkl4L%2FdJMcagfaQSZ%2Fav6FhMmvnp6NbuZeEtyuRK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;301&quot; height=&quot;106&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;106&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 조건 중 하나 이상 충족하는 행 추출: |(또는) 연산자 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784160443512&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.query('math &amp;gt;= 90 | english &amp;gt;= 90') # math가 90점 이상이거나 english가 90점 이상인 행 추출&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;333&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/4U8b0/dJMcajpkCXy/pYGFdlACsydVHlXZxwB1dk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/4U8b0/dJMcajpkCXy/pYGFdlACsydVHlXZxwB1dk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/4U8b0/dJMcajpkCXy/pYGFdlACsydVHlXZxwB1dk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F4U8b0%2FdJMcajpkCXy%2FpYGFdlACsydVHlXZxwB1dk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;314&quot; height=&quot;333&quot; data-origin-width=&quot;314&quot; data-origin-height=&quot;333&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;목록에 해당하는 행 추출: in 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784160784101&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 1, 3, 5반 행 추출

exam.query('nclass in [1, 3, 5]')

&quot;&quot;&quot;
참고 Tip

exam[exam['nclass'].isin([1, 3, 5])] 과 동일한 출력

exam['nclass'].isin([1, 3, 5]) 출력 결과:

0      True
1      True
2      True
3      True
4     False
5     False
....
Name: nclass, dtype: bool

&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;추출한 행 데이터 프레임으로 저장: = 연산자 활용 &amp;rarr; 얕은 복사이므로 수정시 오류 발생할 수 O &amp;nbsp;&amp;iota;(｀･-･&amp;acute;)/&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784161320760&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;nclass1 = exam.query('nclass == 1') # 1반에 해당하는 행 nclass1에 할당
nclass2 = exam.query('nclass == 2') # 2반에 해당하는 행 nclass2에 할당

nclass1['math'].mean() # nclass1의 math 평균&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;168&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/VOO2g/dJMcahLUukf/0mGS0Kceg8NSCiekV69b3K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/VOO2g/dJMcahLUukf/0mGS0Kceg8NSCiekV69b3K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/VOO2g/dJMcahLUukf/0mGS0Kceg8NSCiekV69b3K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FVOO2g%2FdJMcahLUukf%2F0mGS0Kceg8NSCiekV69b3K%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;301&quot; height=&quot;168&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;168&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;문자 변수를 활용한 조건에 맞는 행 추출
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;조건 전체를 &quot; &quot;로 감싼 경우, 문자는 ' '로&lt;/li&gt;
&lt;li&gt;조건 전체를 ' '로 감싼 경우, 문자는 &quot; &quot;로&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784161580082&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;df = pd.DataFrame({'sex': ['F', 'M', 'F', 'M'],
                  'country': ['Korea', 'China', 'Japan', 'USA']})

df.query('sex == &quot;F&quot; &amp;amp; country == &quot;Korea&quot;')
df.query(&quot;sex == 'F' &amp;amp; country == 'Korea'&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;외부 변수를 활용한 조건에 맞는 행 추출: @ 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784161627056&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;var = 3
exam.query('nclass == @var') # nclass가 3에 해당하는 행 추출&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  필요한 변수만 추출&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변수 추출: [] 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784165525893&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam['math'] # math 추출(시리즈 형태로 출력)

&quot;&quot;&quot;
참고 Tip: exam[['math']]으로 출력하면 데이터 프레임 구조로 출력
&quot;&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;89&quot; data-origin-height=&quot;123&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dtx9kS/dJMcacX9rFm/FWj8jBYSErweOxY1ROLVfk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dtx9kS/dJMcacX9rFm/FWj8jBYSErweOxY1ROLVfk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dtx9kS/dJMcacX9rFm/FWj8jBYSErweOxY1ROLVfk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdtx9kS%2FdJMcacX9rFm%2FFWj8jBYSErweOxY1ROLVfk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;89&quot; height=&quot;123&quot; data-origin-width=&quot;89&quot; data-origin-height=&quot;123&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 변수 추출: [[]] 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784165649301&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam[['math', 'english', 'science']] # math, english, science 추출&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;219&quot; data-origin-height=&quot;208&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/SCYIL/dJMcaccLI7x/2Gydo4njoGeUDqq5TTPdKk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/SCYIL/dJMcaccLI7x/2Gydo4njoGeUDqq5TTPdKk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/SCYIL/dJMcaccLI7x/2Gydo4njoGeUDqq5TTPdKk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FSCYIL%2FdJMcaccLI7x%2F2Gydo4njoGeUDqq5TTPdKk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;219&quot; height=&quot;208&quot; data-origin-width=&quot;219&quot; data-origin-height=&quot;208&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;특정 변수 제외 추출: 데이터프레임의 drop() 함수 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변수 1개 제외: drop(columns = '변수명') 활용&lt;/li&gt;
&lt;li&gt;변수 여러개 제외: drop(columns = ['변수명1', '변수명2', ..]) 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784166256396&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.drop(columns = 'math') # math 제거
exam.drop(columns = ['math', 'english']) # math, english 제거&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;195&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/3MgSO/dJMb991sU4N/RXaBBoBe8wzLh9PmvmXKI1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/3MgSO/dJMb991sU4N/RXaBBoBe8wzLh9PmvmXKI1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/3MgSO/dJMb991sU4N/RXaBBoBe8wzLh9PmvmXKI1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F3MgSO%2FdJMb991sU4N%2FRXaBBoBe8wzLh9PmvmXKI1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;195&quot; height=&quot;214&quot; data-origin-width=&quot;195&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;query()와 [] 조합&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784166631114&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.query('nclass == 1')['english'] # 1반에 해당하는 행에서 english만 추출&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;95&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bkjR3D/dJMcadvSYeL/8TPi2tlkhewpeqS5OLdgz0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bkjR3D/dJMcadvSYeL/8TPi2tlkhewpeqS5OLdgz0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bkjR3D/dJMcadvSYeL/8TPi2tlkhewpeqS5OLdgz0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbkjR3D%2FdJMcadvSYeL%2F8TPi2tlkhewpeqS5OLdgz0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;238&quot; height=&quot;95&quot; data-origin-width=&quot;238&quot; data-origin-height=&quot;95&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784166705128&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.query('nclass == 1')[['id', 'math']].head() # 1반에 해당하는 행에서 id, math만 추출하고, 상위 5행 출력

&quot;&quot;&quot;각 명령어마다 '\ + enter'를 실시하면 가독성 좋게 작성 가능
exam.query('nclass == 1')\
[['id', 'math']]\
.head()
&quot;&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;115&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bwePkr/dJMcadivuXU/wL7R0SM9XqPvUuII6DxfLk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bwePkr/dJMcadivuXU/wL7R0SM9XqPvUuII6DxfLk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bwePkr/dJMcadivuXU/wL7R0SM9XqPvUuII6DxfLk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbwePkr%2FdJMcadivuXU%2FwL7R0SM9XqPvUuII6DxfLk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;115&quot; height=&quot;194&quot; data-origin-width=&quot;115&quot; data-origin-height=&quot;194&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  순서대로 정렬&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;오름차순 정렬: 데이터프레임의 sort_values('기준 변수명') 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784168648548&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.sort_values('math') # math 성적 기준 오름차순 정렬&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;214&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/coJPGC/dJMcac4TKfM/bfpeJkl7K5hSczhbiKr6QK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/coJPGC/dJMcac4TKfM/bfpeJkl7K5hSczhbiKr6QK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/coJPGC/dJMcac4TKfM/bfpeJkl7K5hSczhbiKr6QK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcoJPGC%2FdJMcac4TKfM%2FbfpeJkl7K5hSczhbiKr6QK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;305&quot; height=&quot;214&quot; data-origin-width=&quot;305&quot; data-origin-height=&quot;214&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;내림차순 정렬: ascending = False 설정&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784168784774&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.sort_values('math', ascending = False) # math 성적 기준 내림차순 정렬&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 정렬 기준 적용: sort_values(['기준 변수명1', '기준 변수명2', ..]) 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784169030229&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.sort_values(['nclass', 'math']) # 반 기준 오름차순 정렬 후, 각 반에서 math 성적 기준 오름차순 정렬&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;308&quot; data-origin-height=&quot;254&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/mAdx0/dJMcagM5Pbw/ThjkUC9KnGZdYswABydYek/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/mAdx0/dJMcagM5Pbw/ThjkUC9KnGZdYswABydYek/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/mAdx0/dJMcagM5Pbw/ThjkUC9KnGZdYswABydYek/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FmAdx0%2FdJMcagM5Pbw%2FThjkUC9KnGZdYswABydYek%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;308&quot; height=&quot;254&quot; data-origin-width=&quot;308&quot; data-origin-height=&quot;254&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784169142994&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 반 기준 오름차순 정렬 후, 각 반에서 math 성적 내림차순 정렬
exam.sort_values(['nclass', 'math'], ascending = [True, False])&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;261&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/61hKr/dJMb991sW3J/OadfHK02sX5kzvNTwIG7Ok/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/61hKr/dJMb991sW3J/OadfHK02sX5kzvNTwIG7Ok/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/61hKr/dJMb991sW3J/OadfHK02sX5kzvNTwIG7Ok/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F61hKr%2FdJMb991sW3J%2FOadfHK02sX5kzvNTwIG7Ok%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;301&quot; height=&quot;261&quot; data-origin-width=&quot;301&quot; data-origin-height=&quot;261&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  파생변수 추가&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파생변수 추가: 데이터프레임의 assign(새 변수명 = 변수를 만드는 공식) 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784169664423&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.assign(total = exam['math'] + exam['english'] + exam['science'])
# total 변수(math + english + science 총 합) 생성&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;189&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E6Jce/dJMcagzsWm8/UbH3dCNGhLEfnWeAFirLqk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E6Jce/dJMcagzsWm8/UbH3dCNGhLEfnWeAFirLqk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E6Jce/dJMcagzsWm8/UbH3dCNGhLEfnWeAFirLqk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE6Jce%2FdJMcagzsWm8%2FUbH3dCNGhLEfnWeAFirLqk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;358&quot; height=&quot;189&quot; data-origin-width=&quot;358&quot; data-origin-height=&quot;189&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 파생변수 추가: assign(새 변수명1 = 변수를 만드는 공식, 새 변수명2 = 변수를 만드는 공식, ...)&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784169842267&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.assign(total = exam['math'] + exam['english'] + exam['science'],
           mean = (exam['math'] + exam['english'] + exam['science']) / 3)
          
# total, mean 변수 추가&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;427&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kUouo/dJMcaiqvBKY/HAVJZHwPJzMPfdcqQLgcDK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kUouo/dJMcaiqvBKY/HAVJZHwPJzMPfdcqQLgcDK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kUouo/dJMcaiqvBKY/HAVJZHwPJzMPfdcqQLgcDK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkUouo%2FdJMcaiqvBKY%2FHAVJZHwPJzMPfdcqQLgcDK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;427&quot; height=&quot;154&quot; data-origin-width=&quot;427&quot; data-origin-height=&quot;154&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파생변수에 조건에 따른 값 부여: assign(새 변수명 = np.where(조건, '참인 경우', '거짓인 경우'))&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784170034443&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import numpy as np

exam.assign(test = np.where(exam['science'] &amp;gt;= 60, 'pass', 'fail'))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;349&quot; data-origin-height=&quot;159&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/catQfh/dJMcajpkF7J/8O4cZgEKBZuB5k5OZUP3Z1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/catQfh/dJMcajpkF7J/8O4cZgEKBZuB5k5OZUP3Z1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/catQfh/dJMcajpkF7J/8O4cZgEKBZuB5k5OZUP3Z1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcatQfh%2FdJMcajpkF7J%2F8O4cZgEKBZuB5k5OZUP3Z1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;349&quot; height=&quot;159&quot; data-origin-width=&quot;349&quot; data-origin-height=&quot;159&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;데이터 프레임명 줄여쓰기: lambda 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;lambda x : 수식 &amp;rarr; x를 입력 받아서 수식 결과를 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784170646946&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.assign(total = lambda x: x['math'] + x['english'] + x['science']) # x 자리에 exam 활용됨&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;앞에서 만든 파생 변수를 이용해 다른 파생 변수 생성: 다른 파생 변수 생성에 반드시 lambda 활용&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784170852640&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;&quot;&quot;&quot;
exam.assign(total = exam['math'] + exam['english'] + exam['science'],
           mean = lambda x: x['total'] / 3)&quot;&quot;&quot;
           
exam.assign(total = lambda x: x['math'] + x['english'] + x['science'],
           mean = lambda x: x['total'] / 3)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  집단별 요약&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;집단별 요약
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;그룹화: groupby('그룹화 할 변수') 활용&lt;/li&gt;
&lt;li&gt;요약: agg(할당할 변수명 = ('사용할 변수명', '사용할 함수명')) 활용
&lt;table style=&quot;letter-spacing: 0px; border-collapse: collapse; width: 37.5628%; height: 298px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;함수&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;통계량&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;mean()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;평균&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;std()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;표준편차&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;sum()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;합계&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;min()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;최소값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;max()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;최대값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;median()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;중앙값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;count()&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;빈도(개수)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784176828743&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.groupby('nclass').agg(mean_math = ('math', 'mean')) # 반 별 math 평균 계산&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;161&quot; data-origin-height=&quot;233&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/byPPTX/dJMcabrp4Ik/4xRwyfj71REY4Bznzq3Qo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/byPPTX/dJMcabrp4Ik/4xRwyfj71REY4Bznzq3Qo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/byPPTX/dJMcabrp4Ik/4xRwyfj71REY4Bznzq3Qo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbyPPTX%2FdJMcabrp4Ik%2F4xRwyfj71REY4Bznzq3Qo0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;161&quot; height=&quot;233&quot; data-origin-width=&quot;161&quot; data-origin-height=&quot;233&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784176347995&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# as_index = False 설정: nclass가 index가 되지 않도록 설정 (= nclass가 행의 이름이 되지 않도록)
exam.groupby('nclass', as_index = False).agg(mean_math = ('math', 'mean'))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;184&quot; data-origin-height=&quot;205&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c5oNLt/dJMcajwesEP/K87iVyzMOxg4GfDHT8tylK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c5oNLt/dJMcajwesEP/K87iVyzMOxg4GfDHT8tylK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c5oNLt/dJMcajwesEP/K87iVyzMOxg4GfDHT8tylK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc5oNLt%2FdJMcajwesEP%2FK87iVyzMOxg4GfDHT8tylK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;184&quot; height=&quot;205&quot; data-origin-width=&quot;184&quot; data-origin-height=&quot;205&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 요약 통계량 계산&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784177269260&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.groupby('nclass', as_index = False)\
.agg(mean_math = ('math', 'mean'),
sum_math = ('math', 'sum'),
median_math = ('math', 'median'),
n = ('nclass', 'count'))

# mean_math: 반 별 math 평균
# sum_math: 반 별 math 총 합
# median_math = 반 별 math 중앙값
# n = 반 별 학생 수 (count = nclass열의 행 개수를 셈)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bgA6mw/dJMb998a8Mk/GkKxdWeG1lKRZMZ1AIypd1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bgA6mw/dJMb998a8Mk/GkKxdWeG1lKRZMZ1AIypd1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bgA6mw/dJMb998a8Mk/GkKxdWeG1lKRZMZ1AIypd1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbgA6mw%2FdJMb998a8Mk%2FGkKxdWeG1lKRZMZ1AIypd1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;394&quot; height=&quot;200&quot; data-origin-width=&quot;394&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;모든 변수 요약 통계량 한 번에 추출&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784177615528&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;exam.groupby('nclass').mean() # 반 별 모든 변수의 평균 계산&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;276&quot; data-origin-height=&quot;231&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/LgGzw/dJMcabZi9vK/nAE1lNGaF7GCkQszFaXL80/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/LgGzw/dJMcabZi9vK/nAE1lNGaF7GCkQszFaXL80/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/LgGzw/dJMcabZi9vK/nAE1lNGaF7GCkQszFaXL80/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FLgGzw%2FdJMcabZi9vK%2FnAE1lNGaF7GCkQszFaXL80%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;276&quot; height=&quot;231&quot; data-origin-width=&quot;276&quot; data-origin-height=&quot;231&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;집단별로 다시 집단 나누기: groupby(['먼저 그룹화 할 변수명', 하위 그룹화 할 변수명'])&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784177913238&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 1. 제조 회사별로 그룹화 한 다음 구동 방식 별 그룹화
# 2. 각 제조 회사의 구동 방식 별 도시 연비 평균 계산
mpg.groupby(['manufacturer', 'drv']).agg(mean_cty = ('cty', 'mean'))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;131&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cEDL0G/dJMcag7ifRi/vsrZ4Ko9p1dxYjHjagDHl0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cEDL0G/dJMcag7ifRi/vsrZ4Ko9p1dxYjHjagDHl0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cEDL0G/dJMcag7ifRi/vsrZ4Ko9p1dxYjHjagDHl0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcEDL0G%2FdJMcag7ifRi%2FvsrZ4Ko9p1dxYjHjagDHl0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;230&quot; height=&quot;131&quot; data-origin-width=&quot;230&quot; data-origin-height=&quot;131&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;여러 함수 조합 &lt;span style=&quot;background-color: #ffffff; color: #374151; text-align: start;&quot;&gt;&amp;iota;(｀･-･&amp;acute;)/&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;제조 회사별로 suv 자동차의 도시 및 고속도로 합산 연비 평균을 구해 내림차순으로 정렬하고, 1~5위까지 출력
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;suv 자동차에 해당하는 행 추출&lt;/li&gt;
&lt;li&gt;각 자동차별 연비 합산 계산&lt;/li&gt;
&lt;li&gt;제조 회사별로 그룹화&lt;/li&gt;
&lt;li&gt;연비 평균 계산&lt;/li&gt;
&lt;li&gt;내림차순 정렬&lt;/li&gt;
&lt;li&gt;1~5위까지 출력&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784179547750&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg.query('category == &quot;suv&quot;')\
.assign(total = (mpg['cty'] + mpg['hwy']) / 2)\
.groupby('manufacturer', as_index = False)\
.agg(mean_total = ('total', 'mean'))\
.sort_values('mean_total', ascending = False)\
.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt; 데이터 합치기&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;가로로 합치기(열 추가) : merge(결합할 데이터 프레임명1, 결합할 테이터 프레임명2, how = '방향', on = '기준 변수명') 활용
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;how = 'left': 왼쪽 데이터 프레임을 기준으로 결합&lt;/li&gt;
&lt;li&gt;how = 'right': 오른쪽 데이터 프레임을 기준으로 결합&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784181860542&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;name = pd.DataFrame({'nclass': [1, 2, 3, 4, 5],
                    'teacher': ['kim', 'lee', 'park', 'choi', 'jung']})

# 'nclass' 변수를 기준으로 exam 데이터 프레임과 name 데이터 프레임을 결합
new_exam = pd.merge(exam, name, how = 'left', on = 'nclass')
new_exam&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k5Sa1/dJMcaixkQTK/Mbe78bgEjDYEfWzhB0vc41/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k5Sa1/dJMcaixkQTK/Mbe78bgEjDYEfWzhB0vc41/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k5Sa1/dJMcaixkQTK/Mbe78bgEjDYEfWzhB0vc41/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk5Sa1%2FdJMcaixkQTK%2FMbe78bgEjDYEfWzhB0vc41%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;365&quot; height=&quot;196&quot; data-origin-width=&quot;365&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;세로로 합치기(행 추가): concat([결합할 데이터 프레임명1, 결합할 데이터 프레임명2])&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784182675865&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 학생 1~5번 시험 데이터 만들기
group_a = pd.DataFrame({'id': [1, 2, 3, 4, 5],
                       'test': [60, 80, 70, 90, 85]})

# 학생 6~10번 시험 데이터 만들기
group_b = pd.DataFrame({'id': [6, 7, 8, 9, 10],
                       'test': [70, 83, 65, 95, 80]})
                       
new_data = pd.concat([group_a, group_b])
new_data&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;111&quot; data-origin-height=&quot;355&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kBeVu/dJMcafOckFa/QlFFK7SqRCXOsEKGWYNxH0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kBeVu/dJMcafOckFa/QlFFK7SqRCXOsEKGWYNxH0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kBeVu/dJMcafOckFa/QlFFK7SqRCXOsEKGWYNxH0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkBeVu%2FdJMcafOckFa%2FQlFFK7SqRCXOsEKGWYNxH0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;111&quot; height=&quot;355&quot; data-origin-width=&quot;111&quot; data-origin-height=&quot;355&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/5</guid>
      <comments>https://youngchae00.tistory.com/5#entry5comment</comments>
      <pubDate>Thu, 16 Jul 2026 19:23:18 +0900</pubDate>
    </item>
    <item>
      <title>3. 데이터 파악 및 수정</title>
      <link>https://youngchae00.tistory.com/4</link>
      <description>&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;  'Do it! 쉽게 배우는 파이썬 데이터 분석' 책을 기반으로 JupyterLab 환경에서 학습한 내용입니다 _&amp;phi;(๑╹╹๑)&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size14&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  데이터 파악&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;read_csv('파일 경로'): 실습 데이터 불러오기&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784076829169&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;import pandas as pd # pandas 패키지 로드

# 실습 데이터: 미국 환경 보호국에서 공개한 1999~2008년 미국에 출시된 자동차 234종 정보
mpg = pd.read_csv('mpg.csv') # 실습 데이터 &amp;rarr; 데이터 프레임&lt;/code&gt;&lt;/pre&gt;
&lt;table style=&quot;border-collapse: collapse; width: 28.6047%; height: 304px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;mpg 데이터&lt;br /&gt;변수명&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;내용&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;manufacturer&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;제조 회사&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;model&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;자동차 모델명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;displ&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;배기량&lt;br /&gt;(displacement)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;year&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;생산연도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;cyl&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;실린더 개수&lt;br /&gt;(cylinders)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;trans&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;변속기 종류&lt;br /&gt;(transmission)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;drv&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;구동 방식&lt;br /&gt;(drive wheel)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;cty&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;도시 연비&lt;br /&gt;(city)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;hwy&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;고속도로 연비&lt;br /&gt;(highway)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;fl&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;연료 종류&lt;br /&gt;(fuel)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;category&lt;/td&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;자동차 종류&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;head(): 데이터의 앞에서부터 다섯 번째 행까지 출력하는 기능, 괄호 안에 숫자 입력시 해당 행까지 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784077010683&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;197&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dxTAX7/dJMcagGi4uT/l39vwcSzEy8bOOjHzmMh90/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dxTAX7/dJMcagGi4uT/l39vwcSzEy8bOOjHzmMh90/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dxTAX7/dJMcagGi4uT/l39vwcSzEy8bOOjHzmMh90/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdxTAX7%2FdJMcagGi4uT%2Fl39vwcSzEy8bOOjHzmMh90%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;634&quot; height=&quot;197&quot; data-origin-width=&quot;634&quot; data-origin-height=&quot;197&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;tail(): head()와 반대로 데이터의 뒤에서부터 다섯 번째 행까지 출력하는 기능, 괄호 안에 숫자 입력시 해당 행까지 출력&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784078080146&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg.tail()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/6I7kF/dJMcagsHcD3/52XzYe10wpyYfS90VxK28k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/6I7kF/dJMcagsHcD3/52XzYe10wpyYfS90VxK28k/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/6I7kF/dJMcagsHcD3/52XzYe10wpyYfS90VxK28k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F6I7kF%2FdJMcagsHcD3%2F52XzYe10wpyYfS90VxK28k%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;641&quot; height=&quot;200&quot; data-origin-width=&quot;641&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;shape: 데이터 프레임의 행, 열 개수를 출력하는 기능으로 (행 개수, 열 개수)로 출력되며, 변수가 지니고 있는 값으로 함수와 달리 괄호 사용 X&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784078120004&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg.shape # 출력 결과: (234, 11)&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;info(): 변수들의 속성을 출력하는 기능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;출력 결과 설명
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&amp;lt;class 'pandas.core.frame.dataframe'&amp;gt; : pandas로 만든 데이터 프레임&lt;/li&gt;
&lt;li&gt;234 entries, 0 to 233: 234행으로 구성되어 있으며, 행 번호가 0부터 233까지&lt;/li&gt;
&lt;li&gt;total 11 columns: 변수 11개로 구성&lt;/li&gt;
&lt;li&gt;나머지 정보: 변수 속성 정보
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;#: 해당 변수 순서&lt;/li&gt;
&lt;li&gt;column: 변수 이름&lt;/li&gt;
&lt;li&gt;Non-Null Count: 결측치(누락된 값)를 제외하고 변수에 들어있는 값의 개수&lt;/li&gt;
&lt;li&gt;Dtype: 속성
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;int64: 정수&lt;/li&gt;
&lt;li&gt;float64: 실수&lt;/li&gt;
&lt;li&gt;object: 문자&lt;/li&gt;
&lt;li&gt;datetime64: 날짜 시간&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784078154856&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg.info()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/biuztR/dJMcacjt8ub/17j1n0US3ykZs8PYdydy11/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/biuztR/dJMcacjt8ub/17j1n0US3ykZs8PYdydy11/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/biuztR/dJMcacjt8ub/17j1n0US3ykZs8PYdydy11/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbiuztR%2FdJMcacjt8ub%2F17j1n0US3ykZs8PYdydy11%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;355&quot; height=&quot;340&quot; data-origin-width=&quot;355&quot; data-origin-height=&quot;340&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;describe(): 변수들의 요약 통계량을 출력하는 기능
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;사분위수 이해하기 쉬운 링크: &lt;a href=&quot;https://velog.io/@j1eon/IQR-%EB%B6%84%EC%84%9D%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;https://velog.io/@j1eon/IQR-%EB%B6%84%EC%84%9D%EB%B2%95&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;figure id=&quot;og_1784106178613&quot; contenteditable=&quot;false&quot; data-ke-type=&quot;opengraph&quot; data-ke-align=&quot;alignCenter&quot; data-og-type=&quot;article&quot; data-og-title=&quot;IQR 분석&quot; data-og-description=&quot;IQR (Interquartile Range) 사분위수 범위는 이상치를 탐지하는 데 사용되는 대표적 통계 지표 &amp;gt; 데이터의 변동성을 시각화하고, 이상치를 객관적으로 걸러낼 수 있는 통계적 도구 중 하나&quot; data-og-host=&quot;velog.io&quot; data-og-source-url=&quot;https://velog.io/@j1eon/IQR-%EB%B6%84%EC%84%9D%EB%B2%95&quot; data-og-url=&quot;https://velog.io/@j1eon/IQR-분석법&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/cUr890/dJMb8QeyBMH/Zko6uoX5ht88zf9xTkvs1K/img.jpg?width=1418&amp;amp;height=1064&amp;amp;face=0_0_1418_1064,https://scrap.kakaocdn.net/dn/CdOlh/dJMb8SXKjWm/5YyS9X6a7Ap2wowkeAtfV1/img.jpg?width=1418&amp;amp;height=1064&amp;amp;face=0_0_1418_1064&quot;&gt;&lt;a href=&quot;https://velog.io/@j1eon/IQR-%EB%B6%84%EC%84%9D%EB%B2%95&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; data-source-url=&quot;https://velog.io/@j1eon/IQR-%EB%B6%84%EC%84%9D%EB%B2%95&quot;&gt;
&lt;div class=&quot;og-image&quot; style=&quot;background-image: url('https://scrap.kakaocdn.net/dn/cUr890/dJMb8QeyBMH/Zko6uoX5ht88zf9xTkvs1K/img.jpg?width=1418&amp;amp;height=1064&amp;amp;face=0_0_1418_1064,https://scrap.kakaocdn.net/dn/CdOlh/dJMb8SXKjWm/5YyS9X6a7Ap2wowkeAtfV1/img.jpg?width=1418&amp;amp;height=1064&amp;amp;face=0_0_1418_1064');&quot;&gt;&amp;nbsp;&lt;/div&gt;
&lt;div class=&quot;og-text&quot;&gt;
&lt;p class=&quot;og-title&quot; data-ke-size=&quot;size16&quot;&gt;IQR 분석&lt;/p&gt;
&lt;p class=&quot;og-desc&quot; data-ke-size=&quot;size16&quot;&gt;IQR (Interquartile Range) 사분위수 범위는 이상치를 탐지하는 데 사용되는 대표적 통계 지표 &amp;gt; 데이터의 변동성을 시각화하고, 이상치를 객관적으로 걸러낼 수 있는 통계적 도구 중 하나&lt;/p&gt;
&lt;p class=&quot;og-host&quot; data-ke-size=&quot;size16&quot;&gt;velog.io&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;table style=&quot;letter-spacing: 0px; border-collapse: collapse; width: 68.3721%; height: 216px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 20px;&quot;&gt;출력값&lt;br /&gt;&lt;span style=&quot;background-color: #9b9b9b; color: #ffffff; text-align: center;&quot;&gt;(숫자 변수 해당)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 20px;&quot;&gt;통계량&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 17px;&quot;&gt;count&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 17px;&quot;&gt;빈도&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 17px;&quot;&gt;(결측치를 제외한) 값의 개수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 17px;&quot;&gt;mean&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 17px;&quot;&gt;평균&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 17px;&quot;&gt;모든 값을 더해 값의 개수로 나눈 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 17px;&quot;&gt;std&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 17px;&quot;&gt;표준편차&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 17px;&quot;&gt;변수의 값들이 평균에서 떨어진 정도&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 17px;&quot;&gt;min&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 17px;&quot;&gt;최소값&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 17px;&quot;&gt;가장 작은 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 17px;&quot;&gt;25%&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 17px;&quot;&gt;1사분위수&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 17px;&quot;&gt;하위 25%(4분의 1) 위치의 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 17px;&quot;&gt;50%&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 17px;&quot;&gt;중앙값&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 17px;&quot;&gt;하위 50%(중앙) 위치의 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 17px;&quot;&gt;75%&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 17px;&quot;&gt;3사분위수&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 17px;&quot;&gt;하위 75%(4분의 3) 위치의 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1904%; text-align: center; height: 17px;&quot;&gt;max&lt;/td&gt;
&lt;td style=&quot;width: 28.2313%; text-align: center; height: 17px;&quot;&gt;최대값&lt;/td&gt;
&lt;td style=&quot;width: 65.8236%; text-align: center; height: 17px;&quot;&gt;가장 큰 값&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;table style=&quot;border-collapse: collapse; width: 68.1395%; height: 88px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style12&quot;&gt;
&lt;tbody&gt;
&lt;tr style=&quot;height: 20px;&quot;&gt;
&lt;td style=&quot;width: 26.1661%; text-align: center; height: 20px;&quot;&gt;출력값&lt;br /&gt;&lt;span style=&quot;background-color: #9b9b9b; color: #ffffff; text-align: center;&quot;&gt;(문자 변수 해당)&lt;/span&gt;&lt;/td&gt;
&lt;td style=&quot;width: 28.8964%; text-align: center; height: 20px;&quot;&gt;통계량&lt;/td&gt;
&lt;td style=&quot;width: 44.9374%; text-align: center; height: 20px;&quot;&gt;설명&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1661%; text-align: center; height: 17px;&quot;&gt;count&lt;/td&gt;
&lt;td style=&quot;width: 28.8964%; text-align: center; height: 17px;&quot;&gt;빈도&lt;/td&gt;
&lt;td style=&quot;width: 44.9374%; text-align: center; height: 17px;&quot;&gt;&lt;span style=&quot;color: #333333; text-align: center;&quot;&gt;(결측치를 제외한)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt; 값의 개수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1661%; text-align: center; height: 17px;&quot;&gt;unique&lt;/td&gt;
&lt;td style=&quot;width: 28.8964%; text-align: center; height: 17px;&quot;&gt;고유값 빈도&lt;/td&gt;
&lt;td style=&quot;width: 44.9374%; text-align: center; height: 17px;&quot;&gt;중복을 제거한 범주의 개수&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1661%; text-align: center; height: 17px;&quot;&gt;top&lt;/td&gt;
&lt;td style=&quot;width: 28.8964%; text-align: center; height: 17px;&quot;&gt;최빈값&lt;/td&gt;
&lt;td style=&quot;width: 44.9374%; text-align: center; height: 17px;&quot;&gt;개수가 가장 많은 값&lt;/td&gt;
&lt;/tr&gt;
&lt;tr style=&quot;height: 17px;&quot;&gt;
&lt;td style=&quot;width: 26.1661%; text-align: center; height: 17px;&quot;&gt;freq&lt;/td&gt;
&lt;td style=&quot;width: 28.8964%; text-align: center; height: 17px;&quot;&gt;최빈값 빈도&lt;/td&gt;
&lt;td style=&quot;width: 44.9374%; text-align: center; height: 17px;&quot;&gt;개수가 가장 많은 값의 개수&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1784084367234&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 기본 형태
# mpg.describe()

# 문자로 된 변수의 요약 통계량 함께 출력하는 방법
mpg.describe(include = 'all')&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;397&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/HYe4c/dJMcabLMO74/bNsalQKGIglxFnjIRLSGZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/HYe4c/dJMcabLMO74/bNsalQKGIglxFnjIRLSGZ1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/HYe4c/dJMcabLMO74/bNsalQKGIglxFnjIRLSGZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FHYe4c%2FdJMcabLMO74%2FbNsalQKGIglxFnjIRLSGZ1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;948&quot; height=&quot;397&quot; data-origin-width=&quot;948&quot; data-origin-height=&quot;397&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;cty(도시 연비: 자동차가 도시에서 연료 1갤런에 몇 마일 주행하는지를 의미) 요약 통계량 살펴보기
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;mean: 자동차가 도시에서 갤런당 평균 16.8마일 주행&lt;/li&gt;
&lt;li&gt;min: 도시 연비가 가장 낮은 자동차는 갤런당 9마일 주행&lt;/li&gt;
&lt;li&gt;max: 도시 연비가 가장 높은 자동차는 갤런당 35마일 주행&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;manufacturer(자동차 제조 회사) 요약 통계량 살펴보기
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;unique: 자동차 제조 회사의 종류 15개&lt;/li&gt;
&lt;li&gt;top: 가장 많은 자동차를 생산한 제조 회사는 dodge&lt;/li&gt;
&lt;li&gt;freq: dodge는 37종을 생산&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;  변수명 변경&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-type=&quot;horizontalRule&quot; data-ke-style=&quot;style5&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;복사본 만들기: 원본 데이터를 보존하여 오류 발생시 원 상태로 되돌리고 데이터를 비교하며 변형 과정을 검토할 수 있도록 하기 위함&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784090142434&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg_new = mpg.copy()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;변수명 변경: rename({columns: '기존 변수명': '새 변수명'})한 후, 할당해야 바뀐 변수명 저장&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784090400478&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 변수명 cty &amp;rarr; city, hwy &amp;rarr; highway 변경
mpg_new = mpg_new.rename(columns = {'cty': 'city', 'hwy': 'highway'}

mpg_new.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;196&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw228q/dJMcacqmfvO/PgyralBLYUsxGEpKT6SrmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw228q/dJMcacqmfvO/PgyralBLYUsxGEpKT6SrmK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw228q/dJMcacqmfvO/PgyralBLYUsxGEpKT6SrmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw228q%2FdJMcacqmfvO%2FPgyralBLYUsxGEpKT6SrmK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;663&quot; height=&quot;196&quot; data-origin-width=&quot;663&quot; data-origin-height=&quot;196&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt; &lt;span&gt;&lt;span&gt; 파생변수 생성&lt;/span&gt;&lt;/span&gt;&lt;/h3&gt;
&lt;hr contenteditable=&quot;false&quot; data-ke-style=&quot;style5&quot; data-ke-type=&quot;horizontalRule&quot; /&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;파생변수 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784091197908&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# total 변수: 통합 연비 변수(도시 연비와 고속도로 연비의 평균)
mpg['total'] = (mpg['cty'] + mpg['hwy'])/2

mpg.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;669&quot; data-origin-height=&quot;200&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cWauLP/dJMcaiD4web/mtcLhBjy5TCKdhzUkdnBdK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cWauLP/dJMcaiD4web/mtcLhBjy5TCKdhzUkdnBdK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cWauLP/dJMcaiD4web/mtcLhBjy5TCKdhzUkdnBdK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcWauLP%2FdJMcaiD4web%2FmtcLhBjy5TCKdhzUkdnBdK%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;669&quot; height=&quot;200&quot; data-origin-width=&quot;669&quot; data-origin-height=&quot;200&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784091329176&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg['total'].mean() # 전체 자동차의 평균 연비&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;조건문을 활용한 파생변수 생성
&lt;ol style=&quot;list-style-type: decimal;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;기준값 정하기: 데이터프레임의 describe() 함수와 plot.hist() 함수를 활용하여 요약 통계량과 히스토그램(값의 빈도를 막대 길이로 표현한 그래프)을 확인한 후, 상황에 맞는 기준값 설정&lt;/li&gt;
&lt;li&gt;&amp;nbsp;조건 판정 변수 생성: numpy(수치 연산 관련) 패키지의 where(조건, '참인 경우', '거짓인 경우') 함수 활용&lt;/li&gt;
&lt;li&gt;빈도표로 조건 판정 수 확인: 데이터프레임의 value_counts() 함수 활용&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784091966788&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 요약 통계량 확인
mpg['total'].describe()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;237&quot; data-origin-height=&quot;183&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bbGfoy/dJMcacqmjv6/ikuaV0o2vKkYCk4sk0MVq1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bbGfoy/dJMcacqmjv6/ikuaV0o2vKkYCk4sk0MVq1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bbGfoy/dJMcacqmjv6/ikuaV0o2vKkYCk4sk0MVq1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbbGfoy%2FdJMcacqmjv6%2FikuaV0o2vKkYCk4sk0MVq1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;237&quot; height=&quot;183&quot; data-origin-width=&quot;237&quot; data-origin-height=&quot;183&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;pre id=&quot;code_1784092137730&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 히스토그램 확인
mpg['total'].plot.hist()&lt;/code&gt;&lt;/pre&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;448&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b98jRs/dJMb991sgew/5lyGf1lHFbCZIcdklpvgkk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b98jRs/dJMb991sgew/5lyGf1lHFbCZIcdklpvgkk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b98jRs/dJMb991sgew/5lyGf1lHFbCZIcdklpvgkk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb98jRs%2FdJMb991sgew%2F5lyGf1lHFbCZIcdklpvgkk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;536&quot; height=&quot;380&quot; data-origin-width=&quot;632&quot; data-origin-height=&quot;448&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784093153234&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 합격 판정 변수 생성

import numpy as np
mpg['test'] = np.where(mpg['total'] &amp;gt;= 20, 'pass', 'fail')
mpg.head()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;198&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bg8CI3/dJMcabZigBe/FQx22jyYugvTI4DNVAKon0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bg8CI3/dJMcabZigBe/FQx22jyYugvTI4DNVAKon0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bg8CI3/dJMcabZigBe/FQx22jyYugvTI4DNVAKon0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbg8CI3%2FdJMcabZigBe%2FFQx22jyYugvTI4DNVAKon0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;716&quot; height=&quot;198&quot; data-origin-width=&quot;716&quot; data-origin-height=&quot;198&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784093346672&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# 빈도표로 합격 수 확인
mpg['test'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;242&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bO48Fg/dJMcaixjM3G/53poNr6hoZXvmekckIpObk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bO48Fg/dJMcaixjM3G/53poNr6hoZXvmekckIpObk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bO48Fg/dJMcaixjM3G/53poNr6hoZXvmekckIpObk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbO48Fg%2FdJMcaixjM3G%2F53poNr6hoZXvmekckIpObk%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;242&quot; height=&quot;76&quot; data-origin-width=&quot;242&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;중첩 조건문을 활용한 파생변수 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;table style=&quot;border-collapse: collapse; width: 30.4652%; height: 155px;&quot; border=&quot;1&quot; data-ke-align=&quot;alignLeft&quot; data-ke-style=&quot;style1&quot;&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;통합 연비 등급&lt;/td&gt;
&lt;td style=&quot;width: 70.8618%; text-align: center;&quot;&gt;기준&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;A&lt;/td&gt;
&lt;td style=&quot;width: 70.8618%; text-align: center;&quot;&gt;30 이상&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;B&lt;/td&gt;
&lt;td style=&quot;width: 70.8618%; text-align: center;&quot;&gt;20~29&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td style=&quot;width: 50%; text-align: center;&quot;&gt;C&lt;/td&gt;
&lt;td style=&quot;width: 70.8618%; text-align: center;&quot;&gt;20 미만&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;pre id=&quot;code_1784094250688&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg['grade'] = np.where(mpg['total'] &amp;gt;= 30, 'A', np.where(mpg['total'] &amp;gt;= 20, 'B', 'C'))&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;193&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/YnLPv/dJMcadW2VDv/xew9SVZHKKA5u3aK6fdyY1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/YnLPv/dJMcadW2VDv/xew9SVZHKKA5u3aK6fdyY1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/YnLPv/dJMcadW2VDv/xew9SVZHKKA5u3aK6fdyY1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FYnLPv%2FdJMcadW2VDv%2Fxew9SVZHKKA5u3aK6fdyY1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;765&quot; height=&quot;193&quot; data-origin-width=&quot;765&quot; data-origin-height=&quot;193&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784094353674&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg['grade'].value_counts()# 빈도 기준 내림차순 정렬&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;218&quot; data-origin-height=&quot;93&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nG91w/dJMcafHojcm/Acz6enwVokBRO1uoLK6kf1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nG91w/dJMcafHojcm/Acz6enwVokBRO1uoLK6kf1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nG91w/dJMcafHojcm/Acz6enwVokBRO1uoLK6kf1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnG91w%2FdJMcafHojcm%2FAcz6enwVokBRO1uoLK6kf1%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;218&quot; height=&quot;93&quot; data-origin-width=&quot;218&quot; data-origin-height=&quot;93&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;pre id=&quot;code_1784094624071&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;mpg['grade'].value_counts().sort_index() # 빈도 기준 내림차순 정렬 &amp;rarr; 알파벳 순 정렬&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;94&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/AYsJ3/dJMcaa69Osn/DbuiicalkI4IkLKZhtRBm0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/AYsJ3/dJMcaa69Osn/DbuiicalkI4IkLKZhtRBm0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/AYsJ3/dJMcaa69Osn/DbuiicalkI4IkLKZhtRBm0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FAYsJ3%2FdJMcaa69Osn%2FDbuiicalkI4IkLKZhtRBm0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;205&quot; height=&quot;94&quot; data-origin-width=&quot;205&quot; data-origin-height=&quot;94&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;'또는' 조건문을 활용한 파생변수 생성&lt;/li&gt;
&lt;/ul&gt;
&lt;pre id=&quot;code_1784095133313&quot; class=&quot;python&quot; data-ke-language=&quot;python&quot; data-ke-type=&quot;codeblock&quot;&gt;&lt;code&gt;# mpg 데이터의 category가 'subcompact', 'compact', '2seater'에 해당하는 경우 'small', 그렇지 않다면 'large'

# 방법 1: '|' ('\'키 + 'Shift'키 동시에) 사용
mpg['size'] = np.where((mpg['category'] == 'subcompact') | (mpg['category'] == 'compact') | (mpg['category'] == '2seater'), 'small', 'large')
mpg['size'].value_counts()

# 방법 2: isin() 함수 활용
mpg['size'] = np.where(mpg['category'].isin(['compact', 'subcompact', '2seater']), 'small', 'large')
mpg['size'].value_counts()&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;211&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cd1E8j/dJMcac4Ta13/M3i8XkmW5OpzoVrRdxfjR0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cd1E8j/dJMcac4Ta13/M3i8XkmW5OpzoVrRdxfjR0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cd1E8j/dJMcac4Ta13/M3i8XkmW5OpzoVrRdxfjR0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fcd1E8j%2FdJMcac4Ta13%2FM3i8XkmW5OpzoVrRdxfjR0%2Fimg.png&quot; onerror=&quot;this.onerror=null; this.src='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png'; this.srcset='//t1.daumcdn.net/tistory_admin/static/images/no-image-v1.png';&quot; loading=&quot;lazy&quot; width=&quot;211&quot; height=&quot;76&quot; data-origin-width=&quot;211&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;</description>
      <category>데이터 분석/Python</category>
      <category>Python</category>
      <category>데이터분석</category>
      <author>zer0 </author>
      <guid isPermaLink="true">https://youngchae00.tistory.com/4</guid>
      <comments>https://youngchae00.tistory.com/4#entry4comment</comments>
      <pubDate>Wed, 15 Jul 2026 15:31:14 +0900</pubDate>
    </item>
  </channel>
</rss>