Skip to content

Commit 9d0875d

Browse files
committed
Deploy post/2025-09-29-02 345996d
1 parent fbbb95a commit 9d0875d

17 files changed

Lines changed: 6977 additions & 0 deletions

assets/introduce-python-calc.png

223 KB
Loading

post/python-객체-클래스.html

Lines changed: 1170 additions & 0 deletions
Large diffs are not rendered by default.

post/python-날짜-시간.html

Lines changed: 646 additions & 0 deletions
Large diffs are not rendered by default.
Lines changed: 153 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,153 @@
1+
<!DOCTYPE html>
2+
<html lang="ko">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6+
7+
<title>[Python] 데이터 길들이기 | 차한음 블로그</title>
8+
<meta name="description" content="데이터를 충분히 고문하면, 자연은 언제나 바른 말을 할 것이다. - 로널드 코스 지금까지 파이썬 언어 자체(데이터 타입, 코드 구조, 구문 등)만 다뤘다.2부부터는 실제 문제 적용...">
9+
<meta name="author" content="차한음">
10+
<link rel="canonical" href="https://chebread.github.io/">
11+
12+
<meta property="og:title" content="[Python] 데이터 길들이기 | 차한음 블로그">
13+
<meta property="og:description" content="데이터를 충분히 고문하면, 자연은 언제나 바른 말을 할 것이다. - 로널드 코스 지금까지 파이썬 언어 자체(데이터 타입, 코드 구조, 구문 등)만 다뤘다.2부부터는 실제 문제 적용...">
14+
<meta property="og:type" content="article">
15+
<meta property="og:url" content="https://chebread.github.io/post/python-데이터-길들이기">
16+
<meta property="og:site_name" content="차한음 블로그">
17+
18+
<meta name="twitter:card" content="summary_large_image">
19+
<meta name="twitter:title" content="[Python] 데이터 길들이기 | 차한음 블로그">
20+
<meta name="twitter:description" content="데이터를 충분히 고문하면, 자연은 언제나 바른 말을 할 것이다. - 로널드 코스 지금까지 파이썬 언어 자체(데이터 타입, 코드 구조, 구문 등)만 다뤘다.2부부터는 실제 문제 적용...">
21+
22+
<script type="application/ld+json">
23+
{
24+
"@context": "https://schema.org",
25+
"@type": "BlogPosting",
26+
"headline": "[Python] 데이터 길들이기 | 차한음 블로그",
27+
"author": {
28+
"@type": "Person",
29+
"name": "차한음"
30+
},
31+
"publisher": {
32+
"@type": "Organization",
33+
"name": "차한음",
34+
},
35+
"datePublished": "2025-06-20",
36+
"description": "데이터를 충분히 고문하면, 자연은 언제나 바른 말을 할 것이다. - 로널드 코스 지금까지 파이썬 언어 자체(데이터 타입, 코드 구조, 구문 등)만 다뤘다.2부부터는 실제 문제 적용..."
37+
}
38+
</script>
39+
40+
<link rel="stylesheet" href="/styles/reset.css" />
41+
<link rel="stylesheet" href="/styles/layout.css" />
42+
<link rel="stylesheet" href="/styles/color-palette.css">
43+
<link rel="stylesheet" href="/styles/chroma.css">
44+
45+
<link rel="stylesheet" href="/styles/github-markdown.css">
46+
<link rel="stylesheet" href="/styles/post.css">
47+
48+
<link rel="icon" href="/favicons/favicon.ico" sizes="any">
49+
<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png">
50+
<link rel="apple-touch-icon" href="/favicons/apple-touch-icon.png">
51+
</head>
52+
<body>
53+
<div class="root">
54+
<div class="post">
55+
<nav class="post-nav">
56+
<a href="/" class="">
57+
<span></span>
58+
</a>
59+
<a href="/about" class="">
60+
<span>어바웃</span>
61+
</a>
62+
<a href="/posts" class="active">
63+
<span>포스트</span>
64+
</a>
65+
</nav>
66+
67+
<main class="post-content">
68+
<header class="post-header">
69+
<h1 class="post-title">[Python] 데이터 길들이기</h1>
70+
<p class="post-date"><time datetime="2025-06-20">2025년 06월 20일</time></p>
71+
<p class="post-category">[Python 문법 정리]</p>
72+
</header>
73+
<div class="post-body">
74+
<article class="markdown-body"><blockquote>
75+
<p>데이터를 충분히 고문하면, 자연은 언제나 바른 말을 할 것이다. - 로널드 코스</p>
76+
</blockquote>
77+
<p>지금까지 파이썬 언어 자체(데이터 타입, 코드 구조, 구문 등)만 다뤘다.
78+
2부부터는 실제 문제 적용을 다룰 것이다.</p>
79+
<p>이 장에서는 데이터 길들이기에 대한 실용적인 기술을 배운다.
80+
이것을 데이터 먼징(data munging) 또는 ETL(추출, 변형, 로드)라고 부른다.
81+
프로그래밍 서적은 일반적으로 이러한 주제를 명시적으로 다루지 않지만, 개발자들은 목적에 따라 데이터를 올바른 형태로 만드는 데 많은 시간을 소비한다.</p>
82+
<p>데이터 형식을 크게 텍스트(text)와 2진수(binary)로 나눌 수 있다.
83+
텍스트 데이터(text data)는 파이썬 문자열(string)을 사용한다.</p>
84+
<p>첫 번째로 지금까지 살펴보지 않은 문자열 정보를 다룬다.</p>
85+
<ul>
86+
<li>유니코드 문자</li>
87+
<li>정규 표현식 패턴 매칭</li>
88+
</ul>
89+
<p>두 번째로 이진 데이터와 두 가지 파이썬 내장 타입을 살펴본다.</p>
90+
<ul>
91+
<li>불변 8비트 값의 바이트</li>
92+
<li>가변 값의 바이트 배열</li>
93+
</ul>
94+
<p>=&gt; &quot;아니 텍스트도 2진수 아닌가?&quot; 라는 질문에 대한 답은 <strong>&quot;네, 맞습니다&quot;</strong> 입니다. 컴퓨터에 저장되는 모든 데이터는 궁극적으로 0과 1의 조합인 2진수(바이너리)입니다.</p>
95+
<p>그렇다면 왜 '텍스트'와 '이진' 데이터를 구분할까요? 이는 데이터를 <strong>어떻게 해석하고 다룰 것인가</strong>에 대한 실용적인 구분입니다.</p>
96+
<ul>
97+
<li><strong>텍스트 데이터(Text Data)</strong>: 0과 1의 나열이지만, <strong>정해진 규칙(인코딩, 예: UTF-8, ASCII)에 따라 인간이 읽을 수 있는 '문자'로 해석</strong>하기로 약속된 데이터입니다. 파이썬의 <code>string</code> 타입이 바로 이것을 다룹니다. 예를 들어, 2진수 <code>01000001</code>은 'A'라는 문자로 해석됩니다.</li>
98+
<li><strong>이진 데이터(Binary Data)</strong>: 이미지 파일(JPEG), 실행 파일(EXE), 동영상(MP4)처럼 <strong>문자로 해석되지 않는 모든 종류의 데이터</strong>를 의미합니다. 이 데이터들은 각 파일 형식의 고유한 구조에 따라 해석되어야 합니다. 파이썬의 <code>bytes</code> 타입이 이런 데이터를 다룹니다.
99+
'텍스트'와 '이진'의 구분은 물리적인 차이가 아니라, 그것을 사용하는 <strong>프로그램과 사람의 해석 방식에 따른 논리적인 구분</strong>입니다.</li>
100+
</ul>
101+
<h2>텍스트 문자열: 유니코드</h2>
102+
<p>5장에서 파이썬 문자열 기본을 배웠다.
103+
이제 유니코드를 배워볼 차례다.
104+
파이썬 3의 문자열은 바이트 배열이 아닌 유니코드 문자 시퀀스다.
105+
이것은 파이썬 2에서 파이썬 3의 가장 큰 변화다.
106+
지금까지 이 책의 모든 텍스트 예제는 평범하고 오래된 아스키 코드(ASCII)를 사용했다.
107+
컴퓨터의 기본 저장 단위는 바이트(byte)로 8비트(bit)에 256개의 고유한 값을 저장할 수 있다.
108+
여러 가지 이유로 아스키 코드는 7비트(128개의 고유한 값)만 사용한다.
109+
각 26개의 대소 문자, 숫자 10개, 문장 부호, 공백 문자, 비인쇄 제어 코드로 구성되어 있다.</p>
110+
<p>슬프게도, 세계에는 아스키 코드가 제공하는 것보다 더 많은 문자가 존재한다.
111+
파이썬은 많은 문자와 기호를 지원하기 위해 많은 노력을 했다.
112+
이 책에서 가끔 독특한 문자와 기호를 보게 될 것이다.
113+
다음은 일부 문자 코드다.</p>
114+
<ul>
115+
<li>Latin-1 or ISO8859-1</li>
116+
<li>Windows code page 1252
117+
이들 각 문자는 모두 8비트를 사용하지만, 그것조차도 충분하지 않다.
118+
심지어 비유럽 국가의 언어는 8비트로 모든 문자를 표현할 수 없다.
119+
국가별로 독자적인 문자열 인코딩을 사용하는 것을 해결하기 위해, 국제 표준화 기구에서 유니코드를 만들었다.
120+
유니코드는 수학 및 기타 분야의 기호들도 포함한다. 심지어 이모티콘까지.</li>
121+
</ul>
122+
<blockquote>
123+
<p>유니코드는 플랫폼, 프로그램, 언어에 상관없이 문자마다 고유한 번호를 제공한다. - 유니코드 협회</p>
124+
</blockquote>
125+
<p>유니코드 코드 차트 페이지는 현재 정의된 모든 문자 집합과 이미지에 대한 링크를 제공한다.
126+
가장 최신 버전 12.0은 문자 137,000개를 정의한다.
127+
각 문자는 고유한 이름과 식별 번호가 있다.
128+
문자들은 유니코드 평면(plane)이라고 하는 8비트의 세트로 분할된다.
129+
첫 번째 256 평면은 기본 다국어 평면(BMP)이다.
130+
위키백과의 유니코드 평면에서 자세한 내용을 확인할 수 있다.</p>
131+
</article>
132+
</div>
133+
</main>
134+
135+
<footer class="post-footer">
136+
<section>
137+
<p>&copy; 2025 Cha Haneum</p>
138+
</section>
139+
<section>
140+
<a href="https://github.com/chebread">
141+
<span>깃허브</span>
142+
</a>
143+
<a href="">
144+
<span>이메일</span>
145+
</a>
146+
</section>
147+
</footer>
148+
</div>
149+
</div>
150+
151+
<script src="/js/main.js"></script>
152+
</body>
153+
</html>

post/python-데이터.html

Lines changed: 148 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,148 @@
1+
<!DOCTYPE html>
2+
<html lang="ko">
3+
<head>
4+
<meta charset="UTF-8">
5+
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
6+
7+
<title>[Python] 데이터 | 차한음 블로그</title>
8+
<meta name="description" content="객체 파이썬에서 모든 데이터는 객체다. 객체는 타입(자료형) 정의, 다른 객체와 구별하기 위한 고유 ID, 타입과 연관된 값, 객체의 사용 빈도를 추적하는 참조 횟수를 포함하는 데...">
9+
<meta name="author" content="차한음">
10+
<link rel="canonical" href="https://chebread.github.io/">
11+
12+
<meta property="og:title" content="[Python] 데이터 | 차한음 블로그">
13+
<meta property="og:description" content="객체 파이썬에서 모든 데이터는 객체다. 객체는 타입(자료형) 정의, 다른 객체와 구별하기 위한 고유 ID, 타입과 연관된 값, 객체의 사용 빈도를 추적하는 참조 횟수를 포함하는 데...">
14+
<meta property="og:type" content="article">
15+
<meta property="og:url" content="https://chebread.github.io/post/python-데이터">
16+
<meta property="og:site_name" content="차한음 블로그">
17+
18+
<meta name="twitter:card" content="summary_large_image">
19+
<meta name="twitter:title" content="[Python] 데이터 | 차한음 블로그">
20+
<meta name="twitter:description" content="객체 파이썬에서 모든 데이터는 객체다. 객체는 타입(자료형) 정의, 다른 객체와 구별하기 위한 고유 ID, 타입과 연관된 값, 객체의 사용 빈도를 추적하는 참조 횟수를 포함하는 데...">
21+
22+
<script type="application/ld+json">
23+
{
24+
"@context": "https://schema.org",
25+
"@type": "BlogPosting",
26+
"headline": "[Python] 데이터 | 차한음 블로그",
27+
"author": {
28+
"@type": "Person",
29+
"name": "차한음"
30+
},
31+
"publisher": {
32+
"@type": "Organization",
33+
"name": "차한음",
34+
},
35+
"datePublished": "2025-05-01",
36+
"description": "객체 파이썬에서 모든 데이터는 객체다. 객체는 타입(자료형) 정의, 다른 객체와 구별하기 위한 고유 ID, 타입과 연관된 값, 객체의 사용 빈도를 추적하는 참조 횟수를 포함하는 데..."
37+
}
38+
</script>
39+
40+
<link rel="stylesheet" href="/styles/reset.css" />
41+
<link rel="stylesheet" href="/styles/layout.css" />
42+
<link rel="stylesheet" href="/styles/color-palette.css">
43+
<link rel="stylesheet" href="/styles/chroma.css">
44+
45+
<link rel="stylesheet" href="/styles/github-markdown.css">
46+
<link rel="stylesheet" href="/styles/post.css">
47+
48+
<link rel="icon" href="/favicons/favicon.ico" sizes="any">
49+
<link rel="icon" type="image/png" sizes="32x32" href="/favicons/favicon-32x32.png">
50+
<link rel="apple-touch-icon" href="/favicons/apple-touch-icon.png">
51+
</head>
52+
<body>
53+
<div class="root">
54+
<div class="post">
55+
<nav class="post-nav">
56+
<a href="/" class="">
57+
<span></span>
58+
</a>
59+
<a href="/about" class="">
60+
<span>어바웃</span>
61+
</a>
62+
<a href="/posts" class="active">
63+
<span>포스트</span>
64+
</a>
65+
</nav>
66+
67+
<main class="post-content">
68+
<header class="post-header">
69+
<h1 class="post-title">[Python] 데이터</h1>
70+
<p class="post-date"><time datetime="2025-05-01">2025년 05월 01일</time></p>
71+
<p class="post-category">[Python 문법 정리]</p>
72+
</header>
73+
<div class="post-body">
74+
<article class="markdown-body"><h2>객체</h2>
75+
<p>파이썬에서 모든 데이터는 객체다.</p>
76+
<p>객체는 <code>타입(자료형) 정의, 다른 객체와 구별하기 위한 고유 ID, 타입과 연관된 값, 객체의 사용 빈도를 추적하는 참조 횟수</code>를 포함하는 데이터 덩어리다.</p>
77+
<p>클래스는 객체의 정의다.</p>
78+
<h2>불변과 가변</h2>
79+
<p>파이썬에서 타입에 따라 가변과 불변이 정해진다. 리스트, 바이트 배열, 셋, 딕셔너리 타입 빼고는 모두 불변이다.</p>
80+
<p>불변이라는 말은, 객체의 값을 변경할 수 없다는 것이다.</p>
81+
<p>가변이라는 말은 객체의 값을 변경할 수는 있으나, 객체의 타입은 변경할 수 없다는 것이다.</p>
82+
<h2>리터럴 값</h2>
83+
<p>리터럴 또는 리터럴 값은 데이터 값 자체를 선언하는 방식이자, 데이터 값 자체를 의미한다.</p>
84+
<p>파이썬에서는 리터럴 값을 명시할 때 리터럴과 변수를 사용한다.</p>
85+
<p>리터럴은 값을 직접 나타내며, 값에 대한 객체를 만든다.</p>
86+
<p>변수로 리터럴 값을 명시할 수 있는 이유는 변수는 객체를 참조하는 이름이기 때문이다.</p>
87+
<p>즉, 변수도 객체이다.</p>
88+
<h2>변수</h2>
89+
<p><code>변수명 = 변수값</code> 형태로 선언한다.</p>
90+
<p>변수명은 <code>_</code> 를 이용하여 구분하며(snake_case), 소문자를 사용한다.</p>
91+
<h2>할당</h2>
92+
<p>할당 연산자(<code>=</code>)는 같음이 아니라 할당을 의미한다.</p>
93+
<p>할당 연산자의 오른쪽에 있는 표현식을 먼저 계산한 다음, 왼쪽에 있는 변수에 할당한다.</p>
94+
<p>할당한다는 것은 어떤 객체에 식별가능한 이름을 붙인다는 것이다.</p>
95+
<p><strong>그리고 파이썬에서는 할당 연산자는 할당만 수행하지, 아무런 값을 반환하지 않는다.</strong></p>
96+
<p>즉, 할당 연산자는 표현식이 아니다. 문이다.</p>
97+
<p>그러나, 바다 코끼리 연산자(<code>:=</code>)는 할당과 반환을 동시에 수행한다.</p>
98+
<h2>변수는 장소가 아니라 이름이다</h2>
99+
<p>변수는 단지 이름이다.</p>
100+
<p>할당은 데이터를 포함하는 객체에 이름을 붙인다.</p>
101+
<p>이름은 객체 자체가 아닌 객체에 대한 참조다. 컴퓨터 메모리 어딘가에 있는 객체 상자에 문자열이 부착된 이름을 시각화한다.</p>
102+
<p>이름으로 객체를 참조하면, 참조 횟수가 증가하고, 객체에 대한 참조를 중단하면 참조 횟수가 감소한다.</p>
103+
<p>이름은 어떤 타입이든 가리킬 수 있다. 데이터 객체 자체에 의해 값과 타입을 얻는다.</p>
104+
<h2>재할당</h2>
105+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl"><span class="n">a</span> <span class="o">=</span> <span class="mi">3</span>
106+
</span></span><span class="line"><span class="cl"><span class="n">a</span> <span class="o">=</span> <span class="mi">5</span>
107+
</span></span></code></pre><p><code>a = 3</code> 이렇게 하면 <code>a</code><code>3</code> 정수 객체를 가리킨다. 그리고 <code>a = 5</code> 이렇게 하면 <code>5</code> 정수 객체를 새롭게 가리키게 된다. 그리고 이전 정수 객체를 참조를 중단하게 된다.</p>
108+
<h2>복사</h2>
109+
<p><strong>복사는 여러 변수가 같은 객체를 가리키는 것을 의미한다.</strong></p>
110+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl"><span class="n">a</span> <span class="o">=</span> <span class="mi">3</span>
111+
</span></span><span class="line"><span class="cl"><span class="n">b</span> <span class="o">=</span> <span class="n">a</span>
112+
</span></span></code></pre><p><strong>이렇게 하면 <code>a</code> , <code>b</code><code>3</code> 정수 객체를 동시에 같이 가리키게 된다.</strong></p>
113+
<pre tabindex="0" class="chroma"><code><span class="line"><span class="cl"><span class="n">a</span> <span class="o">=</span> <span class="p">[</span><span class="mi">1</span><span class="p">,</span> <span class="mi">2</span><span class="p">,</span> <span class="mi">3</span><span class="p">]</span>
114+
</span></span><span class="line"><span class="cl"><span class="n">b</span> <span class="o">=</span> <span class="n">a</span>
115+
</span></span><span class="line"><span class="cl"><span class="n">a</span><span class="p">[</span><span class="mi">0</span><span class="p">]</span> <span class="o">=</span> <span class="mi">9</span>
116+
</span></span></code></pre><p><strong>이렇게 하면 <code>a</code> , <code>b</code> 는 동시에 리스트 객체를 가리킨다.</strong></p>
117+
<p>리스트는 가변 객체이기 때문에 값이 변경가능하다.</p>
118+
<p>즉, <code>a[0]</code> 하면 리스트 객체에 0번째의 요소가 <code>9</code> 로 변경된다.</p>
119+
<p>즉, 그러면 리스트 객체는 값이 수정된다.</p>
120+
<p>그러면 리스트 객체를 참조하는 <code>a</code> , <code>b</code> 둘다 값이 변경되게 된다.</p>
121+
<p>즉, <code>b[0]</code> 도 값이 <code>9</code> 로 되게 된다.</p>
122+
<h2>얕은 복사</h2>
123+
<p>위 처럼, 주소값만 복사하여 독립성이 보장되지 않는 복사를 얕은 복사라고 한다.</p>
124+
<p>가변 객체는 모두 얕은 복사를 수행한다.</p>
125+
<p>가변 객체는 <code>deepcopy()</code> 를 사용하여 깊은 복사를 수행할 수 있다.</p>
126+
</article>
127+
</div>
128+
</main>
129+
130+
<footer class="post-footer">
131+
<section>
132+
<p>&copy; 2025 Cha Haneum</p>
133+
</section>
134+
<section>
135+
<a href="https://github.com/chebread">
136+
<span>깃허브</span>
137+
</a>
138+
<a href="">
139+
<span>이메일</span>
140+
</a>
141+
</section>
142+
</footer>
143+
</div>
144+
</div>
145+
146+
<script src="/js/main.js"></script>
147+
</body>
148+
</html>

0 commit comments

Comments
 (0)