1. matplotlib library

   :  Python 프로그래밍 언어 및 numpy 라이브러리 Data를 선, 막대, 산점도, 히스토그램, 파이, 박스, 바이올 등으로 시각화해주는 그래픽 라이브러리입니다. png, pdf, svg 등의 포맷으로 저장이 가능합니다.

 

2. plot 그리기

   : matplotlib.pyplot을 plt로 불러와서 아래 code를 입력하면 아래와 같은 그래프를 얻을 수 있습니다.

 
   import matplotlib.pyplot as plt

   plt.figure(figsize=(5,2))
   plt.plot([1,2,3,4,5],[1,4,6,9,25], 'go')
   plt.show()
 
plt.figure(figsize=(가로 인치, 세로 인치)) 그래프 size 결정 
plt.plot([ x좌표 ],[ y 좌표])  그래프의 x, y 좌표 설정
plt.show()   : 그래프를 그리는 명령어

                          

 

 

   : 이번에는 그래프 스타일(ggplot) 및 마커(circle)에 변경을 주겠습니다. 다른 설정에 대한 option은 link에서 확인이 가능합니다. 

 
   plt.style.use('ggplot')
   plt.plot([1,2,3,4,5], [1,4,6,9,25], 'go')
   plt.show()
 
plt.style.use('ggplot') 그래프의 형식을 지정
plt.plot([1,2,3,4,5], [1,4,6,9,25], 'go') 'go'는 green circle 을 의미

 

 

 

   : 그래프의 제목 및 x, y 축 이름을 지정해보겠습니다.

 
   plt.figure(figsize=(3,3))
   plt.plot([1,2,3,4,5],[1,4,6,9,25], 'go:')
   plt.title("Graph")
   plt.xlabel('X')
   plt.ylabel('Y')
   plt.show()
 
plt.plot([1,2,3,4,5],[1,4,6,9,25], 'go:') go: 은 green + circle + dotted line style 를 의미
plt.title("Graph") 그래프 이름을 Graph로 설정
plt.xlabel('X') x축 이름을 X로 설정
plt.ylabel('Y') y축 이름을 Y로 설정

 

 

   : 이번에는 한번에 여러개의 선을 그리는 방법을 확인해 보겠습니다.

 
   x_label = ['Jan','Feb','Mar','Apr','May','Jun']
   y_label_01 = [100,60,70,80,65,90]
   y_label_02 = [50,80,30,10,90,60]
   y_label_03 = [80,70,60,75,45,80]

   plt.plot(x_label, y_label_01, 'ro-', label="y_label_01")
   plt.plot(x_label, y_label_02, 'bo--', label="y_label_02")
   plt.plot(x_label, y_label_03, 'go:', label="y_label_03")
   plt.legend(loc='lower right')
   plt.xlim(-0.5,5.5)
   plt.ylim(0,105)

   plt.show()
 
plt.plot(x_label, y_label_01, 'ro-', label="y_label_01") label의 이름을 y_lable_01로 지
plt.legend(loc='lower right') label 을 표시하는 위치를 low right 로 지정
plt.xlim(-0.5,5.5) x축 범위
plt.ylim(0,105) y축 범위

 

 

   : 이중 y축을 사용한 꺾은선 그래프이다. 하나의 그림위에 axis를 두개 생성해서 각 axis에 그래프를 그린 뒤 합친다고 생각하면 된다.

 
   fig, ax1 = plt.subplots()
   ax2 = ax1.twinx()

   x_label = ['Jan','Feb','Mar','Apr','May','Jun']
   y_label_01 = [100,60,70,80,85,90]
   y_label_02 = [500,800,300,100,900,600]

   line_01 = ax1.plot(x_label, y_label_01, color = "red", label="y_label_01")
   line_02 = ax2.plot(x_label, y_label_02, color = "yellow", label="y_label_02")

   lines = line_01 + line_02

   ax1.set_ylabel("1st_y")
   ax2.set_ylabel("2nd_y")

   labels = [line_01[0].get_label(), line_02[0].get_label()]
   plt.legend(lines, labels, loc="lower right")

   plt.show()
 

'데이터 처리' 카테고리의 다른 글

1. pandas 기초  (0) 2024.07.20

1. pandas library

   : 데이터를 가공하기 위해 dataframe을 다루는 library 이다. csv, excel 파일을 불러와 처리할 수 있다.

2. kaggle 에 접속해서 dataset download

   : 이번 실습에서는 kaggle 에서 "Top 50 Indian Companies" 의 dataset을 활용했다. Link를 타고 들어가서 가입 후 무료로 다운받아 사용하면 된다. kaggle에는 분석을 위해 공개된 다양한 datasets이 존재한다.

 

3. pandas library 실행

   : pandas를 import 해서 pd 라는 약어를 사용하겠다고 선언하는 것이다. 실행했을 때 아무것도 뜨지 않는다면, 정상적으로 import 된것이다. 만약 아래 "# 결과 #" 와 같이 나왔다면 터미널 창에 "pip install pandas"를 입력해 library를 실행한다.

import pandas as pd


# 결과 #
  File "경로~", line 1, in <module>
    import pandas as pd
ModuleNotFoundError: No module named 'pandas'

 

4. dataset 불러오기

   : code 파일이 있는 폴더에 2번 캐글에서 다운 받은 파일의 압축을 풀었다는 가정에서 진행하겠다. 압축을 풀면 archive 폴더에 "Top Company.csv" 파일이 생성된다. 아래 code를 입력하면 dataframe 확인이 가능하다.

import pandas as pd

df_archive = pd.read_csv('archive/Top Company.csv')

print(df_archive)          # dataframe 전체 확인.
print(df_archive.head())   # dataframe 에서 5개의 행을 확인. head(3) 3번째 행까지 확인.
print(df_archive.tail())   # head와 반대로 마지막 5개의 행을 확인.


# 결과 # → head()의 결과이다.
   Rank                             Name     Industry  Revenue (in ₹ Crore) Revenue growth Profits (in ₹ Crore) Headquarters State Controlled
0     1           Indian Oil Corporation  Oil and gas                424321          13.2%                22189    New Delhi              Yes
1     2      Reliance Industries Limited  Oil and gas                410295          28.2%                36075       Mumbai              NaN
2     3  Oil and Natural Gas Corporation  Oil and gas                333143          11.0%                22106    New Delhi              Yes
3     4              State Bank of India      Banking                306528           2.6%               −4,556       Mumbai              Yes
4     5                      Tata Motors   Automotive                301175           7.9%                 8989       Mumbai              NaN

 

4. dataset 확인

 4.01. info() : column별 data type 확인

   : column별 data type에 따라 data를 처리하는 방식이 달라진다. 그렇기 때문에 data의 type의 확인은 중요하다. 아래 보면 컬럼별로 50개의 정보가 있으며, "State Controlled"에 50개중 20개의 정보만 있는 것을 확인 할수 있다. (= 결측치가 30개가 있다.)

print(df_archive.info())


# 결과 #
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 50 entries, 0 to 49
Data columns (total 8 columns):
 #   Column                Non-Null Count  Dtype
---  ------                --------------  -----
 0   Rank                  50 non-null     int64
 1   Name                  50 non-null     object
 2   Industry              50 non-null     object
 3   Revenue (in ₹ Crore)  50 non-null     int64
 4   Revenue growth        50 non-null     object
 5   Profits (in ₹ Crore)  50 non-null     object
 6   Headquarters          50 non-null     object
 7   State Controlled      20 non-null     object
dtypes: int64(2), object(6)
memory usage: 3.2+ KB
None

 

 4.02. 컬럼명 확인

   : 컬럼 목록을 확인 할 수 있다.

print(df_archive.columns)


# 결과 #
Index(['Rank', 'Name', 'Industry', 'Revenue (in ₹ Crore)', 'Revenue growth',
       'Profits (in ₹ Crore)', 'Headquarters', 'State Controlled'],
      dtype='object')

 

 4.03. 특정 컬럼 data 확인

   : 1개의 컬럼 선택과 여러개의 컬럼을 선택해서 확인하는 방법이다. 차례로 입력해서 결과를 확인하자.

# 1개의 컬럼 선택
print(df_archive['Name'].head())

# 결과 #
0             Indian Oil Corporation
1        Reliance Industries Limited
2    Oil and Natural Gas Corporation
3                State Bank of India
4                        Tata Motors



# 2개의 컬럼 선택
print(df_archive[['Name','Industry']].head())

# 결과 #
                              Name     Industry
0           Indian Oil Corporation  Oil and gas
1      Reliance Industries Limited  Oil and gas
2  Oil and Natural Gas Corporation  Oil and gas
3              State Bank of India      Banking
4                      Tata Motors   Automotive

 

 4.04. 원하는 조건의 정보만 추출하기

   : 1 개의 조건으로 정보를 추출하는 방법이다. Industry 컬럼에서 "Oil and gas"만 추출해 보겠다.

print(df_archive[df_archive['Industry']=="Oil and gas"])


# 결과 # 
    Rank                             Name     Industry  Revenue (in ₹ Crore) Revenue growth Profits (in ₹ Crore) Headquarters State Controlled
0      1           Indian Oil Corporation  Oil and gas                424321          13.2%                22189    New Delhi              Yes
1      2      Reliance Industries Limited  Oil and gas                410295          28.2%                36075       Mumbai              NaN
2      3  Oil and Natural Gas Corporation  Oil and gas                333143          11.0%                22106    New Delhi              Yes
5      6                 Bharat Petroleum  Oil and gas                238638          13.7%                 9009       Mumbai              Yes
6      7              Hindustan Petroleum  Oil and gas                221693          13.4%                 7218       Mumbai              Yes
21    22                    Nayara Energy  Oil and gas                 73015          10.7%                  576       Mumbai              NaN
30    31                             GAIL  Oil and gas                 55503          11.6%                 4799    New Delhi              Yes
33    34                             MRPL  Oil and gas                 50209           8.9%                 1993    Mangalore              Yes
43    44    Chennai Petroleum Corporation  Oil and gas                 33187          20.0%                  927      Chennai              Yes
47    48                     Petronet LNG  Oil and gas                 30949          23.9%                 2110    New Delhi              Yes

 

   : 2개 이상의 조건이다. 아래와 같은 형식으로 조건을 추가하면된다.

and : (조건1) & (조건2)
 or : (조건1) | (조건2)

 

   : 아래 예제를 참고하자. info()에서 확인했듯이 숫자형 자료는 "Rank"와 "Revenue (in ₹ Crore)" 두개 뿐이다. 조건을 줄 때 이러한 정보를 확인해야 한다. 나머지는 data type이 object 였다. 필요시 추가로 가공해서 사용해야 한다.

print(df_archive[(df_archive['Industry']=="Oil and gas") & (df_archive['Revenue (in ₹ Crore)']<=100000)])


# 결과 #
    Rank                           Name     Industry  Revenue (in ₹ Crore) Revenue growth Profits (in ₹ Crore) Headquarters State Controlled
21    22                  Nayara Energy  Oil and gas                 73015          10.7%                  576       Mumbai              NaN
30    31                           GAIL  Oil and gas                 55503          11.6%                 4799    New Delhi              Yes
33    34                           MRPL  Oil and gas                 50209           8.9%                 1993    Mangalore              Yes
43    44  Chennai Petroleum Corporation  Oil and gas                 33187          20.0%                  927      Chennai              Yes
47    48                   Petronet LNG  Oil and gas                 30949          23.9%                 2110    New Delhi              Yes

 

pandas library 기초는 이정도로 마무리 하겠다. 추가적이 내용은 data 가공 및 활용을 하면서 필요시에 추가해 나가겠다.

 

 

'데이터 처리' 카테고리의 다른 글

2. matplotlib 기본 사용법  (0) 2024.07.22

2. 가상환경 설정 (Anaconda + VS code)를 참고해서 처음부터 2.02. 까지 진행한다.

 

1. 가상환경 활성화

 1.01. "Anaconda Prompt"를 검색해서 실행한다.

 1.02. 생성했던 "py38" 가상환경을 활성화 한다.

   "activate py38" 입력해서 py38을 활성화 한다.

 1.03. 가상환경에 ipykernel library를 설치한다.

   Jupyter notebook에서 우리가 만든 가상환경을 kernal로 사용하기 위해 ipykernel 이라는 library를 설치한다. "pip install ipykernel"을 입력한다.

1.04. kernal을 생성한다.

    "python -m ipykernel install --user --name 가상환경이름 --display-name 커널이름" 을 입력한다. 해당가상환경은 지정한 커널이름으로 jupyter notebook에서 선택이 가능하다.

 

2. Jupyter notebook에서 py38 가상환경 kernal 사용

 2.01. Jupyter notebook를 실행한다.

   "conda deactivate" 명령어를 입력해 가상환경을 빠져나오고 "python -m notebook" 명령어를 입력해서 jupyter notebook을 연다.

 2.02. notebook을 생성한다.

   우측 상단에 New 가 있다. 클릭해서 Folder 및 Notebook을 만들수 있다. File 생성하고 싶은 경로에서 Notebook을 만들자.

 

 2.03. kernel을 선택한다.

   Notebook을 생성하면 가장먼저 Kernel을 선택하는 창이 뜬다. 원하는 kernel을 선택하고 "Select"를 눌러 준다.

 

   우측 상단에 선택된 kernel을 확인 할 수 있다.

'기초문법' 카테고리의 다른 글

2. 가상환경 설정 (Anaconda + VS code)  (0) 2024.07.01
1. 가상환경 설정 (VS code)  (0) 2024.05.15

1. Anaconda 설치

 1.01. 브라우저에서 "anaconda" 검색 or "www.anaconda.com" 접속한다.

 1.02. 페이지 상단 "Products" → "Distribution" 선택한다.

 1.03. 운영체제에 맞는 프로그램 다운로드 후 설치한다. 시간이 오래 걸리니 인내심을 가지고 기다린다.



 

 

2. Anaconda 실행해서 가상환경 만들기.

 2.01. 아나콘다를 실행한다.

 2.02. Environments → Create → Name 입력 → 원하는 python 버전 선택 → "Create"

 2.03. Visual Studio Code 를 실행한다.

 2.04. 파일 생성후 [CTRL] + [SHIFT]+ [P]를 동시에 눌러 Interpreter로 py38로 선택한다.

 2.05. 새터미널을 열어서 "Command Prompt"로 들어가면 "py38" 가상환경을 실행할 수 있다.

 

'기초문법' 카테고리의 다른 글

3. 가상환경 설정 (Jupyter notebook)  (0) 2024.07.19
1. 가상환경 설정 (VS code)  (0) 2024.05.15

이메일 : jc.parvenu@daum.net

: 앞에서 진행한 '1-06. 텍스트 요약 (gensim 01)' 에서 이어진다.

 

3. gensim 실습01

 : 언어처리 model을 불러온다.

import gensim
model=gensim.models.Word2Vec.load('ko/ko.bin')

 

 : 1. 유사 단어 검색 및 2. 유사도 확인

1.
print(model.wv.most_similar("사람"))

# 결과 #
[('젊은이', 0.6494427919387817), ('여인', 0.6287257671356201), ('백성', 0.6063710451126099), 
('포졸', 0.6043275594711304), ('죄인', 0.5960500836372375), ('선비', 0.5868039131164551), 
('부녀자', 0.5654411315917969), ('죄수', 0.5639811754226685), ('구경꾼', 0.5620019435882568), 
('손님', 0.5589558482170105)]


2.
print(model.wv.similarity("사람","강아지"))

# 결과 #
0.23977639

 

: 텍스트 요약을 위해 genism에 대해 알아 보겠다.

 

1. gensim 이란?

 : 외부 라이브러리로 자연어 처리를 위해 사용하는 머신러닝 라이브러리다. 주제 모델링, 문서 인덱싱, 텍스트 유사성 찾기에 많이 사용 된다. 문서요약을 위해 summarization 모듈을 사용할 예정이다. 4.X이 버전을 설치해야 summarization 사용이 가능하다.

 

2. gensim 세팅

 : gensim 3.7.3 버전을 설치해서 사용할 예정이다. 아래 명령어를 terminal 창에 입력해서 gensim 을 설치한다.

pip install gensim==3.7.3

 

 아래 명령어를 입력해서 뜨는 list에서 설치가 제대로 됐는지 확인한다.

pip list

# 결과 #
Package    Version
---------- -------
gensim     3.7.3

https://github.com/Kyubyong/wordvectors 링크로 들어가서 ko.zip 파일을 다운 받아야한다. 링크로 들어가서 스크롤을 내리다보면 Korea(w) 가 보인다 click 하자

 

 Korea (w)를 누르면 아래와 같은 화면이 뜬다. 우측 상단에 다운로드 버튼을 클릭다.

 아래와 같은 창이 뜨면 "무시하고 다운로드" 를 클릭힌다. 파일을 현재 작업하는 python file이 있는 곳으로 옮기고 압축을 푼다.

 이제 gensim을 사용할 준비가 되었다. 다음 장에서 실습을 통해 문서요약을 진행해 보겠다.

 

 

 : 텍스트 요약을 위해 collections.Counter와 most_common에 대해 알아 보겠다.

 

1. collections 이란?

 : python의 범용 내장 컨테이너 dict, list, set, tuple에 대한 대안을 제공하는 특수 컨테이너로 데이터형을 구현해 준다. 우린 여기서 요소의 갯수를 확인 할 수 있는 collections.Counter()를 학습할 것이다.

 

2. collections 실습.

 : 1-03. 텍스트 요약(textwrap) 에서 사용했던 text 변수를 그대로 사용할 예정이다. text 변수에 저장된 문자열은 Link 의 기사를 복사해서 한 줄로 붙여 사용했다. '1.02. textwrap 실습' 첫 내용을 확인하면 된다. 또한 이번 실습은 '1-04. 텍스트 요약 (re)'의 내용을 포함한다.

 

2.01. collections.Counter()

 : collectinos.Counter를 사용하면 리스트나 문자열과 같은 자료형 data에서 같은 요소의 갯수를 확인 할 수 있다. 이제 실습을 진행해 보자. re.findall을 사용해 word에 모든 단어를 저장한다. 이 변수를 collectino.Counter 에 넣으면, 각 단어의 갯수를 확인 할 수 있다. 아래 결과에서 보면 형식은 dictionary이며, '0'은 16번 '5'는 7번과 같이 각 단어의 갯수를 확인 할 수 있다. 많이 등장했던 단어 순서대로 나열된다.

import collections
import textwrap
import re

word = re.findall(r'\w+', text)
counter = collections.Counter(word)
print(counter)

# 결과 #
Counter({'0': 16, '5': 7, '50': 7, '4': 7, '이후': 7, '2': 7, '25': 6, '1': 6, '3': 6, 
'수': 6, '기준금리를': 5, '로': 5, '금리': 5, '올해': 5, '있다': 5, '지난해': 5, 
'선제적으로': 4, '금리를': 4, '기준금리': 4, '포인트': 4, '5월': 4, '4분기': 3, '부채': 3, 
'성장률': 3, '한은이': 3, '물가': 3, '환율': 3, '셈이다': 3, '을': 3, '차례': 3, '에서': 3, 
'만에': 3, '다시': 3, '9': 3, '연속': 3, '연': 3, '2022년': 3, '여전히': 3, '6': 3, '분기': 3, 
'고': 3, '우리나라는': 2, '전망이': 2, '비교적': 2, '증가세가': 2, '것으로': 2, '대에': 2, 
'있는': 2, '과감하게': 2, '인하할': 2, '유인이': 2, '연준은': 2, '11': 2, '현지시간': 2, 
'열린': 2, 'FOMC': 2, '이날': 2, '수준': 2, '10': 2, '3월': 2, '높은': 2, '가운데': 2, 
'이에': 2, '연말에': 2, '7월': 2, '이어': 2, '반면': 2, '유럽은': 2, '은': 2, '물가가': 2, 
'작년': 2, '유로존': 2, '를': 2, '일부': 2, '것이다': 2, '여기에': 2, '유럽': 2, 
'전망치는': 2, '보기': 2, '상승률': 2, '가장': 2, '1분기': 2, '않은': 2, '않다': 2, '며': 2, 
'유럽과': 1, '캐나다가': 1, '내렸지만': 1, '이후에 나': 1, '통화정책': 1, '전환이': 1, 
'가능할': 1, '것이란': 1, '지배적이다': 1, '양호한': 1, '경제': 1, '성장률과': 1, 
'꺾이지': 1, '않는': 1, '영향': 1, '등이': 1, '미친': 1, '분석된다': 1, '머무르고': 1, 
'유럽과는': 1, '상황이': 1, '다르다': 1, '불안을': 1, '감수하고서': 1, '적은': 1, 
'12일': 1, '연방공개시장위원회': 1, '정례회의에서': 1, '목표': 1, '범위를': 1, '동결했다': 1, 
'공개된': 1, '새': 1, '점도표': 1, '위원들의': 1, '향후': 1, '전망을': 1, '표시한': 1, 
'도표': 1, '에서는': 1, '말': 1, '전망치': 1, '중간값은': 1, '이었다': 1, '지난': 1, 
'회의': 1, '당시의': 1, '60': 1, ' 보다': 1, '수준이다': 1, '현재': 1, '고려할': 1, '때': 1, 
'연내': 1, '인하': 1, '예상': 1, '횟수가': 1, '세': 1, '포인트씩': 1, '한': 1, '가량으로': 1, 
'줄어든': 1, '위원': 1, '19명': 1, '4명은': 1, '아예': 1, '인하가': 1, '없을': 1, 
'봤다': 1, '시장이': 1, '기대하는': 1, '연준': 1, '피벗': 1, '시점도': 1, '당초': 1, 
'9월에서': 1, '가까운': 1, '11월': 1, '또는': 1, '12월로': 1, '늦춰지고': 1, '앞서': 1, 
'6월': 1, '약': 1, '15개월': 1, ' 인상을': 1, '멈췄다가': 1, '베이비스텝': 1, 
'밟았지만': 1, '12월과': 1, '5월에': 1, '이번까지': 1, '일곱': 1, '묶었다': 1, 
'인하했다': 1, '유럽중앙은행': 1, 'ECB': 1, '6일': 1, '하향조정했다': 1, 'ECB는': 1, 
'독일': 1, '프랑크푸르트에서': 1, '통화정책이사회를': 1, '열어': 1, '수신금리와': 1, 
'한계대출금리는': 1, '각각': 1, '75': 1, '내렸다고': 1, '밝혔다': 1, '올리는': 1, 
'빅스텝': 1, '밟으며': 1, '금리인상을': 1, '시작한': 1, '1년': 1, '11개월': 1, 
'만의': 1, '방향': 1, '전환이다': 1, '코로나19': 1, '팬데믹': 1, '양적완화': 1, 
'등': 1, '영향으로': 1, '급등하자': 1, '7월부터': 1, '9월까지': 1, '10차례': 1, 
'올렸다': 1, '9월': 1, '는': 1, '1999년': 1, '출범': 1, '이래': 1, '최고치였다': 1, 
'연말': 1, '넘긴': 1, '유로존의': 1, '전년': 1, '대비': 1, '소비자물가': 1, '상승률은': 1, 
'10월부터': 1, '머물면서': 1, '목표치인': 1, '에': 1, '근접했다': 1, '안정세에': 1, 
'접어든': 1, '내': 1, '각국': 1, '경기침체': 1, '우려도': 1, '가시지': 1, '않자': 1, 
'선제적인': 1, '인하를': 1, '감행했다': 1, '상향됐지만': 1, '대다': 1, '최근': 1, 
'경제성장률': 1, '기존': 1, '내년': 1, '전망은': 1, '수정됐다': 1, '아직': 1, '안정세가': 1, 
'완연하다고': 1, '힘들다': 1, '소비자물가지수': 1, '전년동월대비': 1, '대에서': 1, '대': 1, 
'후반': 1, '4월': 1, '7': 1, '으로': 1, '내려왔지만': 1, '농산물': 1, '물가는': 1, '19': 1, 
'나': 1, '치솟고': 1, '석유류': 1, '도': 1, '1월': 1, '최고': 1, '수준을': 1, '기록했다': 1, 
'가계대출': 1, '증가세도': 1, '강해지고': 1, '가계대출은': 1, '주택': 1, '거래': 1, 
'증가와': 1, '함께': 1, '6조원이나': 1, '또': 1, '불었다': 1, '10월': 1, '6조7000억원': 1, 
'7개월': 1, '큰': 1, '증가': 1, '폭이다': 1, '성장률도': 1, '견조하다': 1, '한국은행은': 1, 
'실질': 1, '국내총생산': 1, 'GDP': 1, '직전분기대비': 1, '잠정치': 1, '이': 1, 
'집계됐 다고': 1, '발표했다': 1, '2021년': 1, '2년': 1, '3개월': 1, '성장률이다': 1, 
'성장률은': 1, '반등한': 1, '뒤': 1, '2분기': 1, '3분기': 1, '8': 1, '와': 1, 
'1분기까지': 1, '다섯': 1, '플러스': 1, '성장': 1, '기조를': 1, '유지했다': 1, 
'물가와': 1, '가계부채': 1, '완전하게': 1, '잡히지': 1, '성 장률이': 1, '견조한': 1, 
'환율까지': 1, '1300원대': 1, '후반에서': 1, '내려오지': 1, '않고': 1, '통화정책을': 1, 
'전환하기': 1, '위한': 1, '필요조 건이': 1, '대부분': 1, '충족되지': 1, '미국보다': 1, 
'포인트나': 1, '낮은': 1, '유지하고': 1, '불안까지': 1, '감수하고': 1, '인하에': 1, 
'나설': 1, '크지': 1, '이창용': 1, '한은': 1, '총재은': 1, '지난달': 1, '23일': 1, 
'금융통화위원회': 1, '직후': 1, '기자간담회에서': 1, '미국의': 1, '경제정 책으로': 1, 
'인한': 1, '환율의': 1, '변화나': 1, '자본의': 1, '이동': 1, '가능성이': 1, '크다': 1, 
'강조했다': 1, '학계의': 1, '시각도': 1, '비슷하다': 1, '김상봉': 1, '한성대': 1, 
'경제학과': 1, '교수는': 1, '미국도': 1, '한번': 1, '정도': 1, '내릴': 1, '있을지': 1, 
'없을지': 1, '모르는': 1, '상황에서': 1, '우리나라가': 1, '있다고': 1, '어렵다': 1, 
'상황을': 1, '보면': 1, '알': 1, '말했다': 1, '우리나라': 1, '인하는': 1, '내년까지': 1, 
'미뤄질': 1, '있고': 1, '사람들이': 1, '생각하는': 1, '것과는': 1, '매우': 1, '다른': 1, 
'양상으로': 1, '전개될': 1, '고금리라고': 1, '하지만': 1, '대출은': 1, '늘고': 1, 
'있기': 1, '때문에': 1, '금리가': 1, '곧': 1, '저금리로': 1, '갈': 1, '있단': 1, 
'생각은': 1, '옳지': 1, '덧붙였다': 1})

 

 : 형식이 dictionary 이기 때문에 연산이 가능하다. 아래 code를 참고 하자.

word_a = collections.Counter(['a','b','c','d','d','e','f','c'])
word_b = collections.Counter(['a','c','d','k','j','e','z','y'])
print(word_a)
print(word_b)
print(word_a + word_b)
print(word_a - word_b)
print(word_a & word_b)
print(word_a | word_b)

# 결과 #
Counter({'c': 2, 'd': 2, 'a': 1, 'b': 1, 'e': 1, 'f': 1})
Counter({'a': 1, 'c': 1, 'd': 1, 'k': 1, 'j': 1, 'e': 1, 'z': 1, 'y': 1})
Counter({'c': 3, 'd': 3, 'a': 2, 'e': 2, 'b': 1, 'f': 1, 'k': 1, 'j': 1, 'z': 1, 'y': 1})
Counter({'b': 1, 'c': 1, 'd': 1, 'f': 1})
Counter({'a': 1, 'c': 1, 'd': 1, 'e': 1})
Counter({'c': 2, 'd': 2, 'a': 1, 'b': 1, 'e': 1, 'f': 1, 'k': 1, 'j': 1, 'z': 1, 'y': 1})

 

2.02. most_common()

 : 상위 빈도수 단어를 추출할 수 있는 함수이다. 아래 실습은 상위 빈도수 20개를 추출해 준다.

most_com = counter.most_common(20)
print(most_com)

# 결과 #
[('0', 16), ('5', 7), ('50', 7), ('4', 7), ('이후', 7), ('2', 7), ('25', 6), ('1', 6), 
('3', 6), ('수', 6), ('기준금리를', 5), ('로', 5), ('금리', 5), ('올해', 5), ('있다', 5), 
('지난해', 5), ('선제적으로', 4), ('금리를', 4), ('기준금리', 4), ('포인트', 4)]

 

 

 

'업무자동화' 카테고리의 다른 글

1-07. 텍스트 요약 (gensim 02)  (0) 2024.06.19
1-06. 텍스트 요약 (gensim 01)  (0) 2024.06.19
1-04. 텍스트 요약 (re)  (0) 2024.06.17
1-03. 텍스트 요약 (textwrap)  (0) 2024.06.16
1-02. 텍스트 요약 (Binary와 Base64)  (1) 2024.06.10

 

 : 텍스트 요약을 위해 re 에 대해 알아 보겠다.

1. re 란?

 : 정규표현식(Reular Expression)은 문자열을 처리할 때 사용하는 라이브러리로, python, c, 자바, 문서작성 프로그램등 에서 활용된다. 특정 문자열을 추출하거나 변환할 수 있다.

 

2. re 실습.

 : 1-03. 텍스트 요약(textwrap) 에서 사용했던 text 변수를 그래도 사용할 예정이다. text 변수에 저장된 문자열은 Link 의 기사를 복사해서 한 줄로 붙여 사용했다. '1.02. textwrap 실습' 첫 내용을 확인하면 된다.

 

2.01. re.findall()

 : findall()은 문자열에서 조건에 맞춰 추출하는 함수이다. 첫번째 '\w+' 인자를 넣어 단어를 추출한다. 띄어쓰기를 인식해서 나눠준다. 두번째 인자는 변수를 넣으면 된다. 결과는 list 형식으로 저장된다.

import re

findall_word = re.findall(r'\w+', text)
print(findall_word)

# 결과 #
['유럽과', '캐나다가', '선제적으로', '기준금리를', '내렸지만', '우리나라는', '4분기', '이후에나', '통화정책', '전환이', '가능할', '것이란', '전망이', '지배적이다', '비교적', '양호한', '경제', '성장률과', '꺾이지', '않는', '부채', '증가세가', '영향', '등이', '미친', '것으로', '분석된다', '성장 률', '전망이', '0', '대에', '머무르고', '있는', '유럽과는', '상황이', '다르다', '한은이', '물가', '환율', '부채', '불안을', '감수하고서', '과감하게', '선제적으로', '금리를', '인하할', '유인이', '적은', '셈이다', '연준은', '11', '12일', '현지시간', '열린', '연방공개시장위원회', 'FOMC', '정례회 의에서', '기준금리', '목표', '범위를', '5', '25', '5', '50', '로', '동결했다', '이날', '공개된', '새', '점도표', 'FOMC', '위원들의', '향후', '금리', '수준', '전망을', '표시한', '도표', '에서는', '올해', '말', '금리', '전망치', '중간값은', '5', '10', '이었다', '지난', '3월', '회의', '당시의', '4', '60', '보다', '0', '50', '포인트', '높은', '수준이다', '현재', '금리', '수준', '5', '25', '5', '50', '을', '고려할', '때', '연내', '인하', '예 상', '횟수가', '세', '차례', '0', '25', '포인트씩', '에서', '한', '차례', '가량으로', '줄어든', '셈이다', '위원', '19명', '가운데', '4명은', '아예', '올해', '인하가', '없을', '것으로', '봤다', '이에', '시장이', '기대하는', '연준', '피벗', '시점도', '당초', '9월에서', '연말에', '가까운', '11월', '또는', '12월로', '늦춰지고', '있다', '연준은', '앞서', '지난해', '6월', '약', '15개월', '만에', '금리', '인상을', '멈췄다가', '7월', '다시', '베이비스텝', '0', '25', '포인트', '을', '밟았지만', '이후', '9', '11', '12월과', '올해', '1', '3', '5월에', '이어', '이번까지', '일곱', '차례', '연속', '금리를', '묶었다', '반면', '유럽은', '선제적으로', '금리를', '인하했다', '유럽중앙은행', 'ECB', '은', '6일', '현지시간', '기준금리를', '0', '25', '포인트', '하향조정했다', 'ECB는', '이날', '독일', '프랑크푸르트에서', '통화정책이사회를', '열어', '기준금리를', '연', '4', '25', '수신금리와', '한계대출금리는', '각각', '연', '3', '75', '연', '4', '50', '로', '내렸다고', '밝혔다', '기준금리를', '0', '50', '포인트', '올리는', '빅스텝', '을', '밟으며', '금리인상을', '시작한', '2022년', '7월', '이후', '1년', '11개월', '만의', '방향', '전환이다', '유럽은', '코로나19', '팬데믹', '이후', '양적완화', '등', '영향으로', '물가가', '급등하자', '2022년', '7월부터', '지난해', '9월까지', '10차례', '연속', '금리를', '올렸다', '작년', '9월', '이후', '기준금리', '4', '50', '는', '1999년', '유로존', '출범', '이래', '최고치였다', '이에', '2022년', '연말', '10', '를', '넘긴', '유로존의', '전년', '대비', '소비자물가', '상승률은', '지난해', '10월부터', '2', '대에', '머물면서', '목표치인', '2', '0', '에', '근접했다', '물가가', '일부', '안정세에', '접어든', '것이다', '여기에', '유럽', '내', '각국', '경기침체', '우려도', '가시지', '않자', '선제적인', '인하를', '감행했다', '유럽', '성 장률', '전망치는', '일부', '상향됐지만', '여전히', '0', '대다', '최근', '올해', '유로존', '경제성장률', '전망치는', '기존', '0', '6', '에서', '0', '9', '로', '내년', '전망은', '1', '5', '에서', '1', '4', '로', '수정됐다', '반면', '우리나라는', '아직', '물가', '안정세가', '완연하다고', '보기', '힘들다', '소비자물가지수', '상승률', '전년동월대비', '은', '2', '3월', '3', '대에서', '4', '5월', '2', '대', '후반', '4월', '2', '9', '5월', '2', '7', '으로', '내려왔지만', '5월', '농산물', '물가는', '19', '0', '나', '치솟고', '석유류', '상승률', '3', '1', '도', '작년', '1월', '이후', '최고', '수준을', '기록했다', '가계대출', '증가세도', '다시', '강해지고', '있다', '5월', '가계대출은', '주택', '거래', '증가와', '함께', '6조원이나', '또', '불었다', '지난해', '10월', '6조7000억원', '이후', '7개월', '만에', '가장', '큰', '증가', '폭이다', '성장률도', '비교적', '견조하다', '한국은행은', '1분기', '실질', '국내총생산', 'GDP', '성장률', '직전분기대비', '잠정치', '이', '1', '3', '로', '집계됐다고', '발표했다', '2021년', '4분기', '1', '6', '이후', '2년', '3개월', '만에', '가장', '높은', '분기', '성장률이다', '분기', '성장률은', '지난해', '1분기', '0', '4', '반등한', '뒤', '2분 기', '0', '6', '3분기', '0', '8', '4분기', '0', '5', '와', '올해', '1분기까지', '다섯', '분기', '연속', '플러스', '성장', '기조를', '유지했다', '물가와', '가계부채', '증가세가', '완전하게', '잡히지', '않은', '가운데', '성장률이', '견조한', '것이다', '여기에', '환율까지', '1300원대', '후반에서', '내려오지', '않고', '있다', '한은이', '통화정책을', '전환하기', '위한', '필요조건이', '대부분', '충족되지', '않은', '셈이다', '미국보다', '2', '0', '포인트나', '낮은', '기준금리', '3', '50', '를', '유지하고', '있는', '한은이', '물가', '부채', '환율', '불안까지', '감수하고', '선제적으로', '금리', '인하에', '과감하게', '나설', '유인이', '크지', '않다', '이창용', '한은', '총재은', '지난달', '23일', '금융통화위원회', '직후', '열린', '기자 간담회에서', '여전히', '미국의', '경제정책으로', '인한', '환율의', '변화나', '자본의', '이동', '가능성이', '크다', '고', '강조했다', '학계의', '시 각도', '비슷하다', '김상봉', '한성대', '경제학과', '교수는', '미국도', '연말에', '한번', '정도', '내릴', '수', '있을지', '없을지', '모르는', '상황 에서', '우리나라가', '기준금리를', '인하할', '수', '있다고', '보기', '어렵다', '며', '환율', '상황을', '보면', '알', '수', '있다', '고', '말했다', '이어', '우리나라', '기준금리', '인하는', '내년까지', '미뤄질', '수', '있고', '사람들이', '생각하는', '것과는', '매우', '다른', '양상으로', '전개될', '수', '있다', '며', '고금리라고', '하지만', '여전히', '대출은', '늘고', '있기', '때문에', '금리가', '곧', '다시', '저금리로', '갈', '수', '있단', '생각은', '옳지', '않다', '고', '덧붙였다']

 

 : 다음은 숫자가 숫자만 찾아보겠다. 숫자를 의미하는 구분자는 '\d+' 이다.

findall_num = re.findall('(\d+)', text)
print(findall_num)

# 결과 #
['4', '0', '11', '12', '5', '25', '5', '50', '5', '10', '3', '4', '60', '0', '50', '5', '25', '5', '50', '0', '25', '19', '4', '9', '11', '12', '6', '15', '7', '0', '25', '9', '11', '12', '1', '3', '5', '6', '0', '25', '4', '25', '3', '75', '4', '50', '0', '50', '2022', '7', '1', '11', '19', '2022', '7', '9', '10', '9', '4', '50', '1999', '2022', '10', '10', '2', '2', '0', '0', '0', '6', '0', '9', '1', '5', '1', '4', '2', '3', '3', '4', '5', '2', '4', '2', '9', '5', '2', '7', '5', '19', '0', '3', '1', '1', '5', '6', '10', '6', '7000', '7', '1', '1', '3', '2021', '4', '1', '6', '2', '3', '1', '0', '4', '2', '0', '6', '3', '0', '8', '4', '0', '5', '1', '1300', '2', '0', '3', '50', '23']

 

 : 숫자로 시작하는 단어를 추출하겠다.

findall_num = re.findall('\d\w+', text)
print(findall_num)

# 결과 #
['4분기', '11', '12일', '25', '50', '10', '3월', '60', '50', '25', '50', '25', '19명', '4명은', '9월에서', '11월', '12월로', '6월', '15개월', '7월', '25', '11', '12월과', '5월에', '6일', '25', '25', '75', '50', '50', '2022년', '7월', '1년', '11개월', '19', '2022년', '7월부터', '9월까지', '10차례', '9월', '50', '1999년', '2022년', '10', '10월부터', '3월', '5월', '4월', '5월', '5월', '19', '1월', '5월', '6조원이나', '10월', '6조7000억원', '7개월', '1분기', '2021년', '4분기', '2년', '3개월', '1분기', '2분기', '3분기', '4분기', '1분기까지', '1300원대', '50', '23일']

 

이렇게 조건에 따라 원하는 문자를 추출할 수 있다.

 

2.02. re.compile()

 : compile()은 문자열을 변환하는 함수이다. 위에 text에서 숫자를 '***'로 마스킹 해보겠다. 보기 편하게 하기 위해 ' 1-03. 텍스트 요약(textwrap)' 에서 사용했 "textwrap.fill()"함수도 함께 사용하겠다.

import textwrap

re_compile = re.compile('\d+')
masking_text = re_compile.sub("***", text)
print(textwrap.fill(masking_text, width=50))

# 결과 #
유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 ***분기 이후에나 통화정책
전환이 가능할 것이란 전망이 지배적이다. 비교적 양호한 경제 성장률과 꺾이지 않는 부채
증가세가 영향 등이 미친 것으로 분석된다. 성장률 전망이 ***%대에 머무르고 있는
유럽과는 상황이 다르다. 한은이 물가·환율·부채 불안을 감수하고서 과감하게 선제적으로
금리를 인하할 유인이 적은 셈이다. 연준은 ***∼***일(현지시간) 열린
연방공개시장위원회(FOMC) 정례회의에서 기준금리 목표 범위를
***.***∼***.***%로 동결했다. 이날 공개된 새 점도표(FOMC 위원들의 향후
금리 수준 전망을 표시한 도표)에서는 올해 말 금리 전망치 중간값은 ***.***%이었다.
지난 ***월 회의 당시의 ***.***%보다 ***.***%포인트 높은 수준이다. 현재
금리 수준(***.***∼***.***%)을 고려할 때 연내 인하 예상 횟수가 세
차례(***.***%포인트씩)에서 한 차례 가량으로 줄어든 셈이다. 위원 ***명 가운데
***명은 아예 올해 인하가 없을 것으로 봤다. 이에 시장이 기대하는 연준 피벗 시점도
당초 ***월에서 연말에 가까운 ***월 또는 ***월로 늦춰지고 있다. 연준은 앞서
지난해 ***월 약 ***개월 만에 금리 인상을 멈췄다가 ***월 다시
베이비스텝(***.***%포인트)을 밟았지만, 이후 ***·***·***월과 올해
***·***·***월에 이어 이번까지 일곱 차례 연속 금리를 묶었다. 반면 유럽은
선제적으로 금리를 인하했다. 유럽중앙은행(ECB)은 ***일(현지시간) 기준금리를
***.***%포인트 하향조정했다. ECB는 이날 독일 프랑크푸르트에서 통화정책이사회를
열어 기준금리를 연 ***.***%, 수신금리와 한계대출금리는 각각 연 ***.***%,
연 ***.***%로 내렸다고 밝혔다. 기준금리를 ***.***%포인트 올리는 '빅스텝'을
밟으며 금리인상을 시작한 ***년 ***월 이후 ***년 ***개월 만의 방향 전환이다.
유럽은 코로나*** 팬데믹 이후 양적완화 등 영향으로 물가가 급등하자 ***년 ***월부터
지난해 ***월까지 ***차례 연속 금리를 올렸다. 작년 ***월 이후 기준금리
***.***%는 ***년 유로존 출범 이래 최고치였다. 이에 ***년 연말 ***%를
넘긴 유로존의 전년 대비 소비자물가 상승률은 지난해 ***월부터 ***%대에 머물면서
목표치인 ***.***%에 근접했다. 물가가 일부 안정세에 접어든 것이다. 여기에 유럽 내
각국 경기침체 우려도 가시지 않자 선제적인 인하를 감행했다. 유럽 성장률 전망치는 일부
상향됐지만, 여전히 ***%대다. 최근 올해 유로존 경제성장률 전망치는 기존
***.***%에서 ***.***%로, 내년 전망은 ***.***%에서 ***.***%로
수정됐다. 반면 우리나라는 아직 물가 안정세가 완연하다고 보기 힘들다. 소비자물가지수
상승률(전년동월대비)은 ***∼***월 ***%대에서 ***∼***월 ***%대
후반(***월 ***.***%·***월 ***.***%)으로 내려왔지만, ***월 농산물
물가는 ***.***%나 치솟고 석유류 상승률(***.***%)도 작년 ***월 이후 최고
수준을 기록했다. 가계대출 증가세도 다시 강해지고 있다. ***월 가계대출은 주택 거래
증가와 함께 ***조원이나 또 불었다. 지난해 ***월(+***조***억원) 이후
***개월 만에 가장 큰 증가 폭이다. 성장률도 비교적 견조하다. 한국은행은 ***분기
실질 국내총생산(GDP) 성장률(직전분기대비·잠정치)이 ***.***%로 집계됐다고
발표했다. ***년 ***분기(***.***%) 이후 ***년 ***개월 만에 가장 높은
분기 성장률이다. 분기 성장률은 지난해 ***분기(***.***%) 반등한 뒤
***분기(***.***%), ***분기(***.***%), ***분기(***.***%)와
올해 ***분기까지 다섯 분기 연속 플러스(+) 성장 기조를 유지했다. 물가와 가계부채
증가세가 완전하게 잡히지 않은 가운데 성장률이 견조한 것이다. 여기에 환율까지 ***원대
후반에서 내려오지 않고 있다. 한은이 통화정책을 전환하기 위한 필요조건이 대부분 충족되지
않은 셈이다. 미국보다 ***.***%포인트나 낮은 기준금리(***.***%)를 유지하고
있는 한은이 물가·부채·환율 불안까지 감수하고 선제적으로 금리 인하에 과감하게 나설 유인이
크지 않다. 이창용 한은 총재은 지난달 ***일 금융통화위원회 직후 열린 기자간담회에서
“여전히 미국의 경제정책으로 인한 환율의 변화나 자본의 이동 가능성이 크다”고 강조했다.
학계의 시각도 비슷하다. 김상봉 한성대 경제학과 교수는 “미국도 연말에 한번 정도 내릴 수
있을지 없을지 모르는 상황에서 우리나라가 기준금리를 인하할 수 있다고 보기 어렵다”며
“환율 상황을 보면 알 수 있다”고 말했다. 이어 “우리나라 기준금리 인하는 내년까지
미뤄질 수 있고, 사람들이 생각하는 것과는 매우 다른 양상으로 전개될 수 있다”며
“고금리라고 하지만 여전히 대출은 늘고 있기 때문에 금리가 곧 다시 저금리로 갈 수 있단
생각은 옳지 않다”고 덧붙였다.

 

compile의 경우 개인정보를 마스킹할 때 유용하게 사용할 수 있다.

 

 

 

: 텍스트 요약을 위해 textwrap 활용 방법을 알아 보겠다.

 

1. textwrap 란?

  • 문자열을 보기 좋은 형태로 정렬하거나 줄바꿈하는데 사용하는 라이브러리 이다.
  • 자주 쓰는 함수
    • 긴 문장 자르 : textwrap.shorten()
    • 긴 문장 나누기 : textwrap.wrap()
    • 긴 문장 줄 바꿈 : textwrap.fill()

실습을 위해 인터넷 신문의 기사 중 하나를 골라 Text만 가져 온다.

아래 실습에 사용한 기사 Link

 

2. textwrap 실습.

 : 실습에 앞서 textwrap를 import 하고 text 변수에 위에 Link에서 가져온 기사를 한 줄로 넣어 저장한다.

import textwrap
text = "유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 4분기 이후에나 통화정책 전환이 가능할 것이란 전망이 지배적이다. 비교적 양호한 경제 성장률과 꺾이지 않는 부채 증가세가 영향 등이 미친 것으로 분석된다. 성장률 전망이 0%대에 머무르고 있는 유럽과는 상황이 다르다. 한은이 물가·환율·부채 불안을 감수하고서 과감하게 선제적으로 금리를 인하할 유인이 적은 셈이다. 연준은 11∼12일(현지시간) 열린 연방공개시장위원회(FOMC) 정례회의에서 기준금리 목표 범위를 5.25∼5.50%로 동결했다. 이날 공개된 새 점도표(FOMC 위원들의 향후 금리 수준 전망을 표시한 도표)에서는 올해 말 금리 전망치 중간값은 5.10%이었다. 지난 3월 회의 당시의 4.60%보다 0.50%포인트 높은 수준이다. 현재 금리 수준(5.25∼5.50%)을 고려할 때 연내 인하 예상 횟수가 세 차례(0.25%포인트씩)에서 한 차례 가량으로 줄어든 셈이다. 위원 19명 가운데 4명은 아예 올해 인하가 없을 것으로 봤다. 이에 시장이 기대하는 연준 피벗 시점도 당초 9월에서 연말에 가까운 11월 또는 12월로 늦춰지고 있다. 연준은 앞서 지난해 6월 약 15개월 만에 금리 인상을 멈췄다가 7월 다시 베이비스텝(0.25%포인트)을 밟았지만, 이후 9·11·12월과 올해 1·3·5월에 이어 이번까지 일곱 차례 연속 금리를 묶었다. 반면 유럽은 선제적으로 금리를 인하했다. 유럽중앙은행(ECB)은 6일(현지시간) 기준금리를 0.25%포인트 하향조정했다. ECB는 이날 독일 프랑크푸르트에서 통화정책이사회를 열어 기준금리를 연 4.25%, 수신금리와 한계대출금리는 각각 연 3.75%, 연 4.50%로 내렸다고 밝혔다. 기준금리를 0.50%포인트 올리는 '빅스텝'을 밟으며 금리인상을 시작한 2022년 7월 이후 1년 11개월 만의 방향 전환이다. 유럽은 코로나19 팬데믹 이후 양적완화 등 영향으로 물가가 급등하자 2022년 7월부터 지난해 9월까지 10차례 연속 금리를 올렸다. 작년 9월 이후 기준금리 4.50%는 1999년 유로존 출범 이래 최고치였다. 이에 2022년 연말 10%를 넘긴 유로존의 전년 대비 소비자물가 상승률은 지난해 10월부터 2%대에 머물면서 목표치인 2.0%에 근접했다. 물가가 일부 안정세에 접어든 것이다. 여기에 유럽 내 각국 경기침체 우려도 가시지 않자 선제적인 인하를 감행했다. 유럽 성장률 전망치는 일부 상향됐지만, 여전히 0%대다. 최근 올해 유로존 경제성장률 전망치는 기존 0.6%에서 0.9%로, 내년 전망은 1.5%에서 1.4%로 수정됐다. 반면 우리나라는 아직 물가 안정세가 완연하다고 보기 힘들다. 소비자물가지수 상승률(전년동월대비)은 2∼3월 3%대에서 4∼5월 2%대 후반(4월 2.9%·5월 2.7%)으로 내려왔지만, 5월 농산물 물가는 19.0%나 치솟고 석유류 상승률(3.1%)도 작년 1월 이후 최고 수준을 기록했다. 가계대출 증가세도 다시 강해지고 있다. 5월 가계대출은 주택 거래 증가와 함께 6조원이나 또 불었다. 지난해 10월(+6조7000억원) 이후 7개월 만에 가장 큰 증가 폭이다. 성장률도 비교적 견조하다. 한국은행은 1분기 실질 국내총생산(GDP) 성장률(직전분기대비·잠정치)이 1.3%로 집계됐다고 발표했다. 2021년 4분기(1.6%) 이후 2년 3개월 만에 가장 높은 분기 성장률이다. 분기 성장률은 지난해 1분기(0.4%) 반등한 뒤 2분기(0.6%), 3분기(0.8%), 4분기(0.5%)와 올해 1분기까지 다섯 분기 연속 플러스(+) 성장 기조를 유지했다. 물가와 가계부채 증가세가 완전하게 잡히지 않은 가운데 성장률이 견조한 것이다. 여기에 환율까지 1300원대 후반에서 내려오지 않고 있다. 한은이 통화정책을 전환하기 위한 필요조건이 대부분 충족되지 않은 셈이다. 미국보다 2.0%포인트나 낮은 기준금리(3.50%)를 유지하고 있는 한은이 물가·부채·환율 불안까지 감수하고 선제적으로 금리 인하에 과감하게 나설 유인이 크지 않다. 이창용 한은 총재은 지난달 23일 금융통화위원회 직후 열린 기자간담회에서 “여전히 미국의 경제정책으로 인한 환율의 변화나 자본의 이동 가능성이 크다”고 강조했다. 학계의 시각도 비슷하다. 김상봉 한성대 경제학과 교수는 “미국도 연말에 한번 정도 내릴 수 있을지 없을지 모르는 상황에서 우리나라가 기준금리를 인하할 수 있다고 보기 어렵다”며 “환율 상황을 보면 알 수 있다”고 말했다. 이어 “우리나라 기준금리 인하는 내년까지 미뤄질 수 있고, 사람들이 생각하는 것과는 매우 다른 양상으로 전개될 수 있다”며 “고금리라고 하지만 여전히 대출은 늘고 있기 때문에 금리가 곧 다시 저금리로 갈 수 있단 생각은 옳지 않다”고 덧붙였다."
print(text)

# 결과 #
유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 4분기 이후에나 통화정책 전환이 가능할 것이란 전망이 지배적이다. 비교적 양호한 경제 성장
률과 꺾이지 않는 부채 증가세가 영향 등이 미친 것으로 분석된다. 성장률 전망이 0%대에 머무르고 있는 유럽과는 상황이 다르다. 한은이 물가·환율·부채 불
안을 감수하고서 과감하게 선제적으로 금리를 인하할 유인이 적은 셈이다. 연준은 11∼12일(현지시간) 열린 연방공개시장위원회(FOMC) 정례회의에서 기준금리 목표 범위를 5.25∼5.50%로 동결했다. 이날 공개된 새 점도표(FOMC 위원들의 향후 금리 수준 전망을 표시한 도표)에서는 올해 말 금리 전망치 중간값은 5.10%
이었다. 지난 3월 회의 당시의 4.60%보다 0.50%포인트 높은 수준이다. 현재 금리 수준(5.25∼5.50%)을 고려할 때 연내 인하 예상 횟수가 세 차례(0.25%포인트 씩)에서 한 차례 가량으로 줄어든 셈이다. 위원 19명 가운데 4명은 아예 올해 인하가 없을 것으로 봤다. 이에 시장이 기대하는 연준 피벗 시점도 당초 9월에 서 연말에 가까운 11월 또는 12월로 늦춰지고 있다. 연준은 앞서 지난해 6월 약 15개월 만에 금리 인상을 멈췄다가 7월 다시 베이비스텝(0.25%포인트)을 밟았지만, 이후 9·11·12월과 올해 1·3·5월에 이어 이번까지 일곱 차례 연속 금리를 묶었다. 반면 유럽은 선제적으로 금리를 인하했다. 유럽중앙은행(ECB)은 6일( 현지시간) 기준금리를 0.25%포인트 하향조정했다. ECB는 이날 독일 프랑크푸르트에서 통화정책이사회를 열어 기준금리를 연 4.25%, 수신금리와 한계대출금 리는 각각 연 3.75%, 연 4.50%로 내렸다고 밝혔다. 기준금리를 0.50%포인트 올리는 '빅스텝'을 밟으며 금리인상을 시작한 2022년 7월 이후 1년 11개월 만 의 방향 전환이다. 유럽은 코로나19 팬데믹 이후 양적완화 등 영향으로 물가가 급등하자 2022년 7월부터 지난해 9월까지 10차례 연속 금리를 올렸다. 작년 9 월 이후 기준금리 4.50%는 1999년 유로존 출범 이래 최고치였다. 이에 2022년 연말 10%를 넘긴 유로존의 전년 대비 소비자물가 상승률은 지난해 10월부터 2%대에 머물면서 목표치인 2.0%에 근접했다. 물가가 일부 안정세에 접어든 것이다. 여기에 유럽 내 각국 경기침체 우려도 가시지 않자 선제적인 인하를 감행했다. 유럽 성장률 전망치는 일부 상향됐지만, 여전히 0%대다. 최근 올해 유로존 경제성장률 전망치는 기존 0.6%에서 0.9%로, 내년 전망은 1.5%에서 1.4%로 수정됐다. 반면 우리나라는 아직 물가 안정세가 완연하다고 보기 힘들다. 소비자물가지수 상승률(전년동월대비)은 2∼3월 3%대에서 4∼5월 2%대 후반(4월 2.9%·5월 2.7%)으로 내려왔지만, 5월 농산물 물가는 19.0%나 치솟고 석유류 상승률(3.1%)도 작년 1월 이후 최고 수준을 기록했다. 가계대출 증가세도 다시 강해지고 있다. 5월 가계대출은 주택 거래 증가와 함께 6조원이나 또 불었다. 지난해 10월(+6조7000억원) 이후 7개월 만에 가장 큰 증가 폭이다. 성장률도 비교적 견조하다. 한국은행은 1분기 실질 국내총생산(GDP) 성장률(직전분기대비·잠정치)이 1.3%로 집계됐다고 발표했다. 2021년 4분기(1.6%) 이후 2년 3개월 만에  가장 높은 분기 성장률이다. 분기 성장률은 지난해 1분기(0.4%) 반등한 뒤 2분기(0.6%), 3분기(0.8%), 4분기(0.5%)와 올해 1분기까지 다섯 분기 연속 플러 스(+) 성장 기조를 유지했다. 물가와 가계부채 증가세가 완전하게 잡히지 않은 가운데 성장률이 견조한 것이다. 여기에 환율까지 1300원대 후반에서 내려오지 않고 있다. 한은이 통화정책을 전환하기 위한 필요조건이 대부분 충족되지 않은 셈이다. 미국보다 2.0%포인트나 낮은 기준금리(3.50%)를 유지하고 있는 한은라가 기준금리를 인하할 수 있다고 보기 어렵다”며 “환율 상황을 보면 알 수 있다”고 말했다. 이어 “우리나라 기준금리 인하는 내년까지 미뤄질 수 있고, 사 람들이 생각하는 것과는 매우 다른 양상으로 전개될 수 있다”며 “고금리라고 하지만 여전히 대출은 늘고 있기 때문에 금리가 곧 다시 저금리로 갈 수 있단 생각은 옳지 않다”고 덧붙였다.

 

2.01. textwrap.shorten()

 : 첫번째 인자로 대상인 변수를, 두번째 width에는 자르고 싶은 글자수를 넣는다. width에 입력한 글자수가 초과되면 뒤에 글자는 [...] 로 생략되서 결과가 나온다. '[...]' 을 바꿔주고 싶다면, placeholder = "(원하는 문구)" 를 넣어도 된다.

shorten1 = textwrap.shorten(text, width=60)
print(shorten1)

shorten2 = textwrap.shorten(text, width=60, placeholder=' [중략] ')
print(shorten2)

# 결과 #
유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 4분기 이후에나 통화정책 전환이 가능할 [...]
유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 4분기 이후에나 통화정책 전환이 가능할 [중략]

 

2.02. textwrap.wrap()

 :  첫번째 인자로 대상인 변수를, 두번째 width에는 list로 쪼개서 넣을 글자수를 넣는다. 이렇게 하면 지정한 글자수 만큼 잘려서 list 형식으로 저장되는 것을 확인 할 수 있다.

wrap = textwrap.wrap(text, width = 50)
print(wrap)

# 결과 #
['유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 4분기 이후에나 통화정책 전환이', '가능할 것이란 전망이 지배적이다. 비교적 양호한 경제 성장률과 꺾이지 않는 부채 증가세가', '영향 등이 미친 것으로 분석된다. 성장률 전망이 0%대에 머무르고 있는 유럽과는 상황이', '다르다. 한은이 물가·환 율·부채 불안을 감수하고서 과감하게 선제적으로 금리를 인하할 유인이', '적은 셈이다. 연준은 11∼12일(현지시간) 열린 연방공개시장위원회(FOMC) 정례회의 에서', '기준금리 목표 범위를 5.25∼5.50%로 동결했다. 이날 공개된 새 점도표(FOMC', '위원들의 향후 금리 수준 전망을 표시한 도표)에서는 올해 말 금리 전망치 중간값은', '5.10%이었다. 지난 3월 회의 당시의 4.60%보다 0.50%포인트 높은 수준이다.', '현재 금리 수준(5.25∼5.50%)을 고려할 때 연내 인하 예상 횟수가 세', '차례(0.25%포인트씩)에서 한 차례 가량으로 줄어든 셈이다. 위원 19명 가운데 4명은', '아예 올해 인하가 없을 것으로 봤다. 이에 시장이 기대하 는 연준 피벗 시점도 당초 9월에서', '연말에 가까운 11월 또는 12월로 늦춰지고 있다. 연준은 앞서 지난해 6월 약 15개월', '만에 금리 인상을 멈췄다가 7월 다시 베이비스텝(0.25%포인트)을 밟았지만, 이후', '9·11·12월과 올해 1·3·5월에 이어 이번까지 일곱 차례 연속 금리를 묶었다. 반면', '유럽은 선제적으로 금리를 인하했다. 유럽중앙은행(ECB)은 6일(현지시간) 기준금리를', '0.25%포인트 하향조정했다. ECB는 이날 독일 프랑크푸르트에서 통화정책이사회를 열어', '기준금리를 연 4.25%, 수신금리와 한계대출금리는 각각 연 3.75%, 연 4.50%로', "내렸다고 밝혔다. 기준금리를 0.50%포인트 올리는 '빅스텝'을 밟으며 금리인상을 시작한", '2022년 7월 이후 1년 11개월 만의 방향 전환이다. 유럽은 코로나19 팬데믹 이후', '양적완화 등 영향으로 물가가 급등하자 2022년 7월부터 지난해 9월까지 10차례 연속', '금리를 올렸다. 작년 9월 이후 기준금리 4.50%는 1999년 유로존 출범 이래', '최고치였다. 이에 2022년 연말 10%를 넘긴 유로존의 전년 대비 소비자물가 상승률은', '지난해 10월부터 2%대에 머물면서 목표치인 2.0%에 근접했다. 물가가 일부 안정세에', '접어든 것이다. 여 기에 유럽 내 각국 경기침체 우려도 가시지 않자 선제적인 인하를', '감행했다. 유럽 성장률 전망치는 일부 상향됐지만, 여전히 0%대다. 최근 올해 유로존', '경제성장률 전망치는 기존 0.6%에서 0.9%로, 내년 전망은 1.5%에서 1.4%로', '수정됐다. 반면 우리나라는 아직 물가 안정세가 완연하다고 보기 힘들다. 소비자물가지수', '상승률(전년동월대비)은 2∼3월 3%대에서 4∼5월 2%대 후반(4월 2.9%·5월', '2.7%)으로 내려왔지만, 5월 농산물 물가는 19.0%나 치솟고 석유류', '상승률(3.1%)도 작년 1월 이후 최고 수준을 기록했다. 가계대출 증가세도 다시 강해지고', '있다. 5월 가계대출은 주택 거래 증가와 함께 6조원이나 또 불었다. 지난해', '10월(+6조7000억원) 이후 7개월 만에 가장 큰 증가 폭이다. 성장률도 비교적', '견조하다. 한국은행은 1분기 실질 국내총생산(GDP) 성장 률(직전분기대비·잠정치)이', '1.3%로 집계됐다고 발표했다. 2021년 4분기(1.6%) 이후 2년 3개월 만에 가장', '높은 분기 성장률이다. 분기 성장률은 지난해 1분기(0.4%) 반등한 뒤', '2분기(0.6%), 3분기(0.8%), 4분기(0.5%)와 올해 1분기까지 다섯 분기 연속', '플러스(+) 성장 기조를 유지했다. 물가와 가계부채 증가세가 완전하게 잡히지 않은 가운데', '성장률이 견조한 것이다. 여기에 환율까지 1300원대 후반에서 내려오지 않고 있다. 한은이', '통화정책을 전환하 기 위한 필요조건이 대부분 충족되지 않은 셈이다. 미국보다 2.0%포인트나', '낮은 기준금리(3.50%)를 유지하고 있는 한은이 물가·부채·환율 불안까지 감수하고', '선제적으로 금리 인하에 과감하게 나설 유인이 크지 않다. 이창용 한은 총재은 지난달 23일', '금융통화위원회 직후 열린 기자간담회에서 “여전히 미국의 경제정책으로 인한 환율의 변화나', '자본의 이동 가능성이 크다”고 강조했다. 학계의 시각도 비슷하다. 김상봉 한성대 경제학과', '교수는 “미국도 연말 에 한번 정도 내릴 수 있을지 없을지 모르는 상황에서 우리나라가', '기준금리를 인하할 수 있다고 보기 어렵다”며 “환율 상황을 보면 알 수 있다”고 말했다.', '이어 “우리나라 기준금리 인하는 내년까지 미뤄질 수 있고, 사람들이 생각하는 것과는 매우', '다른 양상으로 전개될 수 있다”며 “고금리라고 하지만 여 전히 대출은 늘고 있기 때문에', '금리가 곧 다시 저금리로 갈 수 있단 생각은 옳지 않다”고 덧붙였다.']

 

 : 위에 쪼개진 list 들을 줄 바꿈 구분자로 join 하면 아래와 같이 text 줄바꿈이 가능하다.

print('\n'.join(wrap))

# 결과 #
유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 4분기 이후에나 통화정책 전환이
가능할 것이란 전망이 지배적이다. 비교적 양호한 경제 성장률과 꺾이지 않는 부채 증가세가
영향 등이 미친 것으로 분석된다. 성장률 전망이 0%대에 머무르고 있는 유럽과는 상황이
다르다. 한은이 물가·환율·부채 불안을 감수하고서 과감하게 선제적으로 금리를 인하할 유인이
적은 셈이다. 연준은 11∼12일(현지시간) 열린 연방공개시장위원회(FOMC) 정례회의에서
기준금리 목표 범위를 5.25∼5.50%로 동결했다. 이날 공개된 새 점도표(FOMC
위원들의 향후 금리 수준 전망을 표시한 도표)에서는 올해 말 금리 전망치 중간값은
5.10%이었다. 지난 3월 회의 당시의 4.60%보다 0.50%포인트 높은 수준이다.
현재 금리 수준(5.25∼5.50%)을 고려할 때 연내 인하 예상 횟수가 세
차례(0.25%포인트씩)에서 한 차례 가량으로 줄어든 셈이다. 위원 19명 가운데 4명은
아예 올해 인하가 없을 것으로 봤다. 이에 시장이 기대하는 연준 피벗 시점도 당초 9월에서
연말에 가까운 11월 또는 12월로 늦춰지고 있다. 연준은 앞서 지난해 6월 약 15개월
만에 금리 인상을 멈췄다가 7월 다시 베이비스텝(0.25%포인트)을 밟았지만, 이후
9·11·12월과 올해 1·3·5월에 이어 이번까지 일곱 차례 연속 금리를 묶었다. 반면
유럽은 선제적으로 금리를 인하했다. 유럽중앙은행(ECB)은 6일(현지시간) 기준금리를
0.25%포인트 하향조정했다. ECB는 이날 독일 프랑크푸르트에서 통화정책이사회를 열어
기준금리를 연 4.25%, 수신금리와 한계대출금리는 각각 연 3.75%, 연 4.50%로
내렸다고 밝혔다. 기준금리를 0.50%포인트 올리는 '빅스텝'을 밟으며 금리인상을 시작한
2022년 7월 이후 1년 11개월 만의 방향 전환이다. 유럽은 코로나19 팬데믹 이후
양적완화 등 영향으로 물가가 급등하자 2022년 7월부터 지난해 9월까지 10차례 연속
금리를 올렸다. 작년 9월 이후 기준금리 4.50%는 1999년 유로존 출범 이래
최고치였다. 이에 2022년 연말 10%를 넘긴 유로존의 전년 대비 소비자물가 상승률은
지난해 10월부터 2%대에 머물면서 목표치인 2.0%에 근접했다. 물가가 일부 안정세에
접어든 것이다. 여기에 유럽 내 각국 경기침체 우려도 가시지 않자 선제적인 인하를
감행했다. 유럽 성장률 전망치는 일부 상향됐지만, 여전히 0%대다. 최근 올해 유로존
경제성장률 전망치는 기존 0.6%에서 0.9%로, 내년 전망은 1.5%에서 1.4%로
수정됐다. 반면 우리나라는 아직 물가 안정세가 완연하다고 보기 힘들다. 소비자물가지수
상승률(전년동월대비)은 2∼3월 3%대에서 4∼5월 2%대 후반(4월 2.9%·5월
2.7%)으로 내려왔지만, 5월 농산물 물가는 19.0%나 치솟고 석유류
상승률(3.1%)도 작년 1월 이후 최고 수준을 기록했다. 가계대출 증가세도 다시 강해지고
있다. 5월 가계대출은 주택 거래 증가와 함께 6조원이나 또 불었다. 지난해
10월(+6조7000억원) 이후 7개월 만에 가장 큰 증가 폭이다. 성장률도 비교적
견조하다. 한국은행은 1분기 실질 국내총생산(GDP) 성장률(직전분기대비·잠정치)이
1.3%로 집계됐다고 발표했다. 2021년 4분기(1.6%) 이후 2년 3개월 만에 가장
높은 분기 성장률이다. 분기 성장률은 지난해 1분기(0.4%) 반등한 뒤
2분기(0.6%), 3분기(0.8%), 4분기(0.5%)와 올해 1분기까지 다섯 분기 연속
플러스(+) 성장 기조를 유지했다. 물가와 가계부채 증가세가 완전하게 잡히지 않은 가운데
성장률이 견조한 것이다. 여기에 환율까지 1300원대 후반에서 내려오지 않고 있다. 한은이
통화정책을 전환하기 위한 필요조건이 대부분 충족되지 않은 셈이다. 미국보다 2.0%포인트나
낮은 기준금리(3.50%)를 유지하고 있는 한은이 물가·부채·환율 불안까지 감수하고
선제적으로 금리 인하에 과감하게 나설 유인이 크지 않다. 이창용 한은 총재은 지난달 23일
금융통화위원회 직후 열린 기자간담회에서 “여전히 미국의 경제정책으로 인한 환율의 변화나
자본의 이동 가능성이 크다”고 강조했다. 학계의 시각도 비슷하다. 김상봉 한성대 경제학과
교수는 “미국도 연말에 한번 정도 내릴 수 있을지 없을지 모르는 상황에서 우리나라가
기준금리를 인하할 수 있다고 보기 어렵다”며 “환율 상황을 보면 알 수 있다”고 말했다.
이어 “우리나라 기준금리 인하는 내년까지 미뤄질 수 있고, 사람들이 생각하는 것과는 매우
다른 양상으로 전개될 수 있다”며 “고금리라고 하지만 여전히 대출은 늘고 있기 때문에
금리가 곧 다시 저금리로 갈 수 있단 생각은 옳지 않다”고 덧붙였다.

 

2.03. textwrap.fill()

 : 위에 wrap 에서 줄바꿈한 것을 한번에 적용할 수 있다. 인자 설명은 위와 동일하므로 생략 하겠다.

fill = textwrap.fill(text, width=50)
print(fill)

# 결과 #
유럽과 캐나다가 선제적으로 기준금리를 내렸지만, 우리나라는 4분기 이후에나 통화정책 전환이
가능할 것이란 전망이 지배적이다. 비교적 양호한 경제 성장률과 꺾이지 않는 부채 증가세가
영향 등이 미친 것으로 분석된다. 성장률 전망이 0%대에 머무르고 있는 유럽과는 상황이
... 위와 동일하여 이하 생략 ...

 

+ Recent posts