<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0">
  <channel>
    <title>taeyang4208 님의 블로그</title>
    <link>https://taeyang4208.tistory.com/</link>
    <description>공부한 내용을 정리하여 기록합니다.</description>
    <language>ko</language>
    <pubDate>Mon, 15 Jun 2026 03:00:56 +0900</pubDate>
    <generator>TISTORY</generator>
    <ttl>100</ttl>
    <managingEditor>Taeyang's Learning Lab</managingEditor>
    <item>
      <title>CoreML Converting Test</title>
      <link>https://taeyang4208.tistory.com/17</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Prior&amp;nbsp;to&amp;nbsp;developing&amp;nbsp;the&amp;nbsp;chatbot,&amp;nbsp;when&amp;nbsp;using&amp;nbsp;tokenizer&amp;nbsp;in&amp;nbsp;CoreML,&amp;nbsp;there&amp;nbsp;is&amp;nbsp;a&amp;nbsp;problem&amp;nbsp;that&amp;nbsp;it&amp;nbsp;cannot&amp;nbsp;be&amp;nbsp;converted&amp;nbsp;from&amp;nbsp;the&amp;nbsp;existing&amp;nbsp;Python&amp;nbsp;code.&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;CoreML has a problem because it receives a &quot;number array&quot; as input, and the &quot;string&quot; input cannot be converted. When converting a PyTorch or TensorFlow model to Core ML, only the weight and operation of the model are converted, and the tokenizer operates in Python code, so it is deleted without being converted.&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;Therefore,&amp;nbsp;a&amp;nbsp;temporary&amp;nbsp;model&amp;nbsp;was&amp;nbsp;implemented&amp;nbsp;to&amp;nbsp;confirm&amp;nbsp;whether&amp;nbsp;the&amp;nbsp;function&amp;nbsp;of&amp;nbsp;the&amp;nbsp;kobert&amp;nbsp;model&amp;nbsp;was&amp;nbsp;executed&amp;nbsp;when&amp;nbsp;converting&amp;nbsp;the&amp;nbsp;KoBERT&amp;nbsp;model&amp;nbsp;to&amp;nbsp;the&amp;nbsp;CoreML&amp;nbsp;model.&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;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Methods for converting the Kobert model into the CoreML model is as follow.&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;Initial Implementation Method : PyTorch &amp;rarr; ONNX &amp;rarr; CoreML&lt;/li&gt;
&lt;/ul&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Why convert the pytorch model through ONNX instead of directly converting it to CoreML?&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;-&amp;gt; Because Open Neural Network Exchange (ONNX) translates models into intermediate formats, increasing compatibility across different frameworks!&lt;br /&gt;Core&amp;nbsp;ML&amp;nbsp;does&amp;nbsp;not&amp;nbsp;fully&amp;nbsp;support&amp;nbsp;the&amp;nbsp;direct&amp;nbsp;transformation&amp;nbsp;of&amp;nbsp;PyTorch&amp;nbsp;models,&amp;nbsp;so&amp;nbsp;it&amp;nbsp;can&amp;nbsp;be&amp;nbsp;transformed&amp;nbsp;more&amp;nbsp;reliably&amp;nbsp;through&amp;nbsp;ONNX.&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;h4 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;color: #000000;&quot;&gt;PyTorch &amp;rarr; ONNX &amp;rarr; CoreML&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;[PyTorch Model] &amp;rarr; (ONNX Converting) &amp;rarr; [ONNX Model] &amp;rarr; (CoreML Converting) &amp;rarr; [CoreML Model],&lt;br /&gt;Run&amp;nbsp;the&amp;nbsp;Core&amp;nbsp;ML&amp;nbsp;model&amp;nbsp;on&amp;nbsp;iOS&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2058&quot; data-origin-height=&quot;782&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckReoG/btsME8YSNzw/SaSUGipKzfES5gW0BaeXw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckReoG/btsME8YSNzw/SaSUGipKzfES5gW0BaeXw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckReoG/btsME8YSNzw/SaSUGipKzfES5gW0BaeXw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FckReoG%2FbtsME8YSNzw%2FSaSUGipKzfES5gW0BaeXw0%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;2058&quot; height=&quot;782&quot; data-origin-width=&quot;2058&quot; data-origin-height=&quot;782&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1944&quot; data-origin-height=&quot;1818&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/PC55l/btsMGtVffm3/I0ezbGfqCIBrweDAqtsz7K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/PC55l/btsMGtVffm3/I0ezbGfqCIBrweDAqtsz7K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/PC55l/btsMGtVffm3/I0ezbGfqCIBrweDAqtsz7K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FPC55l%2FbtsMGtVffm3%2FI0ezbGfqCIBrweDAqtsz7K%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;1944&quot; height=&quot;1818&quot; data-origin-width=&quot;1944&quot; data-origin-height=&quot;1818&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;Since mlmodel cannot be opened in Xcode, it is recommended to change it to mlpackage format and open it in an ios environment.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;In addition, when opening a file converted from Xcode, you should check whether the input and output sizes and types are the same. When the file was opened in Xcode, it was confirmed that int32, the data type of the input and output of the file, was not converted correctly. Since CoreML does not support int64 or int32, it unifies the input and output types as float32.&lt;/span&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;When&amp;nbsp;the&amp;nbsp;model&amp;nbsp;of&amp;nbsp;the&amp;nbsp;project&amp;nbsp;is&amp;nbsp;completed&amp;nbsp;in&amp;nbsp;the&amp;nbsp;future,&amp;nbsp;it&amp;nbsp;will&amp;nbsp;be&amp;nbsp;converted&amp;nbsp;into&amp;nbsp;CoreML&amp;nbsp;in&amp;nbsp;the&amp;nbsp;same&amp;nbsp;way&amp;nbsp;as&amp;nbsp;above.&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;Additionally, when I tried to open mlpackage through Xcode in an ios environment(iMAC 24), an outputSchema problem occurred.&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1433&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dAVwIw/btsMEXQJGHN/0lgauKilxjWqFXuSUD2wX0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dAVwIw/btsMEXQJGHN/0lgauKilxjWqFXuSUD2wX0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dAVwIw/btsMEXQJGHN/0lgauKilxjWqFXuSUD2wX0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdAVwIw%2FbtsMEXQJGHN%2F0lgauKilxjWqFXuSUD2wX0%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;859&quot; height=&quot;804&quot; data-filename=&quot;blob&quot; data-origin-width=&quot;1536&quot; data-origin-height=&quot;1433&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;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;The cause of the problem was that Bert_model's path was inaccurate.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;I learned that it is necessary to double-check the code after changing the name of the folder or moving the data.&lt;/span&gt;&lt;/p&gt;</description>
      <category>Multimodal Chatbot Project : ESA/project overview</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/17</guid>
      <comments>https://taeyang4208.tistory.com/17#entry17comment</comments>
      <pubDate>Mon, 19 May 2025 18:46:16 +0900</pubDate>
    </item>
    <item>
      <title>Project Planning and Objectives Estimation</title>
      <link>https://taeyang4208.tistory.com/16</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;Project Overview&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;This project aims to create a chatbot that analyzes the user's emotions and conveys empathy and comfort in the way the other person wants. Analysis of the user's emotions is analyzed in two ways: text analysis and facial images analysis. Analysis through text aims not only to capture words representing specific emotions, but to infer the user's emotions by grasping the context. In addition, the method of treating according to emotions allows users to respond in the way they want, such as friends, parents, and lovers.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;Key Features&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Text-based emotional analysis&lt;/span&gt;&lt;/b&gt;&lt;span&gt;&lt;b&gt;:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;It analyzes emotions by analyzing text input by the user.&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;-&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Image-based emotional analysis:&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;analyze the facial image image image that the user posted by analyzing the facial image.&lt;/span&gt;&lt;/span&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;b&gt;- Provides response to customized comfort:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Based on the analyzed emotions, the user responds with the desired type (EX/parents, friends, lovers, etc.).&lt;/span&gt;&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;b&gt;- Personal custom:&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Continuous conversation analyzes minor patterns in individual texts, images, etc. to derive more sophisticated responses.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Model Implementation&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;The&amp;nbsp;text&amp;nbsp;recognition&amp;nbsp;model&amp;nbsp;and&amp;nbsp;the&amp;nbsp;image&amp;nbsp;recognition&amp;nbsp;model&amp;nbsp;are&amp;nbsp;distinguished&amp;nbsp;and&amp;nbsp;implemented&amp;nbsp;respectively.&amp;nbsp;In&amp;nbsp;the&amp;nbsp;initial&amp;nbsp;plan,&amp;nbsp;the&amp;nbsp;text&amp;nbsp;dataset&amp;nbsp;and&amp;nbsp;the&amp;nbsp;image&amp;nbsp;dataset&amp;nbsp;were&amp;nbsp;combined&amp;nbsp;to&amp;nbsp;be&amp;nbsp;implemented&amp;nbsp;as&amp;nbsp;a&amp;nbsp;single&amp;nbsp;dataset,&amp;nbsp;but&amp;nbsp;due&amp;nbsp;to&amp;nbsp;the&amp;nbsp;problem&amp;nbsp;of&amp;nbsp;data&amp;nbsp;size&amp;nbsp;mismatch,&amp;nbsp;the&amp;nbsp;model&amp;nbsp;that&amp;nbsp;recognizes&amp;nbsp;text&amp;nbsp;and&amp;nbsp;images&amp;nbsp;at&amp;nbsp;the&amp;nbsp;same&amp;nbsp;time&amp;nbsp;was&amp;nbsp;not&amp;nbsp;immediately&amp;nbsp;implemented,&amp;nbsp;but&amp;nbsp;after&amp;nbsp;implementing&amp;nbsp;the&amp;nbsp;text&amp;nbsp;recognition&amp;nbsp;model&amp;nbsp;and&amp;nbsp;the&amp;nbsp;image&amp;nbsp;recognition&amp;nbsp;model&amp;nbsp;respectively,&amp;nbsp;it&amp;nbsp;was&amp;nbsp;decided&amp;nbsp;to&amp;nbsp;create&amp;nbsp;a&amp;nbsp;recognition&amp;nbsp;model&amp;nbsp;by&amp;nbsp;combining&amp;nbsp;them.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;The text recognition model implements&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;NLP (natural language processing)&lt;/b&gt;, especially after analyzing the morpheme of Korean, grasping the context, and inferring emotions.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;b&gt;KoNLpy&lt;/b&gt;&amp;nbsp;is&amp;nbsp;used&amp;nbsp;for&amp;nbsp;Korean&amp;nbsp;morpheme&amp;nbsp;analysis.&lt;br /&gt;In the preprocessing process, the dataset is divided into training, validation, and test sets and calculated at a ratio of 8:1:1.&lt;br /&gt;The&amp;nbsp;training&amp;nbsp;text&amp;nbsp;dataset,&amp;nbsp;which&amp;nbsp;has&amp;nbsp;been&amp;nbsp;preprocessed&amp;nbsp;through&amp;nbsp;NLP,&amp;nbsp;is&amp;nbsp;applied&amp;nbsp;to&amp;nbsp;the&amp;nbsp;&lt;b&gt;LSTM&amp;nbsp;&lt;/b&gt;model&amp;nbsp;to&amp;nbsp;proceed&amp;nbsp;with&amp;nbsp;training,&amp;nbsp;and&amp;nbsp;tested&amp;nbsp;with&amp;nbsp;the&amp;nbsp;test&amp;nbsp;text&amp;nbsp;dataset,&amp;nbsp;which&amp;nbsp;is&amp;nbsp;tested&amp;nbsp;20&amp;nbsp;times&amp;nbsp;with&amp;nbsp;epoch=20&amp;nbsp;and&amp;nbsp;the&amp;nbsp;performance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;model&amp;nbsp;is&amp;nbsp;gradually&amp;nbsp;improved.&amp;nbsp;The&amp;nbsp;performance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;model&amp;nbsp;is&amp;nbsp;judged&amp;nbsp;based&amp;nbsp;on&amp;nbsp;Accuracy.&amp;nbsp;&amp;nbsp;&lt;br /&gt;The&amp;nbsp;performance&amp;nbsp;of&amp;nbsp;the&amp;nbsp;model&amp;nbsp;is&amp;nbsp;aimed&amp;nbsp;at&amp;nbsp;Accuracy&amp;nbsp;Score&amp;nbsp;0.90&amp;nbsp;or&amp;nbsp;higher,&amp;nbsp;and&amp;nbsp;if&amp;nbsp;the&amp;nbsp;baseline&amp;nbsp;score&amp;nbsp;is&amp;nbsp;not&amp;nbsp;met,&amp;nbsp;the&amp;nbsp;model&amp;nbsp;is&amp;nbsp;gradually&amp;nbsp;improved&amp;nbsp;through&amp;nbsp;hyperparameter&amp;nbsp;tuning.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;The&amp;nbsp;image&amp;nbsp;recognition&amp;nbsp;model&amp;nbsp;is&amp;nbsp;largely&amp;nbsp;divided&amp;nbsp;into&amp;nbsp;a&amp;nbsp;training&amp;nbsp;set&amp;nbsp;and&amp;nbsp;a&amp;nbsp;test&amp;nbsp;set&amp;nbsp;in&amp;nbsp;the&amp;nbsp;entire&amp;nbsp;dataset,&amp;nbsp;and&amp;nbsp;80%&amp;nbsp;is&amp;nbsp;trained&amp;nbsp;and&amp;nbsp;20%&amp;nbsp;is&amp;nbsp;prepared&amp;nbsp;as&amp;nbsp;a&amp;nbsp;verification&amp;nbsp;set&amp;nbsp;in&amp;nbsp;the&amp;nbsp;training&amp;nbsp;set.&amp;nbsp;Each&amp;nbsp;training,&amp;nbsp;verification,&amp;nbsp;and&amp;nbsp;test&amp;nbsp;set&amp;nbsp;are&amp;nbsp;calculated&amp;nbsp;at&amp;nbsp;a&amp;nbsp;ratio&amp;nbsp;of&amp;nbsp;3.2:0.8:1.&amp;nbsp;Each&amp;nbsp;prepared&amp;nbsp;dataset&amp;nbsp;was&amp;nbsp;preprocessed&amp;nbsp;through&amp;nbsp;data&amp;nbsp;augmentation&amp;nbsp;and&amp;nbsp;normalization.&amp;nbsp;&lt;br /&gt;The preprocessed data is applied to the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;EfficientNetB0&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;model to proceed with training, and the test is performed with a test image dataset, and the performance of the model is gradually improved by testing it 20 times with epoch=20. The performance of the model is judged based on Accuracy.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Combining&amp;nbsp;the&amp;nbsp;two&amp;nbsp;completed&amp;nbsp;models,&amp;nbsp;we&amp;nbsp;implement&amp;nbsp;one&amp;nbsp;recognition&amp;nbsp;model&amp;nbsp;and&amp;nbsp;test&amp;nbsp;it&amp;nbsp;in&amp;nbsp;CoreML&amp;nbsp;by&amp;nbsp;adding&amp;nbsp;other&amp;nbsp;features.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Technical stack and development environment&lt;/span&gt;&lt;/h3&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Programming Language: Python&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;br /&gt;Text&amp;nbsp;Emotion&amp;nbsp;Analysis&amp;nbsp;Model:&amp;nbsp;KoBERT&amp;nbsp;(Korean&amp;nbsp;BERT)&amp;nbsp;(Context-based&amp;nbsp;Emotion&amp;nbsp;Analysis),&amp;nbsp;LSTM&amp;nbsp;+&amp;nbsp;Word2Vec&amp;nbsp;(Current&amp;nbsp;Neural&amp;nbsp;Network&amp;nbsp;for&amp;nbsp;Emotion&amp;nbsp;Analysis)&lt;br /&gt;&lt;br /&gt;Image&amp;nbsp;Emotion&amp;nbsp;Analysis&amp;nbsp;Models:&amp;nbsp;CNN&amp;nbsp;(Face&amp;nbsp;Emotion&amp;nbsp;Analysis),&amp;nbsp;EfficientNet&amp;nbsp;(Face&amp;nbsp;Emotion&amp;nbsp;Prediction)&lt;br /&gt;&lt;br /&gt;Text&amp;nbsp;Dataset&amp;nbsp;:&amp;nbsp;aihub&amp;nbsp;Emotional&amp;nbsp;Conversation&amp;nbsp;Dataset&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;a href=&quot;https://aihub.or.kr/aihubdata/data/dwld.do?currMenu=&amp;amp;topMenu=&amp;amp;dataSetSn=270&amp;amp;beforeSn=274&amp;amp;inqrySeCode=&amp;amp;intrstDataAt=N&amp;amp;reloadYn=N&amp;amp;useAt=&quot;&gt;https://aihub.or.kr/aihubdata/data/dwld.do?currMenu=&amp;amp;topMenu=&amp;amp;dataSetSn=270&amp;amp;beforeSn=274&amp;amp;inqrySeCode=&amp;amp;intrstDataAt=N&amp;amp;reloadYn=N&amp;amp;useAt=&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;Image&amp;nbsp;Dataset:&amp;nbsp;FER2013&amp;nbsp;(Face&amp;nbsp;expression&amp;nbsp;dataset)&lt;br /&gt;&lt;a href=&quot;https://www.kaggle.com/datasets/msambare/fer2013&quot;&gt;https://www.kaggle.com/datasets/msambare/fer2013&lt;/a&gt;&lt;/p&gt;
&lt;figure id=&quot;og_1747647870205&quot; style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; contenteditable=&quot;false&quot; data-og-image=&quot;https://scrap.kakaocdn.net/dn/s9CMD/hyYqM9ei7D/Z5zuSkimz3EDioPo191P20/img.png?width=1200&amp;amp;height=1200&amp;amp;face=108_71_1111_1109&quot; data-og-url=&quot;https://www.kaggle.com/datasets/msambare/fer2013&quot; data-og-source-url=&quot;https://www.kaggle.com/datasets/msambare/fer2013&quot; data-og-host=&quot;www.kaggle.com&quot; data-og-description=&quot;Learn facial expressions from an image&quot; data-og-title=&quot;FER-2013&quot; data-og-type=&quot;website&quot; data-ke-align=&quot;alignCenter&quot; data-ke-type=&quot;opengraph&quot;&gt;&lt;a style=&quot;color: #000000;&quot; href=&quot;https://www.kaggle.com/datasets/msambare/fer2013&quot; data-source-url=&quot;https://www.kaggle.com/datasets/msambare/fer2013&quot;&gt;
&lt;div&gt;&amp;nbsp;&lt;/div&gt;
&lt;div&gt;
&lt;p style=&quot;color: #000000;&quot; data-ke-size=&quot;size16&quot;&gt;FER-2013&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;Learn facial expressions from an image&lt;/p&gt;
&lt;p style=&quot;color: #909090;&quot; data-ke-size=&quot;size16&quot;&gt;www.kaggle.com&lt;/p&gt;
&lt;/div&gt;
&lt;/a&gt;&lt;/figure&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Data&amp;nbsp;processing:&amp;nbsp;Numpy&amp;nbsp;(multidimensional&amp;nbsp;array&amp;nbsp;and&amp;nbsp;numerical&amp;nbsp;operations,&amp;nbsp;optimization&amp;nbsp;of&amp;nbsp;vector&amp;nbsp;operations&amp;nbsp;of&amp;nbsp;emotion&amp;nbsp;analysis&amp;nbsp;results),&amp;nbsp;Pandas&amp;nbsp;(storage&amp;nbsp;and&amp;nbsp;analysis&amp;nbsp;of&amp;nbsp;emotion&amp;nbsp;analysis&amp;nbsp;results&amp;nbsp;in&amp;nbsp;data&amp;nbsp;frame&amp;nbsp;format,&amp;nbsp;emotion&amp;nbsp;analysis&amp;nbsp;evaluation&amp;nbsp;and&amp;nbsp;statistics&amp;nbsp;processing),&amp;nbsp;Tensorflow&amp;nbsp;(training&amp;nbsp;and&amp;nbsp;optimization&amp;nbsp;of&amp;nbsp;text&amp;nbsp;emotion&amp;nbsp;analysis&amp;nbsp;models,&amp;nbsp;building&amp;nbsp;CNN&amp;nbsp;models&amp;nbsp;for&amp;nbsp;image&amp;nbsp;emotion&amp;nbsp;analysis)&lt;br /&gt;&lt;br /&gt;Development&amp;nbsp;Tools:&amp;nbsp;Jupiter&amp;nbsp;Notebook&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;Expectation Effectiveness&lt;/span&gt;&lt;/h4&gt;
&lt;p style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;It provides customized comfort services through emotion analysis and can be used for various services dealing with emotions (psychological counseling, etc.).&lt;/span&gt;&lt;/p&gt;</description>
      <category>Multimodal Chatbot Project : ESA/project overview</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/16</guid>
      <comments>https://taeyang4208.tistory.com/16#entry16comment</comments>
      <pubDate>Mon, 19 May 2025 18:44:48 +0900</pubDate>
    </item>
    <item>
      <title>Text Recognition Model Architecture</title>
      <link>https://taeyang4208.tistory.com/15</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;After completing the data preprocessing, I will now document the architecture of the model I built.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;model overview&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The model used for text-based emotion classification follows a &lt;b&gt;CNN + BiLSTM + Attention&lt;/b&gt; architecture.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;This structure was chosen because it captures not only the sequential characteristics of a sentence but also local patterns, making it well-suited for emotion analysis.&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-pm-slice=&quot;3 5 []&quot; data-spread=&quot;true&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;CNN (Convolutional Neural Network)&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;The Conv1D layer is used to extract local features by capturing consecutive word patterns in a sentence&amp;mdash;essentially &lt;b&gt;n-gram&lt;/b&gt; information, such as emotion-related expressions that appear in groups of 2 to 3 words.&lt;/li&gt;
&lt;li&gt;By setting the kernel size to 3 (&lt;b&gt;&lt;span&gt;kernel_size=3&lt;/span&gt;&lt;/b&gt;), the model is trained to detect patterns at the &lt;b&gt;3-gram level&lt;/b&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;BiLSTM (Bidirectional Long Short-Term Memory)&lt;/b&gt;&lt;/span&gt;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;A bidirectional LSTM is used to capture both the forward and backward context of a sentence.&lt;/li&gt;
&lt;li&gt;With &lt;b&gt;&lt;span&gt;return_sequences=True&lt;/span&gt;&lt;/b&gt;, the output at each time step is preserved and passed to the next layer, allowing the Attention mechanism to make use of the full sequence information.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Attention Layer&lt;/b&gt;&lt;/span&gt;&amp;nbsp;
&lt;ul style=&quot;list-style-type: disc;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;This is not a built-in Keras layer, but a &lt;b&gt;custom Attention layer&lt;/b&gt; that I implemented myself.&lt;/li&gt;
&lt;li&gt;It learns attention weights based on the word vectors at each time step and generates a context vector that focuses on the most important parts of the sentence.&lt;/li&gt;
&lt;li&gt;Internally, it uses two Dense layers (W and V) to compute attention scores, which are then normalized using a softmax function.&lt;/li&gt;
&lt;li&gt;When a mask is provided, extremely small values are assigned to the padding positions to prevent the model from attending to them.&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;1808&quot; data-origin-height=&quot;1116&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Or8MW/btsN4Kgm9Qa/qlZAvonyQyROoz2LnlOyoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Or8MW/btsN4Kgm9Qa/qlZAvonyQyROoz2LnlOyoK/img.png&quot; data-alt=&quot;Custom Attention Layer&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Or8MW/btsN4Kgm9Qa/qlZAvonyQyROoz2LnlOyoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOr8MW%2FbtsN4Kgm9Qa%2FqlZAvonyQyROoz2LnlOyoK%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;1808&quot; height=&quot;1116&quot; data-origin-width=&quot;1808&quot; data-origin-height=&quot;1116&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Custom Attention Layer&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;With this combination, I aimed to enhance emotion classification performance, especially for Korean&amp;mdash;a language with a flexible word order.&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;model implementation and design&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The model was implemented using TensorFlow and Keras.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1806&quot; data-origin-height=&quot;1488&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfimyO/btsN2LBiGvQ/siA5RxjKUVX24FKJ4kvJHK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfimyO/btsN2LBiGvQ/siA5RxjKUVX24FKJ4kvJHK/img.png&quot; data-alt=&quot;Model Architecture&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfimyO/btsN2LBiGvQ/siA5RxjKUVX24FKJ4kvJHK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfimyO%2FbtsN2LBiGvQ%2FsiA5RxjKUVX24FKJ4kvJHK%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;1806&quot; height=&quot;1488&quot; data-origin-width=&quot;1806&quot; data-origin-height=&quot;1488&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Model Architecture&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1850&quot; data-origin-height=&quot;1294&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NNgG9/btsN4qoSgVb/aA7ekDf7bjc08kkKz4B1QK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NNgG9/btsN4qoSgVb/aA7ekDf7bjc08kkKz4B1QK/img.png&quot; data-alt=&quot;Model Summary&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NNgG9/btsN4qoSgVb/aA7ekDf7bjc08kkKz4B1QK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNNgG9%2FbtsN4qoSgVb%2FaA7ekDf7bjc08kkKz4B1QK%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;1850&quot; height=&quot;1294&quot; data-origin-width=&quot;1850&quot; data-origin-height=&quot;1294&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Model Summary&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;The model was trained with the following configuration:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; color: #000000; text-align: start;&quot; data-spread=&quot;false&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Loss Function&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: Sparse Categorical Crossentropy &lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;(w&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;ell-suited for integer-encoded labels&lt;/span&gt;&lt;span style=&quot;color: #000000; text-align: left;&quot;&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Optimizer&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: Adam (Learning_rate = 0.0003)&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Batch Size&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 64&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;Epochs&lt;/b&gt;&lt;/span&gt;&lt;span&gt;: 50&lt;/span&gt;&lt;/li&gt;
&lt;li&gt;&lt;span&gt;&lt;b&gt;EarlyStopping &amp;amp; ReduceLROnPlateau&amp;nbsp;&lt;/b&gt;: prevent overfitting during training&lt;/span&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In addition, to address class imbalance in the dataset, &lt;span&gt;class_weight&lt;/span&gt; was used to assign appropriate weights during training.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;An ensemble approach was also applied, selecting the best-performing model based on validation accuracy.&lt;/p&gt;
&lt;p style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Detailed training parameters and performance results will be covered in the next post.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Lessons Learned from Building a Text Classification Model&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Designing and implementing the model architecture was a process filled with important decisions and challenges.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;One of the biggest difficulties was balancing model complexity with training stability&amp;mdash;especially when combining convolutional and recurrent layers with a custom attention mechanism.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;It required careful experimentation to ensure that each layer added meaningful value without introducing unnecessary overhead.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;In particular, handling the flexible word order of the Korean language posed unique modeling challenges, which led me to choose a BiLSTM + Attention structure that could dynamically capture both local and contextual features.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Through this experience, I realized how crucial it is to design models not only for accuracy, but also for robustness, scalability, and relevance to the linguistic structure of the target domain&amp;mdash;principles that are essential in any real-world AI application.&lt;/p&gt;</description>
      <category>Multimodal Chatbot Project : ESA/development process</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/15</guid>
      <comments>https://taeyang4208.tistory.com/15#entry15comment</comments>
      <pubDate>Mon, 19 May 2025 18:43:44 +0900</pubDate>
    </item>
    <item>
      <title>Text data pre-processing process</title>
      <link>https://taeyang4208.tistory.com/14</link>
      <description>&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;article overview&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;During&amp;nbsp;the&amp;nbsp;chatbot&amp;nbsp;development&amp;nbsp;process,&amp;nbsp;I&amp;nbsp;will&amp;nbsp;write&amp;nbsp;on&amp;nbsp;the&amp;nbsp;topic&amp;nbsp;of&amp;nbsp;the&amp;nbsp;text&amp;nbsp;data&amp;nbsp;preprocessing&amp;nbsp;process.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I will mainly describe the &lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;pre-processing process and what I learned, errors, and what I learned in the process.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;development process&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Pre-processing is the process of loading a dataset and making it available for model training.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;I&amp;nbsp;selected&amp;nbsp;&lt;b&gt;KOTE&lt;/b&gt;&amp;nbsp;as&amp;nbsp;the&amp;nbsp;dataset&amp;nbsp;to&amp;nbsp;be&amp;nbsp;used&amp;nbsp;for&amp;nbsp;model&amp;nbsp;training,&amp;nbsp;and&amp;nbsp;the&amp;nbsp;data&amp;nbsp;is&amp;nbsp;stored&amp;nbsp;in&amp;nbsp;&lt;b&gt;.tsv&lt;/b&gt;&amp;nbsp;format.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;Furthermore,&amp;nbsp;since&amp;nbsp;chatbot&amp;nbsp;development&amp;nbsp;is&amp;nbsp;a&amp;nbsp;multimodal&amp;nbsp;project&amp;nbsp;and&amp;nbsp;will&amp;nbsp;also&amp;nbsp;cover&amp;nbsp;image&amp;nbsp;processing,&amp;nbsp;we&amp;nbsp;have&amp;nbsp;integrated&amp;nbsp;KOTE's&amp;nbsp;44&amp;nbsp;emotion&amp;nbsp;labels&amp;nbsp;into&amp;nbsp;seven&amp;nbsp;to&amp;nbsp;fit&amp;nbsp;the&amp;nbsp;labels&amp;nbsp;of&amp;nbsp;&lt;b&gt;Fer2013&lt;/b&gt;&amp;nbsp;-&amp;nbsp;a&amp;nbsp;dataset&amp;nbsp;used&amp;nbsp;for&amp;nbsp;image&amp;nbsp;processing.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;The&amp;nbsp;reason&amp;nbsp;for&amp;nbsp;doing&amp;nbsp;this&amp;nbsp;is&amp;nbsp;to&amp;nbsp;prevent&amp;nbsp;the&amp;nbsp;labels&amp;nbsp;from&amp;nbsp;mixing&amp;nbsp;when&amp;nbsp;combining&amp;nbsp;the&amp;nbsp;models&amp;nbsp;in&amp;nbsp;the&amp;nbsp;last&amp;nbsp;final&amp;nbsp;model,&amp;nbsp;so&amp;nbsp;that&amp;nbsp;the&amp;nbsp;correct&amp;nbsp;response&amp;nbsp;is&amp;nbsp;generated.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;First, I will load and save the KOTE dataset. And mapping was conducted to organize emotions into 7 labels.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;1002&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bKkgCO/btsN1kqfGP1/FKfqngbY2JFKLSYKOlzK31/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bKkgCO/btsN1kqfGP1/FKfqngbY2JFKLSYKOlzK31/img.png&quot; data-alt=&quot;Loading KOTE Data&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bKkgCO/btsN1kqfGP1/FKfqngbY2JFKLSYKOlzK31/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbKkgCO%2FbtsN1kqfGP1%2FFKfqngbY2JFKLSYKOlzK31%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;1816&quot; height=&quot;1002&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;1002&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Loading KOTE Data&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;880&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Wb1Fb/btsN1N6yZhX/FxA06r9KTkXYwcOY5Jpr71/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Wb1Fb/btsN1N6yZhX/FxA06r9KTkXYwcOY5Jpr71/img.png&quot; data-alt=&quot;Rearranging column name&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Wb1Fb/btsN1N6yZhX/FxA06r9KTkXYwcOY5Jpr71/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FWb1Fb%2FbtsN1N6yZhX%2FFxA06r9KTkXYwcOY5Jpr71%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;1814&quot; height=&quot;880&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;880&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Rearranging column name&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;1392&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rGcZ4/btsN29NR9va/kQusXeKGQa4o5RKscAPge0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rGcZ4/btsN29NR9va/kQusXeKGQa4o5RKscAPge0/img.png&quot; data-alt=&quot;Text Refining&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rGcZ4/btsN29NR9va/kQusXeKGQa4o5RKscAPge0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrGcZ4%2FbtsN29NR9va%2FkQusXeKGQa4o5RKscAPge0%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;1814&quot; height=&quot;1392&quot; data-origin-width=&quot;1814&quot; data-origin-height=&quot;1392&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Text Refining&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2444&quot; data-origin-height=&quot;1340&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bw4NRE/btsN1cMvUuC/35Uijb60rKVqdghrIBU190/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bw4NRE/btsN1cMvUuC/35Uijb60rKVqdghrIBU190/img.png&quot; data-alt=&quot;Label Mapping&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bw4NRE/btsN1cMvUuC/35Uijb60rKVqdghrIBU190/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbw4NRE%2FbtsN1cMvUuC%2F35Uijb60rKVqdghrIBU190%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;2444&quot; height=&quot;1340&quot; data-origin-width=&quot;2444&quot; data-origin-height=&quot;1340&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Label Mapping&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Tokenization&amp;nbsp;is&amp;nbsp;performed&amp;nbsp;in&amp;nbsp;morpheme&amp;nbsp;units,&amp;nbsp;and&amp;nbsp;I&amp;nbsp;used&amp;nbsp;Mekab&amp;nbsp;to&amp;nbsp;tokenize.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;1458&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dhuHai/btsN2cY33Zo/0fLLTsy5mnXCsZiatQTEm1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dhuHai/btsN2cY33Zo/0fLLTsy5mnXCsZiatQTEm1/img.png&quot; data-alt=&quot;Tokenizing with Mecab&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dhuHai/btsN2cY33Zo/0fLLTsy5mnXCsZiatQTEm1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdhuHai%2FbtsN2cY33Zo%2F0fLLTsy5mnXCsZiatQTEm1%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;1810&quot; height=&quot;1458&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;1458&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Tokenizing with Mecab&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;In&amp;nbsp;order&amp;nbsp;for&amp;nbsp;the&amp;nbsp;model&amp;nbsp;to&amp;nbsp;better&amp;nbsp;learn&amp;nbsp;the&amp;nbsp;core&amp;nbsp;content&amp;nbsp;(emotional&amp;nbsp;analogy)&amp;nbsp;of&amp;nbsp;the&amp;nbsp;text,&amp;nbsp;it&amp;nbsp;was&amp;nbsp;intended&amp;nbsp;to&amp;nbsp;exclude&amp;nbsp;unnecessary&amp;nbsp;elements&amp;nbsp;for&amp;nbsp;emotional&amp;nbsp;inference&amp;nbsp;as&amp;nbsp;much&amp;nbsp;as&amp;nbsp;possible.&lt;br /&gt;Words that appear frequently in the text, but have no meaning in emotional analysis, were designated and removed as stopwords.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;1098&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bxCPZd/btsN1RVbt8n/udkiZ90PSK6g60Wylc7wX1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bxCPZd/btsN1RVbt8n/udkiZ90PSK6g60Wylc7wX1/img.png&quot; data-alt=&quot;Applying Tokenization with Stopwords&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bxCPZd/btsN1RVbt8n/udkiZ90PSK6g60Wylc7wX1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbxCPZd%2FbtsN1RVbt8n%2FudkiZ90PSK6g60Wylc7wX1%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;1810&quot; height=&quot;1098&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;1098&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Applying Tokenization with Stopwords&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;And because the KOTE dataset is based on online comments, custom tokens have been created so that the model can learn correctly about new words(internet slang) that may not be familiar.&amp;nbsp;&lt;br /&gt;Integer encoding and padding are performed to convert text data into numbers, and padding is performed to match the input length equally.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;2450&quot; data-origin-height=&quot;1350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EzkkB/btsN1Y7TbmE/Iupblk2R3LCcriNCwE8PyK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EzkkB/btsN1Y7TbmE/Iupblk2R3LCcriNCwE8PyK/img.png&quot; data-alt=&quot;Encoding and Padding&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EzkkB/btsN1Y7TbmE/Iupblk2R3LCcriNCwE8PyK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEzkkB%2FbtsN1Y7TbmE%2FIupblk2R3LCcriNCwE8PyK%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;2450&quot; height=&quot;1350&quot; data-origin-width=&quot;2450&quot; data-origin-height=&quot;1350&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Encoding and Padding&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;Finally,&amp;nbsp;the&amp;nbsp;preprocessing&amp;nbsp;process&amp;nbsp;is&amp;nbsp;completed&amp;nbsp;when&amp;nbsp;the&amp;nbsp;data&amp;nbsp;to&amp;nbsp;be&amp;nbsp;used&amp;nbsp;for&amp;nbsp;model&amp;nbsp;training&amp;nbsp;is&amp;nbsp;converted&amp;nbsp;into&amp;nbsp;an&amp;nbsp;array&amp;nbsp;form&amp;nbsp;and&amp;nbsp;prepared.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;512&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/czg4lz/btsN1lbG5zU/Gh2iz74eGLoeXilpv3vmF0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/czg4lz/btsN1lbG5zU/Gh2iz74eGLoeXilpv3vmF0/img.png&quot; data-alt=&quot;Converting Numpy array&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/czg4lz/btsN1lbG5zU/Gh2iz74eGLoeXilpv3vmF0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fczg4lz%2FbtsN1lbG5zU%2FGh2iz74eGLoeXilpv3vmF0%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;1810&quot; height=&quot;512&quot; data-origin-width=&quot;1810&quot; data-origin-height=&quot;512&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Converting Numpy array&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot; data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #000000; text-align: start;&quot;&gt;errors (&lt;/span&gt;Difficulties faced while working on the project)&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;I&amp;nbsp;thought&amp;nbsp;about&amp;nbsp;how&amp;nbsp;to&amp;nbsp;deal&amp;nbsp;with&amp;nbsp;labels&amp;nbsp;if&amp;nbsp;multiple&amp;nbsp;emotions&amp;nbsp;appear&amp;nbsp;in&amp;nbsp;a&amp;nbsp;single&amp;nbsp;sentence.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;For&amp;nbsp;multiple&amp;nbsp;emotions&amp;nbsp;(label&amp;nbsp;strings)&amp;nbsp;in&amp;nbsp;the&amp;nbsp;KOTE&amp;nbsp;dataset,&amp;nbsp;I&amp;nbsp;selected&amp;nbsp;only&amp;nbsp;one&amp;nbsp;main&amp;nbsp;emotion&amp;nbsp;that&amp;nbsp;appeared&amp;nbsp;the&amp;nbsp;most&amp;nbsp;(based&amp;nbsp;on&amp;nbsp;FER2013)&amp;nbsp;and&amp;nbsp;converted&amp;nbsp;it&amp;nbsp;into&amp;nbsp;a&amp;nbsp;single&amp;nbsp;label.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;610&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cgGTNN/btsN2rV2Acj/JevP0ihC7xyzNdz90tDD1K/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cgGTNN/btsN2rV2Acj/JevP0ihC7xyzNdz90tDD1K/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cgGTNN/btsN2rV2Acj/JevP0ihC7xyzNdz90tDD1K/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcgGTNN%2FbtsN2rV2Acj%2FJevP0ihC7xyzNdz90tDD1K%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;1160&quot; height=&quot;610&quot; data-origin-width=&quot;1160&quot; data-origin-height=&quot;610&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;Due to the version compatibility of Mecab and tensorflow and errors in the keras and macOS environments, it was very difficult to import Mecab.&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;The default path was not recognized, which caused a loading failure. To resolve this, the environment variable MECABRC was manually set, and the dicpath was explicitly specified when initializing the Mecab instance.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;462&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ZxCtW/btsN1Pi2jbQ/W2yzNJKu40SL9moagw4Ltk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ZxCtW/btsN1Pi2jbQ/W2yzNJKu40SL9moagw4Ltk/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ZxCtW/btsN1Pi2jbQ/W2yzNJKu40SL9moagw4Ltk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FZxCtW%2FbtsN1Pi2jbQ%2FW2yzNJKu40SL9moagw4Ltk%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;1816&quot; height=&quot;462&quot; data-origin-width=&quot;1816&quot; data-origin-height=&quot;462&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;&lt;span style=&quot;color: #0e0e0e; text-align: start;&quot;&gt;In addition, the proportion of OOV (Out-of-Vocabulary) tokens in the dataset was relatively high, introducing noise that interfered with meaningful learning.&lt;/span&gt;&lt;/p&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;To address this issue, the previously limited MAX_VOCAB_SIZE was adjusted based on the number of words learned by the Tokenizer (word_index).&lt;/blockquote&gt;
&lt;blockquote data-ke-style=&quot;style2&quot;&gt;This allowed for a broader vocabulary coverage and significantly reduced the OOV rate.&lt;/blockquote&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1824&quot; data-origin-height=&quot;1146&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bhvxvG/btsN2cSpYd7/8PbkkeF0IRODqN2R8qmMw0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bhvxvG/btsN2cSpYd7/8PbkkeF0IRODqN2R8qmMw0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bhvxvG/btsN2cSpYd7/8PbkkeF0IRODqN2R8qmMw0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbhvxvG%2FbtsN2cSpYd7%2F8PbkkeF0IRODqN2R8qmMw0%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;1824&quot; height=&quot;1146&quot; data-origin-width=&quot;1824&quot; data-origin-height=&quot;1146&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;h4 data-ke-size=&quot;size20&quot;&gt;Challenges and Insights in preprocessing experience&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Text data preprocessing is a crucial step for improving both model performance and learning efficiency.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;At first, I only had a basic understanding of preprocessing and thought it was important in theory &amp;mdash; but I didn&amp;rsquo;t truly grasp how critical it was in practice.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Because I proceeded with the complacent assumption that &amp;ldquo;this should be enough,&amp;rdquo; I didn&amp;rsquo;t realize the real impact of preprocessing until I reached the model evaluation and performance tuning stages.&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;I realized that the performance of a model can vary significantly depending on how well the data has been preprocessed. It&amp;rsquo;s important to thoroughly prepare the data in advance &amp;mdash; ensuring that it fits the model architecture and is free of noise.&lt;/p&gt;
&lt;p 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;</description>
      <category>Multimodal Chatbot Project : ESA/development process</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/14</guid>
      <comments>https://taeyang4208.tistory.com/14#entry14comment</comments>
      <pubDate>Sun, 18 May 2025 21:33:12 +0900</pubDate>
    </item>
    <item>
      <title>Modifying DataFrames</title>
      <link>https://taeyang4208.tistory.com/13</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;In this article, we will discuss ways to modify data frames.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Adding columns to a DataFrame&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;We might want to add new information or perform a calculation based on the data that we already have.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;We &lt;/span&gt;want to add a column to an existing DataFrame.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Suppose we own a hardware store called The Handy Woman and have a DataFrame containing inventory information:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RNYBk/btsMWEhvpO1/Ir141nCUnVJmlmav3cGpjK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RNYBk/btsMWEhvpO1/Ir141nCUnVJmlmav3cGpjK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RNYBk/btsMWEhvpO1/Ir141nCUnVJmlmav3cGpjK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRNYBk%2FbtsMWEhvpO1%2FIr141nCUnVJmlmav3cGpjK%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;1012&quot; height=&quot;306&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;One way that we can add a new column is by giving a list of the same length as the existing DataFrame.&lt;/p&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;64&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uYds9/btsMWjScv37/uDBHr2q0O9mnKPyACHG1JK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uYds9/btsMWjScv37/uDBHr2q0O9mnKPyACHG1JK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uYds9/btsMWjScv37/uDBHr2q0O9mnKPyACHG1JK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuYds9%2FbtsMWjScv37%2FuDBHr2q0O9mnKPyACHG1JK%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;568&quot; height=&quot;64&quot; data-origin-width=&quot;568&quot; data-origin-height=&quot;64&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/E3fuJ/btsMVa2YVbt/y7MSYvqrUT9iVPJGUUcu4k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/E3fuJ/btsMVa2YVbt/y7MSYvqrUT9iVPJGUUcu4k/img.png&quot; data-alt=&quot;Add a Quantity column&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/E3fuJ/btsMVa2YVbt/y7MSYvqrUT9iVPJGUUcu4k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FE3fuJ%2FbtsMVa2YVbt%2Fy7MSYvqrUT9iVPJGUUcu4k%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;1014&quot; height=&quot;332&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;332&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Add a Quantity column&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;We can also add a new column that is the same for all rows in the DataFrame.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bt45oH/btsMWIxlW0H/jRV1ski9A6Fb5osTh11zv0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bt45oH/btsMWIxlW0H/jRV1ski9A6Fb5osTh11zv0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bt45oH/btsMWIxlW0H/jRV1ski9A6Fb5osTh11zv0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbt45oH%2FbtsMWIxlW0H%2FjRV1ski9A6Fb5osTh11zv0%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;372&quot; height=&quot;60&quot; data-origin-width=&quot;372&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;328&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bzqJDr/btsMVTzqFlC/JJcECIYMbyVAJ0kKnisF3k/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bzqJDr/btsMVTzqFlC/JJcECIYMbyVAJ0kKnisF3k/img.png&quot; data-alt=&quot;Add a In Stock? column&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bzqJDr/btsMVTzqFlC/JJcECIYMbyVAJ0kKnisF3k/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbzqJDr%2FbtsMVTzqFlC%2FJJcECIYMbyVAJ0kKnisF3k%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;1012&quot; height=&quot;328&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;328&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Add a In Stock? column&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Finally, we &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;can add a new column by performing a function on the existing columns.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/oWUUP/btsMUNz9Pvz/Kq5KGE6ZZJOVDoPnnmNgbK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/oWUUP/btsMUNz9Pvz/Kq5KGE6ZZJOVDoPnnmNgbK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/oWUUP/btsMUNz9Pvz/Kq5KGE6ZZJOVDoPnnmNgbK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FoWUUP%2FbtsMUNz9Pvz%2FKq5KGE6ZZJOVDoPnnmNgbK%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;558&quot; height=&quot;60&quot; data-origin-width=&quot;558&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;326&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ANADF/btsMUPdIcUV/FLpMlNvP26k23oKvUfJQpk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ANADF/btsMUPdIcUV/FLpMlNvP26k23oKvUfJQpk/img.png&quot; data-alt=&quot;Add a Sales Tax&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ANADF/btsMUPdIcUV/FLpMlNvP26k23oKvUfJQpk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FANADF%2FbtsMUPdIcUV%2FFLpMlNvP26k23oKvUfJQpk%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;1010&quot; height=&quot;326&quot; data-origin-width=&quot;1010&quot; data-origin-height=&quot;326&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Add a Sales Tax&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Often, the column that we want to add is related to existing columns.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;We can use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;apply&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;function to apply a function to every value in a particular column.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;For example, this code overwrites the existing&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;'Name'&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;columns by applying the function&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;upper&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to every row in&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;'Name':&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;df['Name']&amp;nbsp;=&amp;nbsp;df.Name&lt;b&gt;.apply&lt;/b&gt;(str.upper)&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; 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;1014&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/uKqGZ/btsMUnBFDoL/Xr5XxvKW4ZOg2oLENpKiZ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/uKqGZ/btsMUnBFDoL/Xr5XxvKW4ZOg2oLENpKiZ1/img.png&quot; data-alt=&quot;before&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/uKqGZ/btsMUnBFDoL/Xr5XxvKW4ZOg2oLENpKiZ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FuKqGZ%2FbtsMUnBFDoL%2FXr5XxvKW4ZOg2oLENpKiZ1%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;1014&quot; height=&quot;244&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;before&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/Ot379/btsMVtVt31K/5kGxDDyWJwsEiQXzEokqE0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/Ot379/btsMVtVt31K/5kGxDDyWJwsEiQXzEokqE0/img.png&quot; data-alt=&quot;after&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/Ot379/btsMVtVt31K/5kGxDDyWJwsEiQXzEokqE0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOt379%2FbtsMVtVt31K%2F5kGxDDyWJwsEiQXzEokqE0%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;1012&quot; height=&quot;246&quot; data-origin-width=&quot;1012&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;after&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;In Pandas, we often use lambda functions to perform complex operations on columns.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;158&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/btN81D/btsMVV4ZnxZ/3FA7WPkGRUG24DXbwcSUmK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/btN81D/btsMVV4ZnxZ/3FA7WPkGRUG24DXbwcSUmK/img.png&quot; data-alt=&quot;Using lambda to apply split method&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/btN81D/btsMVV4ZnxZ/3FA7WPkGRUG24DXbwcSUmK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbtN81D%2FbtsMVV4ZnxZ%2F3FA7WPkGRUG24DXbwcSUmK%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;618&quot; height=&quot;158&quot; data-origin-width=&quot;618&quot; data-origin-height=&quot;158&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Using lambda to apply split method&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/naPgO/btsMUZgfaO9/6YkNL3pQdYv4GGRlbF42u1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/naPgO/btsMUZgfaO9/6YkNL3pQdYv4GGRlbF42u1/img.png&quot; data-alt=&quot;Add a Email Provider column&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/naPgO/btsMUZgfaO9/6YkNL3pQdYv4GGRlbF42u1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnaPgO%2FbtsMUZgfaO9%2F6YkNL3pQdYv4GGRlbF42u1%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;1014&quot; height=&quot;246&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Add a Email Provider column&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;We can also operate on multiple columns at once.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;If we use&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;apply&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;without specifying a single column and add the argument&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;axis=1&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;, the input to our lambda function will be an entire row, not a column. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;To access particular values of the row, we use the syntax&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;row.column_name&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;or&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;row[&amp;lsquo;column_name&amp;rsquo;]&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Suppose we have a table representing a grocery list:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;306&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bXuyhR/btsMUz29py7/KyBFYiF8OJq67TuYgARmMK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bXuyhR/btsMUz29py7/KyBFYiF8OJq67TuYgARmMK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bXuyhR/btsMUz29py7/KyBFYiF8OJq67TuYgARmMK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbXuyhR%2FbtsMUz29py7%2FKyBFYiF8OJq67TuYgARmMK%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;1014&quot; height=&quot;306&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;306&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;If we want to add in the price with tax for each line, we&amp;rsquo;ll need to look at two columns:&lt;span&gt;&amp;nbsp;&lt;/span&gt;Price&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;Is taxed?.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;If&lt;span&gt;&amp;nbsp;&lt;/span&gt;Is taxed?&lt;span&gt;&amp;nbsp;&lt;/span&gt;is&lt;span&gt;&amp;nbsp;&lt;/span&gt;Yes, then we&amp;rsquo;ll want to multiply&lt;span&gt;&amp;nbsp;&lt;/span&gt;Price&lt;span&gt;&amp;nbsp;&lt;/span&gt;by 1.075 (for 7.5% sales tax).&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;If&lt;span&gt;&amp;nbsp;&lt;/span&gt;Is taxed?&lt;span&gt;&amp;nbsp;&lt;/span&gt;is&lt;span&gt;&amp;nbsp;&lt;/span&gt;No, we&amp;rsquo;ll just have&lt;span&gt;&amp;nbsp;&lt;/span&gt;Price&lt;span&gt;&amp;nbsp;&lt;/span&gt;without multiplying it.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;280&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/5TvKI/btsMUXJx0rO/v0IuI8EmcfgKSnxbrzMTtk/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/5TvKI/btsMUXJx0rO/v0IuI8EmcfgKSnxbrzMTtk/img.png&quot; data-alt=&quot;To access multiple columns using lambda&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/5TvKI/btsMUXJx0rO/v0IuI8EmcfgKSnxbrzMTtk/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F5TvKI%2FbtsMUXJx0rO%2Fv0IuI8EmcfgKSnxbrzMTtk%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;680&quot; height=&quot;275&quot; data-origin-width=&quot;692&quot; data-origin-height=&quot;280&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;To access multiple columns using lambda&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&amp;nbsp;&lt;/h4&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;Renaming columns&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;When we get our data from other sources, we often want to change the column names.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;We can change all of the column names at once by setting the&lt;span&gt;&lt;b&gt; .columns&lt;/b&gt; property to a different list.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b0ezl1/btsMWCKKhcZ/WbU3IAQqFuMcnIxvadRWo0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b0ezl1/btsMWCKKhcZ/WbU3IAQqFuMcnIxvadRWo0/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b0ezl1/btsMWCKKhcZ/WbU3IAQqFuMcnIxvadRWo0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb0ezl1%2FbtsMWCKKhcZ%2FWbU3IAQqFuMcnIxvadRWo0%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;683&quot; height=&quot;236&quot; data-origin-width=&quot;712&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;This command edits the existing DataFrame df.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;You also can rename individual columns by using the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;.rename&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;method.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;366&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/dzd4Wb/btsMVVjGevV/CSKOeCcg7ZgQo4O32rdKS1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/dzd4Wb/btsMVVjGevV/CSKOeCcg7ZgQo4O32rdKS1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/dzd4Wb/btsMVVjGevV/CSKOeCcg7ZgQo4O32rdKS1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fdzd4Wb%2FbtsMVVjGevV%2FCSKOeCcg7ZgQo4O32rdKS1%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;685&quot; height=&quot;351&quot; data-origin-width=&quot;714&quot; data-origin-height=&quot;366&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;The code above will rename&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;name&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;First Name&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;and&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;age&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;Age&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;rename&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;with only the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;columns&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;keyword will create a&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;new&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt; DataFrame&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;, leaving your original DataFrame unchanged. That&amp;rsquo;s why we also passed in the keyword argument&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;inplace=True&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;. &lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;inplace=True&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;lets us edit the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;original&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;DataFrame.&lt;/span&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;There are several reasons why&lt;b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;.rename&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is preferable to&lt;b&gt;&lt;span&gt; .columns&lt;/span&gt;&lt;/b&gt;:&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;You can rename just one column&lt;/li&gt;
&lt;li&gt;You can be specific about which column names are getting changed (with&lt;span&gt;&amp;nbsp;&lt;/span&gt;.column&lt;span&gt;&amp;nbsp;&lt;/span&gt;you can accidentally switch column names if you&amp;rsquo;re not careful)&lt;/li&gt;
&lt;/ul&gt;</description>
      <category>AI/ML</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/13</guid>
      <comments>https://taeyang4208.tistory.com/13#entry13comment</comments>
      <pubDate>Tue, 25 Mar 2025 14:59:17 +0900</pubDate>
    </item>
    <item>
      <title>Creating, Loading, and Selecting Data with Pandas</title>
      <link>https://taeyang4208.tistory.com/12</link>
      <description>&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Introducing Pandas&lt;/b&gt;&amp;nbsp;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;Pandas is a tool for processing data, that is, a module for processing data by converting various types of data into data frames with rows and columns. For example, converting CSV files or SQL databases into tables.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;Converted data frames are organized like tables or spreadsheets. Both rows and columns have indexes, and we can perform tasks individually on rows or columns.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;Pandas has the advantage of being able to easily change and manipulate data, which has useful functions for processing missing data, performing tasks on columns and rows, and converting data.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Creating Data with Pandas&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;In ord&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;er to get access to the Pandas module, we&amp;rsquo;ll need to install the module and then import it into a Python file.&lt;/span&gt;&lt;/p&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;368&quot; data-origin-height=&quot;82&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c2EUxH/btsMRoTj7i1/nFs1aY5o61N39UZ5NqgMJ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c2EUxH/btsMRoTj7i1/nFs1aY5o61N39UZ5NqgMJ1/img.png&quot; data-alt=&quot;import pandas as pd&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c2EUxH/btsMRoTj7i1/nFs1aY5o61N39UZ5NqgMJ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc2EUxH%2FbtsMRoTj7i1%2FnFs1aY5o61N39UZ5NqgMJ1%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;368&quot; height=&quot;82&quot; data-origin-width=&quot;368&quot; data-origin-height=&quot;82&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;import pandas as pd&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;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;After importing Pandas under the name pd easily, what we will do is to turn the data into a data frame format.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;DataFrames have rows and columns. &lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Each column has a name, which is a string. Each row has an index, which is an integer. &lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;DataFrames can contain many different data types: strings, ints, floats, tuples, etc.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;You can pass in a dictionary to&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;pd.DataFrame()&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;.&lt;/span&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;236&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/JdCwQ/btsMRuy5M6S/D7Gkw41qjOJRaqhDzJqLQ1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/JdCwQ/btsMRuy5M6S/D7Gkw41qjOJRaqhDzJqLQ1/img.png&quot; data-alt=&quot;pd.DataFrame()&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/JdCwQ/btsMRuy5M6S/D7Gkw41qjOJRaqhDzJqLQ1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FJdCwQ%2FbtsMRuy5M6S%2FD7Gkw41qjOJRaqhDzJqLQ1%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;1064&quot; height=&quot;236&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;236&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;pd.DataFrame()&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Each key is a column name and each value is a list of column values. The columns must all be the same length or we will get an error.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;The above command is an example of creating a data frame, and the resulting df1 is as follows.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vgG7k/btsMRxP8ErH/tm5kAYVJ7vVSnOEyKKyi60/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vgG7k/btsMRxP8ErH/tm5kAYVJ7vVSnOEyKKyi60/img.png&quot; data-alt=&quot;df1&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vgG7k/btsMRxP8ErH/tm5kAYVJ7vVSnOEyKKyi60/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvgG7k%2FbtsMRxP8ErH%2Ftm5kAYVJ7vVSnOEyKKyi60%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;1014&quot; height=&quot;244&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;df1&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;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;Alternatively, there is a method of making columns separately as follows without using a dictionary.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;332&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/MVWaa/btsMQa2U5ts/XKcJ6gEdAkgoOd8Pc62xF1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/MVWaa/btsMQa2U5ts/XKcJ6gEdAkgoOd8Pc62xF1/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/MVWaa/btsMQa2U5ts/XKcJ6gEdAkgoOd8Pc62xF1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FMVWaa%2FbtsMQa2U5ts%2FXKcJ6gEdAkgoOd8Pc62xF1%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;332&quot; data-origin-width=&quot;704&quot; data-origin-height=&quot;332&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;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;Now we know how to make a data frame.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;In this way, we can create our own data frames, but in most cases we will work with large datasets that already exist.&lt;/span&gt;&lt;br /&gt;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;One of the most common forms is the Common Seperated Values (CSV).&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Loading Data with Pandas&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSV (comma separated values)&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is a text-only spreadsheet format.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;The first row of a CSV contains column headings. All subsequent rows contain values. Each column heading and each variable is separated by a comma:&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bcsgYT/btsMRkKja2T/hpNqcaeqYKdy9ZVUzQkSik/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bcsgYT/btsMRkKja2T/hpNqcaeqYKdy9ZVUzQkSik/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bcsgYT/btsMRkKja2T/hpNqcaeqYKdy9ZVUzQkSik/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbcsgYT%2FbtsMRkKja2T%2FhpNqcaeqYKdy9ZVUzQkSik%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;440&quot; height=&quot;188&quot; data-origin-width=&quot;440&quot; data-origin-height=&quot;188&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;When we have data in a CSV, you can load it into a Dataframe in Pandas using .read_csv():&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;76&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpAaaa/btsMPLJrsvo/u5wpcw85N9Fxbm3CAWO2IK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpAaaa/btsMPLJrsvo/u5wpcw85N9Fxbm3CAWO2IK/img.png&quot; data-alt=&quot;read_csv()&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpAaaa/btsMPLJrsvo/u5wpcw85N9Fxbm3CAWO2IK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpAaaa%2FbtsMPLJrsvo%2Fu5wpcw85N9Fxbm3CAWO2IK%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;510&quot; height=&quot;76&quot; data-origin-width=&quot;510&quot; data-origin-height=&quot;76&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;read_csv()&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;In the example above, the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;.read_csv()&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;method is called. The CSV file called&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;my-csv-file&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is passed in as an argument.&lt;/span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;We can also save data to a CSV, using&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;.to_csv():&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;484&quot; data-origin-height=&quot;60&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYaHgP/btsMPPSqUHJ/H4NlCvy4svs4m8zi7ctCy1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYaHgP/btsMPPSqUHJ/H4NlCvy4svs4m8zi7ctCy1/img.png&quot; data-alt=&quot;to_csv()&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYaHgP/btsMPPSqUHJ/H4NlCvy4svs4m8zi7ctCy1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYaHgP%2FbtsMPPSqUHJ%2FH4NlCvy4svs4m8zi7ctCy1%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;484&quot; height=&quot;60&quot; data-origin-width=&quot;484&quot; data-origin-height=&quot;60&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;to_csv()&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;when we load a new DataFrame from a &lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;CSV, we want to know what it looks like.&lt;/span&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;If it&amp;rsquo;s a small DataFrame, you can display it by typing&lt;span&gt;&amp;nbsp;&lt;/span&gt;print(df).&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;If it&amp;rsquo;s a larger DataFrame, it&amp;rsquo;s helpful to be able to inspect a few items without having to look at the entire DataFrame.&lt;/p&gt;
&lt;p style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;The method&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;.head()&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;gives the first 5 rows of a DataFrame. If you want to see more rows, you can pass in the positional argument&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;n&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;The method&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;df.info()&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;gives some statistics for each column.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;Selecting Data with Pandas&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Now we know how to create and load data.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Let&amp;rsquo;s select parts of those datasets that are interesting or important to our analyses.&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;Suppose we have the DataFrame called&lt;span&gt;&amp;nbsp;&lt;/span&gt;customers, which contains the ages of your customers:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;304&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/qF0Nk/btsMPyi61ly/3xfC5A2DIkvS563crQ4DP1/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/qF0Nk/btsMPyi61ly/3xfC5A2DIkvS563crQ4DP1/img.png&quot; data-alt=&quot;DataFrame Customers&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/qF0Nk/btsMPyi61ly/3xfC5A2DIkvS563crQ4DP1/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FqF0Nk%2FbtsMPyi61ly%2F3xfC5A2DIkvS563crQ4DP1%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;1016&quot; height=&quot;304&quot; data-origin-width=&quot;1016&quot; data-origin-height=&quot;304&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;DataFrame Customers&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;There are two possible syntaxes for selecting all values from a column:&lt;/span&gt;&lt;/p&gt;
&lt;ol style=&quot;list-style-type: decimal; background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-list-type=&quot;decimal&quot;&gt;
&lt;li&gt;Select the column as if we were selecting a value from a dictionary using a key. In our example, we would type&lt;span&gt;&amp;nbsp;&lt;/span&gt;customers['age']&lt;span&gt;&amp;nbsp;&lt;/span&gt;to select the ages.&lt;/li&gt;
&lt;li&gt;If the name of a column follows all of the rules for a variable name (doesn&amp;rsquo;t start with a number, doesn&amp;rsquo;t contain spaces or special characters, etc.), then we can select it using the following notation:&lt;span&gt;&amp;nbsp;&lt;/span&gt;df.MySecondColumn. In our example, we would type&lt;span&gt;&amp;nbsp;&lt;/span&gt;customers.age.&lt;/li&gt;
&lt;/ol&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;When we have a larger DataFrame, we might want to select just a few columns.&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;To select two or more columns from a DataFrame, we use a list of the column names.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&amp;nbsp;new_df = orders[['instance_one', 'instance_two']]&lt;/span&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;&lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;If you want to select a particular row rather than a column, use the &lt;b&gt;iloc[]&lt;/b&gt; method.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;orders.iloc[2] : &lt;span style=&quot;background-color: #ffffff; color: #444447; text-align: start;&quot;&gt;It refers to the third row of the order data frame.&lt;/span&gt;&lt;/span&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;we can also select multiple rows from a DataFrame.&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;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Here are some different ways of selecting multiple rows:&lt;/span&gt;&lt;/p&gt;
&lt;ul style=&quot;list-style-type: disc; background-color: #ffffff; color: #10162f; text-align: left;&quot; data-ke-list-type=&quot;disc&quot;&gt;
&lt;li&gt;orders.iloc[3:7]&lt;span&gt;&amp;nbsp;&lt;/span&gt;would select all rows starting at the 3rd row and up to but&lt;span&gt;&amp;nbsp;&lt;/span&gt;not including&lt;span&gt;&amp;nbsp;&lt;/span&gt;the 7th row (i.e., the 3rd row, 4th row, 5th row, and 6th row)&lt;/li&gt;
&lt;li&gt;orders.iloc[:4]&lt;span&gt;&amp;nbsp;&lt;/span&gt;would select all rows up to, but&lt;span&gt;&amp;nbsp;&lt;/span&gt;not including&lt;span&gt;&amp;nbsp;&lt;/span&gt;the 4th row (i.e., the 0th, 1st, 2nd, and 3rd rows)&lt;/li&gt;
&lt;li&gt;orders.iloc[-3:]&lt;span&gt;&amp;nbsp;&lt;/span&gt;would select the rows starting at the 3rd to last row and up to and&lt;span&gt;&amp;nbsp;&lt;/span&gt;including&lt;span&gt;&amp;nbsp;&lt;/span&gt;the final row&lt;/li&gt;
&lt;/ul&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;You can select a subset of a DataFrame by using &lt;b&gt;logical statements&lt;/b&gt;:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;df[df.MyColumnName == desired_column_value]&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Suppose we want to select all rows where the customer&amp;rsquo;s age is 30. We would use:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;df[df.name == 30]&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;We can also use other logical statements in the same way and &lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;combine multiple logical statements, as long as each statement is in parentheses.&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;For instance, suppose we wanted to select all rows where the customer&amp;rsquo;s age was under 30&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;or&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;the customer&amp;rsquo;s name was &amp;ldquo;Martha Jones&amp;rdquo;:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;df[(df.age &amp;lt; 30) | df.name == 'Martha Jones')]&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;Suppose we want to select the rows where the customer&amp;rsquo;s name is either &amp;ldquo;Martha Jones&amp;rdquo;, &amp;ldquo;Rose Tyler&amp;rdquo; or &amp;ldquo;Amy Pond&amp;rdquo;.&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;We can use the&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;b&gt;isin&lt;/b&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;command to check that&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;df.name&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;is one of a list of values:&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;df[df.name.isin(['Martha Jones', 'Rose Tyler', 'Amy Pond'])]&lt;br /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&lt;span style=&quot;background-color: #ffffff; color: #10162f; text-align: left;&quot;&gt;When we select a subset of a DataFrame using logic, we end up with non-consecutive indices.&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;This makes it hard to use&lt;span&gt;&amp;nbsp;&lt;/span&gt;.iloc().&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;We can fix this using the method&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;.reset_index()&lt;/b&gt;. For example, here is a DataFrame called&lt;span&gt;&amp;nbsp;&lt;/span&gt;df&lt;span&gt;&amp;nbsp;&lt;/span&gt;with non-consecutive indices:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zbqPN/btsMQEWNGwf/U5wllzvmxIkWbJTvidKEoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zbqPN/btsMQEWNGwf/U5wllzvmxIkWbJTvidKEoK/img.png&quot; data-alt=&quot;Before using .reset_index()&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zbqPN/btsMQEWNGwf/U5wllzvmxIkWbJTvidKEoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzbqPN%2FbtsMQEWNGwf%2FU5wllzvmxIkWbJTvidKEoK%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;1014&quot; height=&quot;244&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;Before using .reset_index()&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;If we use the command&lt;span&gt;&amp;nbsp;&lt;/span&gt;df.reset_index(), we get a new DataFrame with a new set of indices:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;246&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c9Wxe4/btsMQFg8pd7/CfHgKS6ip3BEMJBjNTntsK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c9Wxe4/btsMQFg8pd7/CfHgKS6ip3BEMJBjNTntsK/img.png&quot; data-alt=&quot;After using .reset_index()&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c9Wxe4/btsMQFg8pd7/CfHgKS6ip3BEMJBjNTntsK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc9Wxe4%2FbtsMQFg8pd7%2FCfHgKS6ip3BEMJBjNTntsK%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;1014&quot; height=&quot;246&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;246&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;After using .reset_index()&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Note that the old indices have been moved into a new column called&lt;span&gt;&amp;nbsp;&lt;/span&gt;'index'. Unless you need those values for something special, it&amp;rsquo;s probably better to use the keyword&lt;span&gt;&amp;nbsp;&lt;/span&gt;drop=True&lt;span&gt;&amp;nbsp;&lt;/span&gt;so that you don&amp;rsquo;t end up with that extra column. If we run the command&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;df.reset_index(drop=True)&lt;/b&gt;, we get a new DataFrame that looks like this:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;244&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCR5q8/btsMQcmbztf/921QCFpUQuy8dzGpI1f2t0/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCR5q8/btsMQcmbztf/921QCFpUQuy8dzGpI1f2t0/img.png&quot; data-alt=&quot;reset_index(drop=True)&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCR5q8/btsMQcmbztf/921QCFpUQuy8dzGpI1f2t0/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCR5q8%2FbtsMQcmbztf%2F921QCFpUQuy8dzGpI1f2t0%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;1014&quot; height=&quot;244&quot; data-origin-width=&quot;1014&quot; data-origin-height=&quot;244&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;reset_index(drop=True)&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;Using&lt;span&gt;&amp;nbsp;&lt;/span&gt;.reset_index()&lt;span&gt;&amp;nbsp;&lt;/span&gt;will return a new DataFrame, but we usually just want to modify our existing DataFrame. If we use the &lt;b&gt;keyword&lt;span&gt;&amp;nbsp;&lt;/span&gt;inplace=True&lt;/b&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;we can just modify our existing DataFrame.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: center;&quot; data-ke-size=&quot;size16&quot;&gt;df.reset_index(drop=True,&amp;nbsp;inplace=True)&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;It helps voiding the creation of a new DataFrame and thus improbing memory efficiency.&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p style=&quot;text-align: left;&quot; data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>AI/ML</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/12</guid>
      <comments>https://taeyang4208.tistory.com/12#entry12comment</comments>
      <pubDate>Thu, 20 Mar 2025 14:48:53 +0900</pubDate>
    </item>
    <item>
      <title>Improving text recognition model Accuracy</title>
      <link>https://taeyang4208.tistory.com/11</link>
      <description>&lt;p&gt;&lt;span style=&quot;&quot;&gt;Before evaluating the performance with the test dataset, we first judged whether the model was overfitting through two training sessions.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;When trained with training and validation datasets in the first model, &lt;/span&gt;&lt;span style=&quot;&quot;&gt;Performance of Accuracy = 0.8257 and val_accuracy = 0.5418.&amp;nbsp;&lt;/span&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&gt;&lt;span style=&quot;&quot;&gt;When trained with training and validation datasets in the second model,&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;&quot;&gt;The performance of Accuracy = 0.9244, val_accuracy = 0.3894 was shown.&lt;/span&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&gt;&lt;span style=&quot;&quot;&gt;As we learned more, the accuracy of the training set increased and the accuracy of the verification set decreased&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;&quot;&gt;This suggests that the model is &lt;b&gt;overfitting&lt;/b&gt; the training data.&amp;nbsp;&lt;/span&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&gt;&lt;span style=&quot;&quot;&gt;&lt;b&gt;Data preprocessing and hyperparameter tuning&lt;/b&gt; were modified to prevent overfitting of the model and increase the accuracy of the test set. &lt;/span&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&gt;&lt;span style=&quot;&quot;&gt;The learning rate and dropout figures were considered.&lt;/span&gt;&lt;span style=&quot;&quot;&gt;However, the epoch was set at the same time as 50, early stopping and call back.&amp;nbsp;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;&quot;&gt;1. Modifying the list of unused terminology&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;In the process of tokenizing text data, unnecessary words are removed through a list of terminology, allowing the model to infer emotions from the text more effectively.&lt;/span&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;&lt;span&gt;&lt;span&gt;&lt;span&gt;Before&lt;/span&gt;&lt;span&gt; editing&lt;/span&gt;: &lt;/span&gt;&lt;/span&gt;[&amp;lsquo;&lt;span&gt;은&lt;/span&gt;', '&lt;span&gt;는&lt;/span&gt;', '&lt;span&gt;이&lt;/span&gt;', '&lt;span&gt;가&lt;/span&gt;', '&lt;span&gt;을&lt;/span&gt;', '&lt;span&gt;를&lt;/span&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;&lt;span&gt;&lt;span&gt;&lt;span&gt;After&lt;/span&gt;&lt;span&gt; modification&lt;/span&gt;: &lt;/span&gt;&lt;/span&gt;[ &quot;&lt;span&gt;의&lt;/span&gt;&quot;, &quot;&lt;span&gt;가&lt;/span&gt;&quot;, &quot;&lt;span&gt;이&lt;/span&gt;&quot;, &quot;&lt;span&gt;은&lt;/span&gt;&quot;, &quot;&lt;span&gt;들&lt;/span&gt;&quot;, &quot;&lt;span&gt;는&lt;/span&gt;&quot;, &quot;&lt;span&gt;좀&lt;/span&gt;&quot;, &quot;&lt;span&gt;잘&lt;/span&gt;&quot;, &quot;&lt;span&gt;걍&lt;/span&gt;&quot;, &quot;&lt;span&gt;과&lt;/span&gt;&quot;, &quot;&lt;span&gt;도&lt;/span&gt;&quot;, &quot;&lt;span&gt;를&lt;/span&gt;&quot;, &quot;&lt;span&gt;으로&lt;/span&gt;&quot;, &quot;&lt;span&gt;자&lt;/span&gt;&quot;, &quot;&lt;span&gt;에&lt;/span&gt;&quot;, &quot;&lt;span&gt;와&lt;/span&gt;&quot;, &quot;&lt;span&gt;한&lt;/span&gt;&quot;, &quot;&lt;span&gt;하다&lt;/span&gt;&quot;, &quot;&lt;span&gt;에서&lt;/span&gt;&quot;, &quot;&lt;span&gt;까지&lt;/span&gt;&quot;, &quot;&lt;span&gt;부터&lt;/span&gt;&quot;, &quot;&lt;span&gt;마다&lt;/span&gt;&quot;, &quot;&lt;span&gt;보다&lt;/span&gt;&quot;, &quot;&lt;span&gt;더&lt;/span&gt;&quot;, &quot;&lt;span&gt;만&lt;/span&gt;&quot;, &quot;&lt;span&gt;요&lt;/span&gt;&quot;, &quot;&lt;span&gt;그리고&lt;/span&gt;&quot;, &quot;&lt;span&gt;그러나&lt;/span&gt;&quot;, &quot;&lt;span&gt;하지만&lt;/span&gt;&quot;, &quot;&lt;span&gt;또한&lt;/span&gt;&quot;, &quot;&lt;span&gt;때문에&lt;/span&gt;&quot;, &quot;&lt;span&gt;그래서&lt;/span&gt;&quot;, &quot;&lt;span&gt;무엇&lt;/span&gt;&quot;, &quot;&lt;span&gt;어디&lt;/span&gt;&quot;, &quot;&lt;span&gt;왜&lt;/span&gt;&quot;, &quot;&lt;span&gt;어떻게&lt;/span&gt;&quot;, &quot;&lt;span&gt;그래도&lt;/span&gt;&quot;, &quot;&lt;span&gt;그런데&lt;/span&gt;&quot;, &quot;&lt;span&gt;그러면&lt;/span&gt;&quot;, &quot;&lt;span&gt;하면&lt;/span&gt;&quot;, &quot;&lt;span&gt;이다&lt;/span&gt;&quot;, &quot;&lt;span&gt;이런&lt;/span&gt;&quot;, &quot;&lt;span&gt;저런&lt;/span&gt;&quot;, &quot;&lt;span&gt;뿐&lt;/span&gt;&quot;, &quot;&lt;span&gt;만큼&lt;/span&gt;&quot;, &quot;&lt;span&gt;정도&lt;/span&gt;&quot; ]&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;The terminology was mainly composed of investigations, connection words, and verbs that did not contain meaning in the word itself.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;Since the text recognition model is made possible to grasp the context of sentences using a hybrid model combining CNN and Bi-LSTM, conjunctions that can infer the context are excluded from the list.&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;As a result, the accuracy of the test set increased from 0.5670 (before modification) to 0.5907 (after modification).&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;&quot;&gt;2. Modify Dropout&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;Although the test set's accuracy rose to 0.5907 with a slight modification to the non-verbal list, we were still concerned about the possibility of overfitting considering that the training set is still high and the verification and test sets are low.&lt;/span&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;Therefore, the number and value of dropout layers were considered as a solution.&lt;/p&gt;
&lt;p style=&quot;color: #333333; text-align: start;&quot; data-ke-size=&quot;size16&quot;&gt;Among the number and figures of dropout layers, it was questioned which factors were more influential in preventing overfitting, and to find out, the degree of overfitting was determined by modifying the value of the dropout from 0.4 to 0.5 instead of reducing the dropout by one in the existing model.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;Before modificaton: 0.5907&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;After modification (down by 1 Dropout layer, up to 0.5 Dropout value): 0.6162&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;When comparing the pre-correction accuracy with the post-correction accuracy, &lt;/span&gt;&lt;span style=&quot;&quot;&gt;The accuracy of the training set decreased, the accuracy of the verification set increased, and the accuracy of the test set also increased.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;From this, it may vary depending on the situation of each model, but in the current model, it was found that the number of dropout layers has a greater impact on overfitting prevention.&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;span style=&quot;&quot;&gt;3. Modifying the Learning Rate&lt;/span&gt;&lt;span style=&quot;&quot;&gt;&lt;/span&gt;&lt;/h4&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;Existing Learning Rate : 0.0001&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;Test accuracy when learning rate is 0.0003: 0.6162 -&amp;gt; 0.6212&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;Test accuracy when learning rate is 0.0005: 0.6212 -&amp;gt; 0.6104&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;Test accuracy when learning rate is 0.001: 0.6104 -&amp;gt; 0.6152&lt;/span&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p&gt;&lt;span style=&quot;&quot;&gt;When the number increased from the existing learning rate of 0.0001 to 0.0003, the test accuracy increased&amp;nbsp;&lt;/span&gt;&lt;span style=&quot;&quot;&gt;After that, even if the learning rate increased, there was little difference in accuracy.&lt;/span&gt;&lt;span style=&quot;&quot;&gt;Through this, the model was trained assuming an optimal learning rate of 0.0003.&lt;/span&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&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1460&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b2ME1a/btsMOueUbXm/rO6fxeZnbWewGg9eAzcZoK/img.png&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b2ME1a/btsMOueUbXm/rO6fxeZnbWewGg9eAzcZoK/img.png&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b2ME1a/btsMOueUbXm/rO6fxeZnbWewGg9eAzcZoK/img.png&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb2ME1a%2FbtsMOueUbXm%2FrO6fxeZnbWewGg9eAzcZoK%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;1942&quot; height=&quot;1460&quot; data-origin-width=&quot;1942&quot; data-origin-height=&quot;1460&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Multimodal Chatbot Project : ESA/development process</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/11</guid>
      <comments>https://taeyang4208.tistory.com/11#entry11comment</comments>
      <pubDate>Tue, 18 Mar 2025 00:51:22 +0900</pubDate>
    </item>
    <item>
      <title>&amp;lt;Python&amp;gt;#8 : Python File Processing : 파일 읽기, 쓰기, 관리하기</title>
      <link>https://taeyang4208.tistory.com/8</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Python에서 &lt;b&gt;파일 처리&lt;/b&gt;는 데이터를 영구적으로 저장하고 읽어오는 데 필수적인 기능입니다. 이번 포스팅에서는 파일을 여는 방법부터 읽기, 쓰기, 닫기, 그리고 다양한 파일 형식(CSV, JSON) 처리까지 자세히 알아보겠습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 파일 열기와 닫기&amp;nbsp;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일을 사용하려면 먼저 &lt;b&gt;&lt;span&gt;open()&lt;/span&gt; 함수&lt;/b&gt;를 통해 열어야 합니다. 파일을 다 사용한 후에는 &lt;b&gt;&lt;span&gt;close()&lt;/span&gt; 메서드&lt;/b&gt;로 닫아주는 것이 좋습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/beGlLW/btsLDVl72WQ/pnOQgBd2bfURBkLM2HRpv1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/beGlLW/btsLDVl72WQ/pnOQgBd2bfURBkLM2HRpv1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/beGlLW/btsLDVl72WQ/pnOQgBd2bfURBkLM2HRpv1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbeGlLW%2FbtsLDVl72WQ%2FpnOQgBd2bfURBkLM2HRpv1%2Fimg.jpg&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;804&quot; height=&quot;202&quot; data-origin-width=&quot;1392&quot; data-origin-height=&quot;350&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;그러나 파일을 열고 닫는 과정에서 예외가 발생할 수 있으므로, &lt;b&gt;&lt;span&gt;with&lt;/span&gt; 문&lt;/b&gt;을 사용하면 자동으로 파일을 닫아주어 안전합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/EjrA8/btsLGauUdAF/COGwLO3faUgLI0UbN1KnHk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/EjrA8/btsLGauUdAF/COGwLO3faUgLI0UbN1KnHk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/EjrA8/btsLGauUdAF/COGwLO3faUgLI0UbN1KnHk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FEjrA8%2FbtsLGauUdAF%2FCOGwLO3faUgLI0UbN1KnHk%2Fimg.jpg&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;1312&quot; height=&quot;284&quot; data-origin-width=&quot;1312&quot; data-origin-height=&quot;284&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 파일 모드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;open()&lt;/span&gt; 함수는 두 번째 인자로 파일 모드를 받습니다. 주요 모드는 다음과 같습니다:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;&lt;span&gt;'r'&lt;/span&gt;&lt;/b&gt;: 읽기 모드 (파일이 존재해야 함)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;&lt;span&gt;'w'&lt;/span&gt;&lt;/b&gt;: 쓰기 모드 (파일이 없으면 생성, 있으면 내용 삭제)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;&lt;span&gt;'a'&lt;/span&gt;&lt;/b&gt;: 추가 모드 (파일이 없으면 생성, 있으면 내용 끝에 추가)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;&lt;span&gt;'b'&lt;/span&gt;&lt;/b&gt;: 바이너리 모드 (예: &lt;span&gt;'rb'&lt;/span&gt;, &lt;span&gt;'wb'&lt;/span&gt;)&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h4 data-ke-size=&quot;size20&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;bull;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;바이너리 모드&lt;/b&gt;&lt;/h4&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python에서 &lt;span&gt;open()&lt;/span&gt; 함수의 모드에 &lt;span&gt;'b'&lt;/span&gt;를 추가하면 파일이 &lt;b&gt;바이너리 모드&lt;/b&gt;로 열립니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;바이너리 모드는 데이터를 &lt;b&gt;바이트(byte)&lt;/b&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;&lt;b&gt;사용 이유&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;텍스트 파일이 아닌 &lt;b&gt;이미지, 오디오, 동영상, 실행 파일&lt;/b&gt; 등을 처리할 때.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;데이터의 원본 상태를 유지하며 읽고 써야 할 때.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;텍스트가 아닌 데이터는 일반적인 텍스트 모드(&lt;span&gt;'r'&lt;/span&gt;, &lt;span&gt;'w'&lt;/span&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;&lt;b&gt;바이너리 모드와 주요 파일 모드의 조합&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;298&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bCCCW8/btsLEN8VIan/kg9KpYboV4vG7cbf7FyRT1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bCCCW8/btsLEN8VIan/kg9KpYboV4vG7cbf7FyRT1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bCCCW8/btsLEN8VIan/kg9KpYboV4vG7cbf7FyRT1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbCCCW8%2FbtsLEN8VIan%2Fkg9KpYboV4vG7cbf7FyRT1%2Fimg.jpg&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;575&quot; height=&quot;260&quot; data-origin-width=&quot;660&quot; data-origin-height=&quot;298&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;size18&quot;&gt;&lt;b&gt;바이너리 모드 사용 시 주의사항&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;1.&lt;span&gt; &lt;/span&gt;&lt;b&gt;텍스트와 바이너리 데이터 구분&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;bull;&lt;span&gt; &lt;/span&gt;데이터가 바이트 객체(bytes)로 반환됩니다. 텍스트 데이터를 처리하려면 &lt;b&gt;디코딩(decode)&lt;/b&gt;이 필요합니 다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;216&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bQucJk/btsLFAA7tIS/uTh9cu27ZKdi7mffaXjw91/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bQucJk/btsLFAA7tIS/uTh9cu27ZKdi7mffaXjw91/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bQucJk/btsLFAA7tIS/uTh9cu27ZKdi7mffaXjw91/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbQucJk%2FbtsLFAA7tIS%2FuTh9cu27ZKdi7mffaXjw91%2Fimg.jpg&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;831&quot; height=&quot;145&quot; data-origin-width=&quot;1240&quot; data-origin-height=&quot;216&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;2.&lt;span&gt; &lt;/span&gt;&lt;b&gt;텍스트 모드와의 차이점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;bull;&lt;span&gt; &lt;/span&gt;텍스트 모드는 문자열(&lt;span&gt;str&lt;/span&gt;)로 데이터를 읽고 쓰며, 자동으로 인코딩/디코딩을 처리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;bull;&lt;span&gt; &lt;/span&gt;바이너리 모드는 바이트(&lt;span&gt;bytes&lt;/span&gt;) 단위로 데이터를 처리하며, 인코딩/디코딩을 하지 않습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.&lt;span&gt; &lt;/span&gt;&lt;b&gt;플랫폼 간 차이점&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;bull;&lt;span&gt; &lt;/span&gt;텍스트 모드에서는 파일의 개행 문자(&lt;span&gt;\n&lt;/span&gt;)가 운영 체제에 따라 변환됩니다. 바이너리 모드는 변환 없이 데이터를 그대로 처리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;4.&lt;span&gt; &lt;/span&gt;&lt;b&gt;파일 크기 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;/span&gt;&amp;nbsp; &amp;nbsp; &amp;bull;&lt;span&gt; &lt;/span&gt;바이너리 모드를 사용할 때는 파일 크기를 확인하거나 특정 바이트를 처리하는 데 유용합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k3l8T/btsLFdTHeRz/TUKDnI8F8PyaWvgyTSSX30/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k3l8T/btsLFdTHeRz/TUKDnI8F8PyaWvgyTSSX30/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k3l8T/btsLFdTHeRz/TUKDnI8F8PyaWvgyTSSX30/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk3l8T%2FbtsLFdTHeRz%2FTUKDnI8F8PyaWvgyTSSX30%2Fimg.jpg&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;833&quot; height=&quot;124&quot; data-origin-width=&quot;1294&quot; data-origin-height=&quot;192&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;size18&quot;&gt;&lt;b&gt;바이너리 모드가 사용되는 주요 사례&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;1.&lt;span&gt; &lt;/span&gt;&lt;b&gt;이미지 및 동영상 처리&lt;/b&gt;:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 바이너리 데이터를 읽고 써서 이미지 파일을 복사하거나 동영상 데이터를 처리.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;2.&lt;span&gt; &lt;/span&gt;&lt;b&gt;파일 전송 및 소켓 프로그래밍&lt;/b&gt;:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 네트워크 프로토콜에서 파일 데이터를 바이트 단위로 전송.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;3.&lt;span&gt; &lt;/span&gt;&lt;b&gt;파일 암호화 및 압축&lt;/b&gt;:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp; 데이터의 원본 상태를 유지하면서 암호화하거나 압축 작업 수행.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 파일 읽기 &lt;b&gt;: Reading a file&lt;/b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 전체 내용 읽기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;read()&lt;/span&gt; 메서드&lt;/b&gt;를 사용하여 파일의 전체 내용을 읽을 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/A8PLg/btsLFe54TXj/xSmRuIvbi1NkczYdKevPik/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/A8PLg/btsLFe54TXj/xSmRuIvbi1NkczYdKevPik/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/A8PLg/btsLFe54TXj/xSmRuIvbi1NkczYdKevPik/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FA8PLg%2FbtsLFe54TXj%2FxSmRuIvbi1NkczYdKevPik%2Fimg.jpg&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;1346&quot; height=&quot;224&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;224&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;&lt;b&gt;2) 한 줄씩 읽기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;readline()&lt;/span&gt; 메서드&lt;/b&gt;는 한 번 호출에 한 줄씩 읽어옵니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1414&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/kZgBJ/btsLGaPdL9Z/KLxImKO6vQNxZQ2yw8vC01/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/kZgBJ/btsLGaPdL9Z/KLxImKO6vQNxZQ2yw8vC01/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/kZgBJ/btsLGaPdL9Z/KLxImKO6vQNxZQ2yw8vC01/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FkZgBJ%2FbtsLGaPdL9Z%2FKLxImKO6vQNxZQ2yw8vC01%2Fimg.jpg&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;1414&quot; height=&quot;286&quot; data-origin-width=&quot;1414&quot; data-origin-height=&quot;286&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;&lt;b&gt;3) 모든 줄을 리스트로 읽기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;readlines()&lt;/span&gt; 메서드&lt;/b&gt;는 파일의 모든 줄을 리스트로 반환합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;248&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cPoYPR/btsLFZtCyZ7/hIEWvPLUNSxAerkmoO5trk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cPoYPR/btsLFZtCyZ7/hIEWvPLUNSxAerkmoO5trk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cPoYPR/btsLFZtCyZ7/hIEWvPLUNSxAerkmoO5trk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcPoYPR%2FbtsLFZtCyZ7%2FhIEWvPLUNSxAerkmoO5trk%2Fimg.jpg&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;1322&quot; height=&quot;248&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;248&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 파일 쓰기 : Writing a file&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 새 파일에 쓰기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;쓰기 모드 &lt;b&gt;&lt;span&gt;'w'&lt;/span&gt;&lt;/b&gt;를 사용하면 파일에 데이터를 쓸 수 있습니다. 파일이 이미 존재하면 기존 내용을 삭제하고 새로 작성합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1390&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bYN0n5/btsLFwyHhpT/dJKaNr9bENboEIzJvw4g61/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bYN0n5/btsLFwyHhpT/dJKaNr9bENboEIzJvw4g61/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bYN0n5/btsLFwyHhpT/dJKaNr9bENboEIzJvw4g61/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbYN0n5%2FbtsLFwyHhpT%2FdJKaNr9bENboEIzJvw4g61%2Fimg.jpg&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;1390&quot; height=&quot;222&quot; data-origin-width=&quot;1390&quot; data-origin-height=&quot;222&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;&lt;b&gt;2) 파일에 내용 추가하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;추가 모드 &lt;b&gt;&lt;span&gt;'a'&lt;/span&gt;&lt;/b&gt;를 사용하면 기존 내용에 새로운 내용을 덧붙일 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;194&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/B7PcX/btsLEf5LaVK/pQ3XycXoKeaBQHh63W4UA0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/B7PcX/btsLEf5LaVK/pQ3XycXoKeaBQHh63W4UA0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/B7PcX/btsLEf5LaVK/pQ3XycXoKeaBQHh63W4UA0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FB7PcX%2FbtsLEf5LaVK%2FpQ3XycXoKeaBQHh63W4UA0%2Fimg.jpg&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;1358&quot; height=&quot;194&quot; data-origin-width=&quot;1358&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 파일 위치 제어&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;파일 객체는 현재 읽기/쓰기 위치를 기억합니다. &lt;b&gt;&lt;span&gt;tell()&lt;/span&gt; 메서드&lt;/b&gt;로 현재 위치를 확인하고, &lt;b&gt;&lt;span&gt;seek()&lt;/span&gt; 메서드&lt;/b&gt;로 위치를 변경할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1388&quot; data-origin-height=&quot;260&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bnoUG7/btsLEbCjHyV/LtEFZqTwkX7pdjYKop7GB0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bnoUG7/btsLEbCjHyV/LtEFZqTwkX7pdjYKop7GB0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bnoUG7/btsLEbCjHyV/LtEFZqTwkX7pdjYKop7GB0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbnoUG7%2FbtsLEbCjHyV%2FLtEFZqTwkX7pdjYKop7GB0%2Fimg.jpg&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;1388&quot; height=&quot;260&quot; data-origin-width=&quot;1388&quot; data-origin-height=&quot;260&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 다양한 파일 형식 다루기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) CSV 파일&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;CSV(Comma-Separated Values) 파일은 데이터 저장에 널리 사용됩니다. Python의 &lt;b&gt;&lt;span&gt;csv&lt;/span&gt; 모듈&lt;/b&gt;을 사용하여 CSV 파일을 읽고 쓸 수 있&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;1402&quot; data-origin-height=&quot;546&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/RrfuI/btsLEb3lYze/wzBo5BTeZX5sd6K6k8PwG1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/RrfuI/btsLEb3lYze/wzBo5BTeZX5sd6K6k8PwG1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/RrfuI/btsLEb3lYze/wzBo5BTeZX5sd6K6k8PwG1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FRrfuI%2FbtsLEb3lYze%2FwzBo5BTeZX5sd6K6k8PwG1%2Fimg.jpg&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;1402&quot; height=&quot;546&quot; data-origin-width=&quot;1402&quot; data-origin-height=&quot;546&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;&lt;b&gt;2) JSON 파일&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;JSON(JavaScript Object Notation) 파일은 데이터 교환에 자주 사용됩니다. Python의 &lt;b&gt;&lt;span&gt;json&lt;/span&gt; 모듈&lt;/b&gt;을 사용하여 JSON 데이터를 파싱하고 생성할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;444&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/KfE6O/btsLENupQfA/gIVXgeU0w0Oe0CJmCNlEV0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/KfE6O/btsLENupQfA/gIVXgeU0w0Oe0CJmCNlEV0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/KfE6O/btsLENupQfA/gIVXgeU0w0Oe0CJmCNlEV0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FKfE6O%2FbtsLENupQfA%2FgIVXgeU0w0Oe0CJmCNlEV0%2Fimg.jpg&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;1448&quot; height=&quot;444&quot; data-origin-width=&quot;1448&quot; data-origin-height=&quot;444&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;7. 파일 처리 시 주의사항&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;bull;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;파일 닫기&lt;/b&gt;:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp; &amp;nbsp;with&lt;/span&gt; 문을 사용하여 파일을 자동으로 닫도록 하면 안전합니다. 파일을 직접 닫지 않아도 되므로 예외 상황에서도 자원을 효율적으로 관리&amp;nbsp; &amp;nbsp; &amp;nbsp;할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;bull;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;예외 처리&lt;/b&gt;:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;파일 작업 중 예외가 발생할 가능성이 있으므로, &lt;span&gt;try&lt;/span&gt;&amp;hellip;&lt;span&gt;except&lt;/span&gt; 블록을 사용하여 오류를 처리하세요.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pObzX/btsLFdMT2Yb/HYTxkx0E1E3DZZnQWSV0uk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pObzX/btsLFdMT2Yb/HYTxkx0E1E3DZZnQWSV0uk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pObzX/btsLFdMT2Yb/HYTxkx0E1E3DZZnQWSV0uk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpObzX%2FbtsLFdMT2Yb%2FHYTxkx0E1E3DZZnQWSV0uk%2Fimg.jpg&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;837&quot; height=&quot;175&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;284&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;&lt;b&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&amp;bull;&lt;/span&gt;&lt;span style=&quot;background-color: #ffffff; color: #333333; text-align: start;&quot;&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/span&gt;파일 모드 확인&lt;/b&gt;:&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp; &amp;nbsp;파일 작업 전 올바른 모드를 선택하여 데이터 손실을 방지하세요. 예를 들어, &lt;span&gt;'w'&lt;/span&gt; 모드는 기존 내용을 삭제하고 새로 작성하므로 주의가 필&amp;nbsp; &amp;nbsp; &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;p data-ke-size=&quot;size16&quot;&gt;Python의 파일 처리는 데이터를 읽고 쓰는 기본적인 작업부터, CSV, JSON과 같은 구조화된 파일 형식의 처리까지 다양한 작업을 지원합니다. 파일 처리에서 중요한 점은 &lt;b&gt;올바른 파일 모드의 선택&lt;/b&gt;과 &lt;b&gt;예외 상황 관리&lt;/b&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;</description>
      <category>Language/Python</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/8</guid>
      <comments>https://taeyang4208.tistory.com/8#entry8comment</comments>
      <pubDate>Mon, 6 Jan 2025 20:37:47 +0900</pubDate>
    </item>
    <item>
      <title>&amp;lt;Python&amp;gt;#7 : Python Dictionary : Key-Value Pair로 데이터 관리하기</title>
      <link>https://taeyang4208.tistory.com/7</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Python의 딕셔너리(Dictionary)는 데이터를 &lt;b&gt;키(key)&lt;/b&gt;와 &lt;b&gt;값(value)&lt;/b&gt; 쌍으로 저장하는 자료형입니다. 딕셔너리는 데이터 검색, 수정, 추가, 삭제가 빠르고 간단하게 이루어질 수 있도록 설계된 자료구조로, Python 프로그래밍에서 매우 자주 사용됩니다.&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;0. 딕셔너리 : Dictionary&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리는 중괄호 &lt;span&gt;{}&lt;/span&gt;를 사용하여 생성하며, 각 요소는 키와 값으로 구성됩니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;키&lt;/b&gt;는 고유해야 하며, &lt;b&gt;불변 객체&lt;/b&gt;만 사용할 수 있습니다. &lt;b&gt;값&lt;/b&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;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;키(key):&lt;/b&gt; 고유하며 불변 객체(&lt;b&gt;문자열, 숫자, 튜플&lt;/b&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;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;값(value):&lt;/b&gt; 모든 데이터 타입 사용 가능하며, 중복 허용.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;352&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/TS4yg/btsLEba81Vq/zL8NCynxpmxNreYbsPOh4K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/TS4yg/btsLEba81Vq/zL8NCynxpmxNreYbsPOh4K/img.jpg&quot; data-alt=&quot;예제 코드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/TS4yg/btsLEba81Vq/zL8NCynxpmxNreYbsPOh4K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FTS4yg%2FbtsLEba81Vq%2FzL8NCynxpmxNreYbsPOh4K%2Fimg.jpg&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;841&quot; height=&quot;220&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;352&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;예제 코드&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;&lt;b&gt;딕셔너리의 주요 특징&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;1.&lt;span&gt; &lt;/span&gt;&lt;b&gt;키-값 쌍 저장:&lt;/b&gt; 각 키는 고유하며, 이를 통해 데이터를 효율적으로 검색할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;2.&lt;span&gt; &lt;/span&gt;&lt;b&gt;순서 보장:&lt;/b&gt; Python 3.7부터 딕셔너리는 삽입 순서를 유지합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;3.&lt;span&gt; &lt;/span&gt;&lt;b&gt;가변성:&lt;/b&gt; 딕셔너리는 생성 후에도 수정, 추가, 삭제가 가능합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;4.&lt;span&gt; &lt;/span&gt;&lt;b&gt;효율성:&lt;/b&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 딕셔너리 생성 방법&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.1 기본 생성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1354&quot; data-origin-height=&quot;154&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bmxnMu/btsLDKd0bV1/f2nXm5VkIhFJJGz6cap9Jk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bmxnMu/btsLDKd0bV1/f2nXm5VkIhFJJGz6cap9Jk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bmxnMu/btsLDKd0bV1/f2nXm5VkIhFJJGz6cap9Jk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbmxnMu%2FbtsLDKd0bV1%2Ff2nXm5VkIhFJJGz6cap9Jk%2Fimg.jpg&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;824&quot; height=&quot;94&quot; data-origin-width=&quot;1354&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.2 dict() 함수 사용&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;164&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bp5kPB/btsLDK57phu/0LYW27IJ5Oq7Sw34nKxyd1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bp5kPB/btsLDK57phu/0LYW27IJ5Oq7Sw34nKxyd1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bp5kPB/btsLDK57phu/0LYW27IJ5Oq7Sw34nKxyd1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fbp5kPB%2FbtsLDK57phu%2F0LYW27IJ5Oq7Sw34nKxyd1%2Fimg.jpg&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;820&quot; height=&quot;102&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;164&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;&lt;b&gt;1.3 빈 딕셔너리 생성&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1324&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/s3MpE/btsLF1SqKEK/1oNbKK91mM5wlzny1dv711/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/s3MpE/btsLF1SqKEK/1oNbKK91mM5wlzny1dv711/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/s3MpE/btsLF1SqKEK/1oNbKK91mM5wlzny1dv711/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fs3MpE%2FbtsLF1SqKEK%2F1oNbKK91mM5wlzny1dv711%2Fimg.jpg&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;827&quot; height=&quot;100&quot; data-origin-width=&quot;1324&quot; data-origin-height=&quot;160&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 딕셔너리의 키(key)와 값(value) 자세히 알아보기&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 키(key)의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;불변 객체만 사용 가능:&lt;/b&gt; 문자열, 숫자, 튜플 사용 가능.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;고유성:&lt;/b&gt; 딕셔너리에서 동일한 키가 여러 번 지정되면 마지막 값만 유지됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;284&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pBaYJ/btsLDZve21n/9VKmVFgE5KKgh5WXfnjNvK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pBaYJ/btsLDZve21n/9VKmVFgE5KKgh5WXfnjNvK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pBaYJ/btsLDZve21n/9VKmVFgE5KKgh5WXfnjNvK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpBaYJ%2FbtsLDZve21n%2F9VKmVFgE5KKgh5WXfnjNvK%2Fimg.jpg&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;828&quot; height=&quot;176&quot; data-origin-width=&quot;1336&quot; data-origin-height=&quot;284&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;&lt;b&gt;2) 값(value)의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;모든 데이터 타입 허용:&lt;/b&gt; 값으로 리스트, 딕셔너리 등 가변 객체도 가능.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;중복 허용:&lt;/b&gt; 값은 중복될 수 있으며, 동일한 값을 여러 키에 연결 가능.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;348&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bDgA3X/btsLELcfKKd/k0j0vmqDf9QEluWd9EXH21/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bDgA3X/btsLELcfKKd/k0j0vmqDf9QEluWd9EXH21/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bDgA3X/btsLELcfKKd/k0j0vmqDf9QEluWd9EXH21/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbDgA3X%2FbtsLELcfKKd%2Fk0j0vmqDf9QEluWd9EXH21%2Fimg.jpg&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;829&quot; height=&quot;213&quot; data-origin-width=&quot;1352&quot; data-origin-height=&quot;348&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;&lt;b&gt;3) 키와 값의 관계&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;딕셔너리는 키를 사용하여 값을 빠르게 검색할 수 있는 데이터 구조.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;키 존재 여부는 &lt;span&gt;in&lt;/span&gt;&lt;b&gt; 연산자&lt;/b&gt;를 사용해 확인 가능.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1338&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/pGSUs/btsLDI8hVc2/geeUodO50PkrWWnvnlbH0K/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/pGSUs/btsLDI8hVc2/geeUodO50PkrWWnvnlbH0K/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/pGSUs/btsLDI8hVc2/geeUodO50PkrWWnvnlbH0K/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FpGSUs%2FbtsLDI8hVc2%2FgeeUodO50PkrWWnvnlbH0K%2Fimg.jpg&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;836&quot; height=&quot;224&quot; data-origin-width=&quot;1338&quot; data-origin-height=&quot;224&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 딕셔너리 주요 메서드와 활용&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 값 추가 및 수정&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/caQqUp/btsLFerpqQv/KKkRz46MauhvwHgSDtiYl1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/caQqUp/btsLFerpqQv/KKkRz46MauhvwHgSDtiYl1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/caQqUp/btsLFerpqQv/KKkRz46MauhvwHgSDtiYl1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcaQqUp%2FbtsLFerpqQv%2FKKkRz46MauhvwHgSDtiYl1%2Fimg.jpg&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;1376&quot; height=&quot;282&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;282&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;&lt;b&gt;2) 값 삭제&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;pop(key)&lt;/span&gt;: 지정한 키-값 삭제.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;popitem()&lt;/span&gt;: 마지막으로 추가된 키-값 삭제.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0oeiu/btsLDVl2H29/iKlDW5HK8VbXjP693R5MGK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0oeiu/btsLDVl2H29/iKlDW5HK8VbXjP693R5MGK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0oeiu/btsLDVl2H29/iKlDW5HK8VbXjP693R5MGK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0oeiu%2FbtsLDVl2H29%2FiKlDW5HK8VbXjP693R5MGK%2Fimg.jpg&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;1334&quot; height=&quot;290&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;290&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;&lt;b&gt;3) 키가 존재하지 않을 경우 기본값 반환&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;get(key, default)&lt;/span&gt;: 키가 없을 경우 기본값 반환.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;160&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k2CVm/btsLDXjSEDa/VC4VPbKNs5YhiHdP74GuV0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k2CVm/btsLDXjSEDa/VC4VPbKNs5YhiHdP74GuV0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k2CVm/btsLDXjSEDa/VC4VPbKNs5YhiHdP74GuV0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk2CVm%2FbtsLDXjSEDa%2FVC4VPbKNs5YhiHdP74GuV0%2Fimg.jpg&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;1334&quot; height=&quot;160&quot; data-origin-width=&quot;1334&quot; data-origin-height=&quot;160&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;&lt;b&gt;4) 딕셔너리 병합&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;update()&lt;/span&gt;: 다른 딕셔너리의 키-값 추가 또는 업데이트.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zEUqn/btsLEK5rnHa/jZsbLRC6fHv7zBNIa2RrMK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zEUqn/btsLEK5rnHa/jZsbLRC6fHv7zBNIa2RrMK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zEUqn/btsLEK5rnHa/jZsbLRC6fHv7zBNIa2RrMK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzEUqn%2FbtsLEK5rnHa%2FjZsbLRC6fHv7zBNIa2RrMK%2Fimg.jpg&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;1318&quot; height=&quot;190&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;190&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;&lt;b&gt;5) 딕셔너리 키와 값 추출&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;/span&gt;keys()&lt;span&gt;, &lt;/span&gt;values()&lt;span&gt;, &lt;/span&gt;items()&lt;span&gt; 사용.&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c15Grw/btsLFJYN5F8/b1MSIwwGnW9whfkm63hyT1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c15Grw/btsLFJYN5F8/b1MSIwwGnW9whfkm63hyT1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c15Grw/btsLFJYN5F8/b1MSIwwGnW9whfkm63hyT1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc15Grw%2FbtsLFJYN5F8%2Fb1MSIwwGnW9whfkm63hyT1%2Fimg.jpg&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;1400&quot; height=&quot;224&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;224&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 딕셔너리 컴프리헨션 : Dictionary Comprihension&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;딕셔너리 컴프리헨션을 사용하면 간단한 조건이나 규칙에 따라 딕셔너리를 생성할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bOQQ0I/btsLEpmT8dE/6kfzsA8897u9J3HrNHA6U1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bOQQ0I/btsLEpmT8dE/6kfzsA8897u9J3HrNHA6U1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bOQQ0I/btsLEpmT8dE/6kfzsA8897u9J3HrNHA6U1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbOQQ0I%2FbtsLEpmT8dE%2F6kfzsA8897u9J3HrNHA6U1%2Fimg.jpg&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;1358&quot; height=&quot;192&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;192&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;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 딕셔너리 순회&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 기본 순회&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/0JUoz/btsLFzhOjrd/Lf6OyQ7v4HSWN0LTzfNTsK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/0JUoz/btsLFzhOjrd/Lf6OyQ7v4HSWN0LTzfNTsK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/0JUoz/btsLFzhOjrd/Lf6OyQ7v4HSWN0LTzfNTsK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F0JUoz%2FbtsLFzhOjrd%2FLf6OyQ7v4HSWN0LTzfNTsK%2Fimg.jpg&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;1382&quot; height=&quot;222&quot; data-origin-width=&quot;1382&quot; data-origin-height=&quot;222&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;&lt;b&gt;2) 중첩된 딕셔너리 순회&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;224&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/deirX9/btsLFwrRA4L/UQ1zyqKnCgKwasFKArLYe0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/deirX9/btsLFwrRA4L/UQ1zyqKnCgKwasFKArLYe0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/deirX9/btsLFwrRA4L/UQ1zyqKnCgKwasFKArLYe0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FdeirX9%2FbtsLFwrRA4L%2FUQ1zyqKnCgKwasFKArLYe0%2Fimg.jpg&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;1376&quot; height=&quot;224&quot; data-origin-width=&quot;1376&quot; data-origin-height=&quot;224&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 style=&quot;color: #000000; text-align: start;&quot; data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;6. 중첩 딕셔너리&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python에서는 딕셔너리 안에 딕셔너리를 값으로 넣을 수 있습니다. 이를 중첩 딕셔너리(Nested Dictionary)라고 합니다. 딕셔너리 내부의 값으로 또 다른 딕셔너리를 사용하면, 복잡한 계층 구조의 데이터를 효율적으로 표현하고 관리할 수 있습니다.&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;&lt;b&gt;1. 중첩 딕셔너리 생성&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;key값으로는 가질 수 없습니다. 반드시 value 값으로 가져야합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;282&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/vLd3m/btsLE4QaFKX/yHnhB4So1YhsFV6ii14nD1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/vLd3m/btsLE4QaFKX/yHnhB4So1YhsFV6ii14nD1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/vLd3m/btsLE4QaFKX/yHnhB4So1YhsFV6ii14nD1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FvLd3m%2FbtsLE4QaFKX%2FyHnhB4So1YhsFV6ii14nD1%2Fimg.jpg&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;1348&quot; height=&quot;282&quot; data-origin-width=&quot;1348&quot; data-origin-height=&quot;282&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;&lt;b&gt;2. 중첩 딕셔너리 값 접근&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키를 체인 방식으로 접근하여 내부 딕셔너리의 특정 값을 가져올 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;288&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cGx5P9/btsLF3JvBm1/Ktc0HL2TTqNNTxuJFMbb20/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cGx5P9/btsLF3JvBm1/Ktc0HL2TTqNNTxuJFMbb20/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cGx5P9/btsLF3JvBm1/Ktc0HL2TTqNNTxuJFMbb20/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcGx5P9%2FbtsLF3JvBm1%2FKtc0HL2TTqNNTxuJFMbb20%2Fimg.jpg&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;1366&quot; height=&quot;288&quot; data-origin-width=&quot;1366&quot; data-origin-height=&quot;288&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;&lt;b&gt;3. 중첩 딕셔너리 값 수정&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;내부 딕셔너리의 특정 키의 값을 수정할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1390&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/k1p6G/btsLErLRaeM/V8ZG6m9tWrv369MFlh5Pwk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/k1p6G/btsLErLRaeM/V8ZG6m9tWrv369MFlh5Pwk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/k1p6G/btsLErLRaeM/V8ZG6m9tWrv369MFlh5Pwk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fk1p6G%2FbtsLErLRaeM%2FV8ZG6m9tWrv369MFlh5Pwk%2Fimg.jpg&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;1390&quot; height=&quot;222&quot; data-origin-width=&quot;1390&quot; data-origin-height=&quot;222&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;&lt;b&gt;4. 중첩 딕셔너리 값 추가&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;기존 내부 딕셔너리에 새로운 키-값 쌍을 추가하거나, 외부 딕셔너리에 새로운 내부 딕셔너리를 추가할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1488&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cX7OE2/btsLGlpCHWW/YhOYLjY5bxs0kkU5J1ZYJk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cX7OE2/btsLGlpCHWW/YhOYLjY5bxs0kkU5J1ZYJk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cX7OE2/btsLGlpCHWW/YhOYLjY5bxs0kkU5J1ZYJk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcX7OE2%2FbtsLGlpCHWW%2FYhOYLjY5bxs0kkU5J1ZYJk%2Fimg.jpg&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;1488&quot; height=&quot;316&quot; data-origin-width=&quot;1488&quot; data-origin-height=&quot;316&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;&lt;b&gt;5. 중첩 딕셔너리 순회&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;for&lt;/span&gt; 루프를 사용하여 중첩 딕셔너리를 순회하면서 키와 값을 처리할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;290&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bMSLr0/btsLFLvCfN9/CvwjHtVEWPqVWzkAoCCqo0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bMSLr0/btsLFLvCfN9/CvwjHtVEWPqVWzkAoCCqo0/img.jpg&quot; data-alt=&quot;예제 코드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bMSLr0/btsLFLvCfN9/CvwjHtVEWPqVWzkAoCCqo0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbMSLr0%2FbtsLFLvCfN9%2FCvwjHtVEWPqVWzkAoCCqo0%2Fimg.jpg&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;1358&quot; height=&quot;290&quot; data-origin-width=&quot;1358&quot; data-origin-height=&quot;290&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;예제 코드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;출력 결과:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;544&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b82rmj/btsLEi2rO5h/sGcP4ySjlJOqDyz4PdSWZk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b82rmj/btsLEi2rO5h/sGcP4ySjlJOqDyz4PdSWZk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b82rmj/btsLEi2rO5h/sGcP4ySjlJOqDyz4PdSWZk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb82rmj%2FbtsLEi2rO5h%2FsGcP4ySjlJOqDyz4PdSWZk%2Fimg.jpg&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;1470&quot; height=&quot;544&quot; data-origin-width=&quot;1470&quot; data-origin-height=&quot;544&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;&lt;b&gt;6. 중첩 딕셔너리와 JSON 데이터&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중첩 딕셔너리는 &lt;b&gt;JSON(JavaScript Object Notation)&lt;/b&gt; 구조와 유사하므로, JSON 데이터를 파이썬 딕셔너리로 쉽게 변환하거나 저장할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;414&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/zeRN7/btsLDHuNkQL/v9ZEzoowoEQFI49urGNRkK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/zeRN7/btsLDHuNkQL/v9ZEzoowoEQFI49urGNRkK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/zeRN7/btsLDHuNkQL/v9ZEzoowoEQFI49urGNRkK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FzeRN7%2FbtsLDHuNkQL%2Fv9ZEzoowoEQFI49urGNRkK%2Fimg.jpg&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;1356&quot; height=&quot;414&quot; data-origin-width=&quot;1356&quot; data-origin-height=&quot;414&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;&lt;b&gt;중첩 딕셔너리 활용 사례&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;1.&lt;span&gt; &lt;/span&gt;&lt;b&gt;데이터베이스&lt;/b&gt;: 사용자 프로필, 상품 카탈로그 등 계층적인 데이터를 저장합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;2.&lt;span&gt; &lt;/span&gt;&lt;b&gt;설정 파일&lt;/b&gt;: 애플리케이션의 설정 값을 계층적으로 관리합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;3.&lt;span&gt; &lt;/span&gt;&lt;b&gt;API 응답 처리&lt;/b&gt;: REST API의 JSON 응답을 처리합니다.&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 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;7. 딕셔너리 사용 시 주의사항&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;1)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;키로 불변 객체만 사용&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&lt;span&gt; &lt;/span&gt;2)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;중복 키 방지&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&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;&lt;span&gt; &lt;/span&gt;3)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;깊은 복사와 얕은 복사&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;중첩 딕셔너리를 복사할 때는 &lt;span&gt;deepcopy&lt;/span&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;&lt;span&gt; &lt;/span&gt;4)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;키 존재 여부 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;키가 존재하지 않을 경우 &lt;span&gt;get()&lt;/span&gt; 메서드나 &lt;span&gt;in&lt;/span&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;Python 딕셔너리는 데이터를 효율적으로 관리하고 처리할 수 있는 강력한 도구입니다. 다양한 메서드와 활용법을 이해하면 더 유연하고 강력한 프로그램을 작성할 수 있습니다. 이상으로 포스팅 마치겠습니다.&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;</description>
      <category>Language/Python</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/7</guid>
      <comments>https://taeyang4208.tistory.com/7#entry7comment</comments>
      <pubDate>Mon, 6 Jan 2025 18:55:59 +0900</pubDate>
    </item>
    <item>
      <title>&amp;lt;Python&amp;gt;#6 : Python Strings : 기본 개념부터 문자열 메서드까지</title>
      <link>https://taeyang4208.tistory.com/6</link>
      <description>&lt;p data-ke-size=&quot;size16&quot;&gt;Python에서 문자열(String)은 문자들의 연속으로 구성된 데이터 타입으로, 텍스트 데이터를 처리하는 데 필수적입니다. 이번 포스팅에서는 문자열의 기본 개념과 다양한 문자열 메서드를 활용하는 방법까지 체계적으로 정리해보겠습니다.&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;0. 문자열 : Strings&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열은 &lt;b&gt;시퀀스 데이터 타입&lt;/b&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;Python에서 문자열은 &lt;b&gt;작은따옴표(&lt;span&gt;'&lt;/span&gt;)&lt;/b&gt;나 &lt;b&gt;큰따옴표(&lt;span&gt;&quot;&lt;/span&gt;)&lt;/b&gt;로 감싸서 생성할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;여러 줄 문자열은 &lt;b&gt;세 개의 작은따옴표(&lt;/b&gt;&lt;span&gt;'''&lt;/span&gt;&lt;b&gt;)&lt;/b&gt; 또는 &lt;b&gt;세 개의 큰따옴표(&lt;span&gt;&quot;&quot;&quot;&lt;/span&gt;)&lt;/b&gt;로 감쌉니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1264&quot; data-origin-height=&quot;286&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/G8EHV/btsLDM3MHTP/3Rxd49473bixIScA80wPF1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/G8EHV/btsLDM3MHTP/3Rxd49473bixIScA80wPF1/img.jpg&quot; data-alt=&quot;예제 코드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/G8EHV/btsLDM3MHTP/3Rxd49473bixIScA80wPF1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FG8EHV%2FbtsLDM3MHTP%2F3Rxd49473bixIScA80wPF1%2Fimg.jpg&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;1264&quot; height=&quot;286&quot; data-origin-width=&quot;1264&quot; data-origin-height=&quot;286&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;예제 코드&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;&lt;b&gt;문자열의 특징&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;불변성(Immutability):&lt;/b&gt; 문자열은 한 번 생성되면 변경할 수 없습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;인덱싱(Indexing):&lt;/b&gt; 문자열의 각 문자는 인덱스를 통해 접근할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;b&gt;슬라이싱(Slicing):&lt;/b&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;&lt;b&gt;이스케이프 문자 (&lt;b&gt;Escape Characters&lt;/b&gt;)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열 내에서 특수 문자를 삽입하거나, 줄 바꿈 등의 형식을 표현하기 위해 이스케이프 문자(Escape Characters)를 사용합니다. 이스케이프 문자는 역슬래시(&lt;span&gt;\&lt;/span&gt;)와 특정 문자의 조합으로 구성됩니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;356&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rHm9B/btsLE1eGSyp/sqzFA0e3Au77E0BgnxbiS0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rHm9B/btsLE1eGSyp/sqzFA0e3Au77E0BgnxbiS0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rHm9B/btsLE1eGSyp/sqzFA0e3Au77E0BgnxbiS0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrHm9B%2FbtsLE1eGSyp%2FsqzFA0e3Au77E0BgnxbiS0%2Fimg.jpg&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;1064&quot; height=&quot;356&quot; data-origin-width=&quot;1064&quot; data-origin-height=&quot;356&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;1. 문자열 인덱싱과 슬라이싱&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.1 인덱싱&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열의 각 문자는 &lt;b&gt;인덱스&lt;/b&gt;를 사용해 접근할 수 있습니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;양수 인덱스는 &lt;b&gt;왼쪽에서 오른쪽으로&lt;/b&gt;, 음수 인덱스는 &lt;b&gt;오른쪽에서 왼쪽으로&lt;/b&gt; 동작합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1186&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/OL2nm/btsLE0GOJpS/STNRddwPaB6iApS62IrALK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/OL2nm/btsLE0GOJpS/STNRddwPaB6iApS62IrALK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/OL2nm/btsLE0GOJpS/STNRddwPaB6iApS62IrALK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FOL2nm%2FbtsLE0GOJpS%2FSTNRddwPaB6iApS62IrALK%2Fimg.jpg&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;1186&quot; height=&quot;226&quot; data-origin-width=&quot;1186&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1.2 슬라이싱&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;문자열의 부분 문자열을 추출하려면 슬라이싱을 사용합니다.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&lt;b&gt;구문:&lt;/b&gt; &lt;/span&gt;string[start:end:step]&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1290&quot; data-origin-height=&quot;226&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cBFz0q/btsLEhvv0je/44mhfyQTnEm4ktZK4mOkxK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cBFz0q/btsLEhvv0je/44mhfyQTnEm4ktZK4mOkxK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cBFz0q/btsLEhvv0je/44mhfyQTnEm4ktZK4mOkxK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcBFz0q%2FbtsLEhvv0je%2F44mhfyQTnEm4ktZK4mOkxK%2Fimg.jpg&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;1290&quot; height=&quot;226&quot; data-origin-width=&quot;1290&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;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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;2. 문자열 연산&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 문자열 연결&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;+&lt;/span&gt; 연산자를 사용해 두 문자열을 연결합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;262&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/BC9GV/btsLFiHhbtK/vKaBB94pKVHPT09eOGQNr0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/BC9GV/btsLFiHhbtK/vKaBB94pKVHPT09eOGQNr0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/BC9GV/btsLFiHhbtK/vKaBB94pKVHPT09eOGQNr0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FBC9GV%2FbtsLFiHhbtK%2FvKaBB94pKVHPT09eOGQNr0%2Fimg.jpg&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;1350&quot; height=&quot;262&quot; data-origin-width=&quot;1350&quot; data-origin-height=&quot;262&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;&lt;b&gt;2) 문자열 반복&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;*&lt;/span&gt; 연산자를 사용해 문자열을 반복합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;190&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ebzuyy/btsLD1NgKlT/dqTfK6JkxdnLM5aWS6w2ek/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ebzuyy/btsLD1NgKlT/dqTfK6JkxdnLM5aWS6w2ek/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ebzuyy/btsLD1NgKlT/dqTfK6JkxdnLM5aWS6w2ek/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Febzuyy%2FbtsLD1NgKlT%2FdqTfK6JkxdnLM5aWS6w2ek%2Fimg.jpg&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;1394&quot; height=&quot;190&quot; data-origin-width=&quot;1394&quot; data-origin-height=&quot;190&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;3. 문자열 메서드&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;Python은 문자열 조작을 위한 다양한 내장 메서드를 제공합니다.&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;&lt;b&gt;1) 문자열 분할 (&lt;b&gt;Splitting Strings)&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;split()&lt;/span&gt; 메서드&lt;/b&gt;는 문자열을 특정 구분자(&lt;span&gt;separator&lt;/span&gt;)로 나누어 리스트로 반환합니다. 구분자를 지정하지 않으면 공백을 기준으로 분리합니&amp;nbsp; &amp;nbsp;다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;350&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/c3NOYD/btsLFDqTmsk/tqwQG8nxTKYCO0Rrqf2AeK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/c3NOYD/btsLFDqTmsk/tqwQG8nxTKYCO0Rrqf2AeK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/c3NOYD/btsLFDqTmsk/tqwQG8nxTKYCO0Rrqf2AeK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fc3NOYD%2FbtsLFDqTmsk%2FtqwQG8nxTKYCO0Rrqf2AeK%2Fimg.jpg&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;1318&quot; height=&quot;350&quot; data-origin-width=&quot;1318&quot; data-origin-height=&quot;350&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;&lt;b&gt;2) 문자열 결합 (&lt;b&gt;Joining Strings)&lt;/b&gt;&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;join()&lt;/span&gt; 메서드&lt;/b&gt;는 리스트 등의 이터러블 요소를 하나의 문자열로 결합합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;218&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bRwovU/btsLEjfNS7K/ldzwmk5rSN3WX3LcDwBdFK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bRwovU/btsLEjfNS7K/ldzwmk5rSN3WX3LcDwBdFK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bRwovU/btsLEjfNS7K/ldzwmk5rSN3WX3LcDwBdFK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbRwovU%2FbtsLEjfNS7K%2Fldzwmk5rSN3WX3LcDwBdFK%2Fimg.jpg&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;1232&quot; height=&quot;218&quot; data-origin-width=&quot;1232&quot; data-origin-height=&quot;218&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;&lt;b&gt;3) 문자열 치환 (&lt;b&gt;Replacing Strings&lt;/b&gt;)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;replace()&lt;/span&gt; 메서드&lt;/b&gt;는 문자열의 특정 부분 문자열을 다른 문자열로 교체합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;220&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/GIxC7/btsLE1ThUOn/XoLvM8sv1cTV4eSDaE2GI0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/GIxC7/btsLE1ThUOn/XoLvM8sv1cTV4eSDaE2GI0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/GIxC7/btsLE1ThUOn/XoLvM8sv1cTV4eSDaE2GI0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FGIxC7%2FbtsLE1ThUOn%2FXoLvM8sv1cTV4eSDaE2GI0%2Fimg.jpg&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;1252&quot; height=&quot;220&quot; data-origin-width=&quot;1252&quot; data-origin-height=&quot;220&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;&lt;b&gt;4) 문자열 검색 (&lt;b&gt;Finding Strings&lt;/b&gt;)&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;find()&lt;/span&gt; 메서드&lt;/b&gt;는 특정 부분 문자열이 처음 등장하는 인덱스를 반환하며, 찾지 못하면 &lt;span&gt;-1&lt;/span&gt;을 반환합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/NpFdY/btsLEelkYE6/KmxZqAXjsdQNPyHHxy2YIk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/NpFdY/btsLEelkYE6/KmxZqAXjsdQNPyHHxy2YIk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/NpFdY/btsLEelkYE6/KmxZqAXjsdQNPyHHxy2YIk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FNpFdY%2FbtsLEelkYE6%2FKmxZqAXjsdQNPyHHxy2YIk%2Fimg.jpg&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;1272&quot; height=&quot;222&quot; data-origin-width=&quot;1272&quot; data-origin-height=&quot;222&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;&lt;b&gt;5) 문자열 포맷팅 (&lt;b&gt;Formatting Strings&lt;/b&gt;)&lt;/b&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;&lt;span&gt;&amp;nbsp;format()&lt;/span&gt; 메서드와 &lt;b&gt;f-strings&lt;/b&gt;를 사용합니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;382&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/9KajT/btsLDVzr2R5/2Ce8jpgbKIeRyO1SvxgMvk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/9KajT/btsLDVzr2R5/2Ce8jpgbKIeRyO1SvxgMvk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/9KajT/btsLDVzr2R5/2Ce8jpgbKIeRyO1SvxgMvk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2F9KajT%2FbtsLDVzr2R5%2F2Ce8jpgbKIeRyO1SvxgMvk%2Fimg.jpg&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;1400&quot; height=&quot;382&quot; data-origin-width=&quot;1400&quot; data-origin-height=&quot;382&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;&lt;b&gt;6) 대소문자 변환&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;upper()&lt;/span&gt;: 문자열을 대문자로 변환.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lower()&lt;/span&gt;: 문자열을 소문자로 변환.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;title()&lt;/span&gt;: 각 단어의 첫 문자를 대문자로 변환.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;188&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/nZBMF/btsLE2LphK3/e3MkPWKksKrPcXDNCeB9R0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/nZBMF/btsLE2LphK3/e3MkPWKksKrPcXDNCeB9R0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/nZBMF/btsLE2LphK3/e3MkPWKksKrPcXDNCeB9R0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FnZBMF%2FbtsLE2LphK3%2Fe3MkPWKksKrPcXDNCeB9R0%2Fimg.jpg&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;1262&quot; height=&quot;188&quot; data-origin-width=&quot;1262&quot; data-origin-height=&quot;188&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;&lt;b&gt;7) 공백 제거&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;strip()&lt;/span&gt;: 양쪽 공백 제거.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;lstrip()&lt;/span&gt;: 왼쪽 공백 제거.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;/span&gt;&amp;bull;&lt;span&gt; &lt;/span&gt;&lt;span&gt;rstrip()&lt;/span&gt;: 오른쪽 공백 제거.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;186&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/rdX0h/btsLFLhT4YH/Vs0piNPG0nSoz3ybSEyik1/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/rdX0h/btsLFLhT4YH/Vs0piNPG0nSoz3ybSEyik1/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/rdX0h/btsLFLhT4YH/Vs0piNPG0nSoz3ybSEyik1/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FrdX0h%2FbtsLFLhT4YH%2FVs0piNPG0nSoz3ybSEyik1%2Fimg.jpg&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;1322&quot; height=&quot;186&quot; data-origin-width=&quot;1322&quot; data-origin-height=&quot;186&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;&lt;b&gt;문자열 메서드 비교 요약&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignLeft&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;360&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/ckijy9/btsLFZNI2Zh/joOgfrqK2TFX4ceKpvKDm0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/ckijy9/btsLFZNI2Zh/joOgfrqK2TFX4ceKpvKDm0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/ckijy9/btsLFZNI2Zh/joOgfrqK2TFX4ceKpvKDm0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fckijy9%2FbtsLFZNI2Zh%2FjoOgfrqK2TFX4ceKpvKDm0%2Fimg.jpg&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;1432&quot; height=&quot;360&quot; data-origin-width=&quot;1432&quot; data-origin-height=&quot;360&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 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;4. 문자열 활용 팁&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;1) 문자열 포함 여부 확인&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;in&lt;/span&gt; 키워드&lt;/b&gt;를 사용해 특정 문자열이 포함되어 있는지 확인할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/lubk4/btsLDIG99hs/NgRttes0ZrskAGbUlMisPK/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/lubk4/btsLDIG99hs/NgRttes0ZrskAGbUlMisPK/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/lubk4/btsLDIG99hs/NgRttes0ZrskAGbUlMisPK/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Flubk4%2FbtsLDIG99hs%2FNgRttes0ZrskAGbUlMisPK%2Fimg.jpg&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;1344&quot; height=&quot;222&quot; data-origin-width=&quot;1344&quot; data-origin-height=&quot;222&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;&lt;b&gt;2) 문자열 길이 구하기&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;b&gt;&lt;span&gt;&amp;nbsp;len()&lt;/span&gt; 함수&lt;/b&gt;로 문자열의 길이를 구할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;192&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/b3Wd6k/btsLELiP19y/tJV7FkTgKdeg7o9I6iZek0/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/b3Wd6k/btsLELiP19y/tJV7FkTgKdeg7o9I6iZek0/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/b3Wd6k/btsLELiP19y/tJV7FkTgKdeg7o9I6iZek0/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2Fb3Wd6k%2FbtsLELiP19y%2FtJV7FkTgKdeg7o9I6iZek0%2Fimg.jpg&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;1346&quot; height=&quot;192&quot; data-origin-width=&quot;1346&quot; data-origin-height=&quot;192&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;&lt;b&gt;3) 문자열 순회&lt;/b&gt;&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;&amp;nbsp;for&lt;/span&gt; 반복문을 사용하여 문자열의 각 문자를 순회할 수 있습니다.&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;222&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/bpNMSz/btsLEGofpCd/lc4M66rd8Y1m00hy9sPh41/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/bpNMSz/btsLEGofpCd/lc4M66rd8Y1m00hy9sPh41/img.jpg&quot; data-alt=&quot;예제 코드&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/bpNMSz/btsLEGofpCd/lc4M66rd8Y1m00hy9sPh41/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FbpNMSz%2FbtsLEGofpCd%2Flc4M66rd8Y1m00hy9sPh41%2Fimg.jpg&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;1300&quot; height=&quot;222&quot; data-origin-width=&quot;1300&quot; data-origin-height=&quot;222&quot;/&gt;&lt;/span&gt;&lt;figcaption&gt;예제 코드&lt;/figcaption&gt;
&lt;/figure&gt;
&lt;/p&gt;
&lt;p data-ke-size=&quot;size14&quot;&gt;출력 결과:&lt;/p&gt;
&lt;p&gt;&lt;figure class=&quot;imageblock alignCenter&quot; data-ke-mobileStyle=&quot;widthOrigin&quot; data-origin-width=&quot;1338&quot; data-origin-height=&quot;316&quot;&gt;&lt;span data-url=&quot;https://blog.kakaocdn.net/dn/cfeS4i/btsLEqsxhQk/wy1NhRgNxj5vkwLJ6Ik6Nk/img.jpg&quot; data-phocus=&quot;https://blog.kakaocdn.net/dn/cfeS4i/btsLEqsxhQk/wy1NhRgNxj5vkwLJ6Ik6Nk/img.jpg&quot;&gt;&lt;img src=&quot;https://blog.kakaocdn.net/dn/cfeS4i/btsLEqsxhQk/wy1NhRgNxj5vkwLJ6Ik6Nk/img.jpg&quot; srcset=&quot;https://img1.daumcdn.net/thumb/R1280x0/?scode=mtistory2&amp;fname=https%3A%2F%2Fblog.kakaocdn.net%2Fdn%2FcfeS4i%2FbtsLEqsxhQk%2Fwy1NhRgNxj5vkwLJ6Ik6Nk%2Fimg.jpg&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;1338&quot; height=&quot;316&quot; data-origin-width=&quot;1338&quot; data-origin-height=&quot;316&quot;/&gt;&lt;/span&gt;&lt;/figure&gt;
&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&amp;nbsp;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;
&lt;h3 data-ke-size=&quot;size23&quot;&gt;&lt;b&gt;5. 문자열 사용 시 주의할 점&lt;/b&gt;&lt;b&gt;&lt;/b&gt;&lt;/h3&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt;1) &lt;/span&gt;&lt;b&gt;불변성:&lt;/b&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;2)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;인덱스 오류:&lt;/b&gt; 잘못된 인덱스에 접근하면 &lt;span&gt;IndexError&lt;/span&gt;가 발생합니다. 인덱스를 확인하고 사용하세요.&lt;/p&gt;
&lt;p data-ke-size=&quot;size16&quot;&gt;&lt;span&gt; &lt;br /&gt;&lt;/span&gt;3)&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;b&gt;공백 처리:&lt;/b&gt; 입력값에서 공백은 의도치 않은 결과를 초래할 수 있으므로 &lt;span&gt;strip()&lt;/span&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;Python 문자열은 텍스트 데이터 처리와 조작에서 필수적인 도구입니다. 주요 메서드와 활용 방법을 숙지하면 더욱 효율적인 코드를 작성할 수 있습니다. 이상으로 포스팅 마치겠습니다.&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;p data-ke-size=&quot;size16&quot;&gt;&amp;nbsp;&lt;/p&gt;</description>
      <category>Language/Python</category>
      <author>Taeyang's Learning Lab</author>
      <guid isPermaLink="true">https://taeyang4208.tistory.com/6</guid>
      <comments>https://taeyang4208.tistory.com/6#entry6comment</comments>
      <pubDate>Mon, 6 Jan 2025 16:23:15 +0900</pubDate>
    </item>
  </channel>
</rss>