반응형
반응형

Pandas df.to_csv("file.csv" encode="utf-8") still gives trash characters for minus sign

 

Pandas df.to_csv("file.csv" encode="utf-8") still gives trash characters for minus sign

I've read something about a Python 2 limitation with respect to Pandas' to_csv( ... etc ...). Have I hit it? I'm on Python 2.7.3 This turns out trash characters for ≥ and - when they appear in st...

stackoverflow.com

https://stackoverflow.com/questions/25788037/pandas-df-to-csvfile-csv-encode-utf-8-still-gives-trash-characters-for-min
pandas dataframe을 csv 형태로,  to_csv 


utf-8 encoding으로 저장하면 
내용 중 한글이 깨지는 문제 발생
euc-kr 로 저장할 때는 문제 없음
df.to_csv('file.csv',encoding='euc-kr')


df.to_csv('file.csv',encoding='utf-8')
한글 깨짐


해결책: df.to_csv('file.csv',encoding='utf-8-sig')


windows 환경 (정확히는 win7)
Python 3.6.4 :: Anaconda custom (64-bit)
pandas==0.23.4

 

 

 

 

 

 

 

반응형
반응형

wordcloud 패키지 설치 명령어

conda install -c conda-forge wordcloud




만약 설치후에도  오류가 발생한다면

wordcloud 패키지를 지우고 선행 패키지인 pillow 패키지를 먼저 설치한 후 wordcloud 패키지를 다시 설치한다.

 

> stylecloud 도 설치 하자. 

pip install stylecloud

 

 

 

반응형
반응형

 

pip install pandas 

 

conda install -c anaconda pandas 

When working with tabular data, such as data stored in spreadsheets or databases, pandas is the right tool for you. pandas will help you to explore, clean, and process your data. In pandas, a data table is called a DataFrame.

반응형
반응형

NLTK 설치

저는 아나콘다 환경에서 파이썬을 사용하고 있으므로 이미 루트 가상환경에 NLTK가 설치가 되어있었습니다. KoNLPy와 다르게 별도의 설정등을 해줄 필요가 없습니다.아나콘다 내에서 가상환경을 따로 만들어 설치를 해줄시엔 해당 가상환경 activate 후에

> conda install nltk]
> conda update nltk

위 명령어를 입력하여 설치해주면 됩니다.

 

하지만 예제를 수행하면 여러 에러 메세지들을 볼 수 있습니다. 예를들어 nltk.download('words'), nltk.download('maxent_ne_chunker')를 하라는 등의 메세지가 뜨면 오류메세지에 뜬 명령어 그대로 입력해서 별도의 모듈들을 설치해주면 됩니다.

 

 

○ 예제 시행해보기

from nltk import word_tokenize, pos_tag, ne_chunk

sentence = 'Mike is working at IT Centre'

# 토큰화, 품사태깅 pos_tag 후 -> ne_chunk 개체명인식
sentence = pos_tag(word_tokenize(sentence))
print(sentence)

# 개체명 인식
sentence = ne_chunk(sentence)
print(sentence)

 

결과

# [('Mike', 'NNP'), ('is', 'VBZ'), ('working', 'VBG'), 
# ('at', 'IN'), ('IT', 'NNP'), ('Centre', 'NNP')]
# (S
#   (GPE Mike/NNP)
#   is/VBZ
#   working/VBG
#   at/IN
#   (ORGANIZATION IT/NNP Centre/NNP))

 

 

 

 

 

○ 몇 가지 기능 살펴보기

 

1. nltk.Text()

 

nltk.Text()는 자연어 데이터의 탐색을 편리하게 해주는 다양한 기능들을 제공합니다.

import nltk
from nltk.corpus import gutenberg
from nltk import regexp_tokenize

f = gutenberg.fileids()
doc_en = gutenberg.open('austen-emma.txt').read()

pattern = r'''(?x) ([A-Z]\.)+ | \w+(-\w+)* | \$?\d+(\.\d+)?%? | \.\.\. | [][.,;"'?():-_`]'''
tokens_en = regexp_tokenize(doc_en, pattern)

en = nltk.Text(toekns_en)

 

테스트를 하기 위해 NLTK에서 제공하는 제인오스틴의 소설 Emma데이터를 다운받습니다. 이후 문서를 토큰으로 나누는 작업을 해주었는데 한국어를 토크나이즈하거나 품사태깅, 개체명 태깅 등을 할 때는 KoNLPy를 이용하는 것이 훨씬 낫다고 봅니다.


예를 들어 NLTK에서 '나는 바보다'라는 문장에서 '바보다'라는 토큰의 개체명을 'Organization'으로 인식하는 등의 문제가 있습니다. 그래서 한국어 처리를 할 때에는 nltk를 데이터를 탐색하는 용도로 많이 사용하는 듯 합니다.

 

 

2. 그래프 그리기

 

en.plot(50) 

en문서의 50개의 토큰만 플롯으로 그려보았습니다.

 


en.dispersion_plot(['Emma','Frank','Jane'])

 


 

 

 

 

 

 

 

3. 문서 탐색

 

print(len(en.tokens)) # 토큰의 개수 확인
print(len(set(en.tokens))) # Unique 토큰의 개수 확인
en.vocab() # Frequency Distribution 확인
print(en.count('Emma')) # 'Emma'의 개수
en.concordance('Emma', lines=5) # 'Emma'가 들어있는 5개의 문장만 출력
en.similar('Emma')
en.similar('Frank') # 비슷한 단어 찾기
> 결과

> 191061
> 7927
> FreqDist({',': 12018, '.': 8853, 'to': 5127, 'the': 4844, 'and': 4653, 'of': 4278, '"': 4187, 'I': 3177, 'a': 3000, 'was': 2385, ...})
> 865
> Displaying 5 of 865 matches:
                                     Emma by Jane Austen 1816 ] VOLUME I CHAPT
                                     Emma Woodhouse , handsome , clever , and
both daughters , but particularly of Emma . Between them it was more the int
 friend very mutually attached , and Emma doing just what she liked ; highly e
r own . The real evils , indeed , of Emma situation were the power of havi
> she it he i harriet you her jane him that me and all they them there herself was hartfield be
mr mrs emma harriet you it her she he him hartfield them jane that isabella all herself look i me

 

그래프를 그리는 것 외에도 토큰의 개수나 frequency distribution등을 확인하여 데이터의 구조를 살펴보는데 좋은 기능들도 많이 제공하고 있습니다.

 

 


4. Chunking nltk.RegexParser()

 

Chunking 얕은 구문 분석, 음성 및 단구 (명사구와 같은)를 식별하는 것

tokens = "The little yellow dog barked at the Persian cat".split()
tags_en = nltk.pos_tag(tokens)

parser_en = nltk.RegexpParser("NP: {<DT>?<JJ>?<NN.*>*}")
chunks_en = parser_en.parse(tags_en)
chunks_en.draw()
결과

[('The', 'DT'),
 ('little', 'JJ'),
 ('yellow', 'NN'),
 ('dog', 'NN'),
 ('barked', 'VBD'),
 ('at', 'IN'),
 ('the', 'DT'),
 ('Persian', 'NNP'),
 ('cat', 'NN')]

 

 


5. 워드클라우드 그리기

 

import nltk
ko = nltk.Text(tokens_ko, name='대한민국 국회 의안 제 1809890호')

 한국어 예제를 하나 불러옵니다.

 

# 예제의 빈도분포(frequency distribution) 살펴보기

print(ko.vocab())
type(ko.vocab()) # 데이터타입, 속성목록 확인
dir(ko.vocab()) # 예제문서의 단어사전 살펴보기

data = ko.vocab().items()
print(data)
print(type(data)) # items()를 이용하면 빈도분포의 item 전체를 set형태로 확인 가능합니다.
> 결과

> FreqDist({'.': 61, '의': 46, '육아휴직': 38, '을': 34, '(': 27, ',': 26, '이': 26, ')': 26, '에': 24, '자': 24, ...})
> nltk.probability.FreqDist
> ['B',
 'N',
 ...
 'items',
 ...
 'pop',
 'popitem',
 'pprint',
 'r_Nr',
 'setdefault',
 'subtract',
 'tabulate',
 'unicode_repr',
 'update',
 'values']
 
 > dict_items([('명', 5), ('예상된', 3), ('하나', 1), ('11', 2), ('팀', 2), ...])
<class 'dict_items'>

데이터 탐색@@

 

import csv
with open('words.csv', 'w', encoding='utf-8') as f:
    f.write('word,freq\n')
    writer = csv.writer(f)
    writer.writerows(data)

탐색한 데이터 set을 words.csv라는 파일에 저장하여 워드클라우드를 그리는데 이용하도록 하겠습니다.

 

<!DOCTYPE html>
<html>
<head>
  <style>
    text:hover {
        stroke: black;
    }
  </style>
  <script src="http://d3js.org/d3.v3.min.js" charset="utf-8"></script>
  <script src="d3.layout.cloud.js"></script>
</head>
<body>
  <div id="cloud"></div>
  <script type="text/javascript">
    var weight = 3,   // change me
        width = 960,
        height = 500;

    var fill = d3.scale.category20();
    d3.csv("words.csv", function(d) {
        return {
          text: d.word,
          size: +d.freq*weight
        }
      },
      function(data) {
        d3.layout.cloud().size([width, height]).words(data)
          //.rotate(function() { return ~~(Math.random() * 2) * 90; })
          .rotate(0)
          .font("Impact")
          .fontSize(function(d) { return d.size; })
          .on("end", draw)
          .start();

        function draw(words) {
          d3.select("#cloud").append("svg")
              .attr("width", width)
              .attr("height", height)
            .append("g")
              .attr("transform", "translate(" + width/2 + "," + height/2 + ")")
            .selectAll("text")
              .data(words)
            .enter().append("text")
              .style("font-size", function(d) { return d.size + "px"; })
              .style("font-family", "Impact")
              .style("fill", function(d, i) { return fill(i); })
              .attr("text-anchor", "middle")
              .attr("transform", function(d) {
                return "translate(" + [d.x, d.y] + ")rotate(" + d.rotate + ")";
              })
            .text(function(d) { return d.text; });
        }
      });
  </script>
</body>
</html>

위 코드를 index.html로 저장하고 words.csv가 있는 폴더내에 저장합니다.

 

python -m http.server 8888 

그리고 프롬프트웨 위 명령어를 입력하여 실행시켜준 뒤, http://localhost:8888로 접속하면,

 

생성된 워드클라우드를 확인할 수 있습니다.



출처: https://ebbnflow.tistory.com/147 [Dev Log : 삶은 확률의 구름]

반응형
반응형

1. Anaconda 3버전과 Visual Studio Code (이하 vscode) 준비

(일반 Python을 사용하시는 분은 pip을 같이 설치해주세요)

 

2. vscode에 Python (Microsoft) Extension 설치

 

3. 가상환경에 autopep8 패키지 설치 (PEP8 기준 자동정렬 기능 추가)

(아나콘다 기준)  conda install --name 가상환경명 autopep8

(pip 기준)  pip install autopep8

 

위의 명령어로 직접 설치하지 않아도 vscode 내에서 자동정렬 키를 누르면 패키지를 설치하겠냐는 팝업이 뜹니다.

 

4. 가상환경에 pylint 패키지 설치 (구문오류 체크)

(아나콘다 기준)  conda install --name 가상환경명 pylint

(pip 기준)  pip install pylint

 

위의 명령어로 직접 설치하지 않아도 저장이나 build 시 패키지를 설치하겠냐는 팝업이 뜹니다.

 

 

5. 마우스 우클릭 혹은 Command Palette(F1키)에서 Run Python File in Terminal을 선택하면 Terminal에서 실행

 

입맛에 따라 단축키를 지정해주시면 빠르게 실행결과를 볼 수 있습니다.


[오류]conda: 'conda' 용어가 cmdlet,함수,스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식되지 않습니다.

 

VSCODE 에서 python 연동하기. 

 

Visual Studio Code의 기본 터미널이 Windows의 Power Shell로 설정되어 있기 때문.

 

    "terminal.integrated.defaultProfile.windows":"Command Prompt",
    "python.terminal.activateEnvInCurrentTerminal": true

settings.json에서 cmd.exe 추가하고, python.terminal.activateEnvInCurrentTerminal : true 로 변경하면  

해당 편집파일에서 "Run Python File" 실행시 cmd 실행되면서 python ENV 가 activate가 되면서 파일이 실행 된다. 

 

 

 

 

 

https://velog.io/@dbal9357/conda-conda-%EC%9A%A9%EC%96%B4%EA%B0%80-cmdlet%ED%95%A8%EC%88%98%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8-%ED%8C%8C%EC%9D%BC-%EB%98%90%EB%8A%94-%EC%8B%A4%ED%96%89%ED%95%A0-%EC%88%98-%EC%9E%88%EB%8A%94-%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8-%EC%9D%B4%EB%A6%84%EC%9C%BC%EB%A1%9C-%EC%9D%B8%EC%8B%9D%EB%90%98%EC%A7%80-%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4

 

[오류]conda: 'conda' 용어가 cmdlet,함수,스크립트 파일 또는 실행할 수 있는 프로그램 이름으로 인식

원인 Visual Studio Code의 기본 터미널이 Windows의 Power Shell로 설정되어 있기 때문.해결이 기본 터미널의 종류를 cmd 또는 Git Bash로 변경하면 오류없이 실행이 가능.방법setting.json파일이 열리면 ""안에 c

velog.io

 

반응형
반응형
MS 비주얼 스튜디오 코드(Visual Studio Code) 아나콘다와 함께 제공

http://m.seminartoday.net/news/articleView.html?idxno=11961

 파이썬 사용자에게 유용한 편집 및 디버깅 경험을 제공하며, 아나콘다 사용자를 위한 특별 기능도 제공

아나콘다 5.1 다운 페이지 캡처(사진:아나콘다 웹, 편집:본지)

엔터프라이즈 프로그래머에서부터 데이터 과학자에 이르기까지 파이썬(Python)은 소프트웨어 개발을 위한 가장 대중적인 동적 언어 중 하나이다.

가장 인기 있는 파이썬 데이터 플랫폼인 아나콘다(Anaconda)는 전 세계 600 만 사용자에게 Windows, Mac 또는 Linux에서 능률적인 파이썬 환경을 제공하고 있다. 마이크로소프트는 15일(현지시각)부터 Anaconda 배포판에 MS의 무료 및 크로스 플랫폼 코드 편집기인 비주얼 스튜디오 코드(Visual Studio Code)가 포함돼 제공된다고 밝혔다.

비주얼 스튜디오 코드에 대한 마이크로 소프트 파이썬 확장 페이지 캡처

이제 비주얼 스튜디오 코드는 아나콘다와 동시에 설치될 수 있으며, 파이썬 사용자에게 유용한 편집 및 디버깅 경험을 제공하며, 아나콘다 사용자를 위한 특별 기능도 제공한다. 이것은 VS 코드 용 공식 파이썬 확장판 출시와 애저 머신러닝 스튜디오(Azure Machine Learning Studio) 및 SQL Server에서의 파이썬에 대한 강력한 지원 및 Azure Notebooks에 이은 MS가 파이썬 커뮤니티에 지속적으로 투자한 또 다른 예로 파이썬 개발자가 어디서나 어떤 플랫폼에서든 빌드 할 수 있도록 지원하는 것이다.

한편 비주얼 스튜디오 코드 용 Microsoft Python Extension은 GitHub 에서 적극적으로 개발되었으며 현재 VS Code Marketplace에서 가장 많이 다운로드 된 확장 프로그램으로, 현재 6 백만 회 이상 다운로드 되고 4.7 / 5.0 등급으로 제공되고 있다. (Anaconda 5.1 다운받기)

...


반응형

+ Recent posts