반응형

전체 글 88

[Quanteda] keyword analysis visualization

요즘 많이 쓰이고 있는 quanteda library를 통해서 Natural Language Processing을 해보려고 합니다. 이번에 할 작업은, 각 사고 원인별로 따라 그 원인을 설명하는 특정 단어들이, "다른 원인들에 비해", 더 많이 나오는가 적게 나오는가를 그래픽화해보려고 합니다. 자세한 설명은 생략하고 핵심 명령어로 바로 들어가죠. 우선 원 자료는 accident_data_copy.csv라는 파일이고 여기서 NARRATIVE 칼럼을 핵심 단어 분석을 하려고 합니다. 우선 library를 불러오구요. require(quanteda) require(readtext) require(quanteda.corpora) require(ggplot2) 필요없는 리스트들 먼저 지워버리구요. rm(list=..

[openpyxl] 새로운 행, 열을 더하고 삭제하는 법 #1:append

우선 파일을 하나 만들구요. filename = "Append.xlsx" wb = Workbook() ws1 = wb["Sheet"] 열을 더하려면 그냥 ws1.append( [..., ..., ...,] ) 형태로 만드시면 됩니다. 여기에 열 제목을 붙여볼까요? ws1.append( ["Sales", 2018, 2019] ) 그 다음에 여기에 맞는 내용을 추가한다고 하면 우선 리스트를 만들고 sales_data = [ ["North", 670_000, 230_000], ["South", 340_000, 550_000], ["West", 111_000, 95_000], ["East", 456_000, 123_000] ] 룹을 걸어서 더해주면 됩니다. for row in sales_data: ws1.app..

[openpyxl]  excel 파일 저장하기 전에 파이썬 콘솔에서 결과 미리 프린트해서 보는 법

내용이 방대하면 추천하는 방법은 아닙니디만, 몇 개의 셀 정도만 있고 openpyxl로 내용이 변경되거나 추가된 내용을 아나콘다나 주피터 등에서 바로 확인하려면 함수를 만들어서 하는 게 편합니다. 저도 외부에서 가져온 방법이긴 합니다만 다음과 같이 함수를 정의하고 출력해주면 좋습니다. def print_rows(ws): row_string = "" for row in ws.iter_rows(min_row=1, max_col=ws.max_column, max_row=ws.max_row): for cell in row: row_string += "{:

[openpyxl] 각 엑셀 행과 열에 새로운 값을 입력할 경우

아주 단순한 작업으로, 1부터 100까지의 숫자를 각 행과 열 순서대로 한다고 하면 다음과 같이 하면 됩니다. 우선 새로운 엑셀 파일을 만들고 여기에 ws.iter_rows를 통해 순차적으로 wb=openpyxl.Workbook() ws=wb["Sheet"] counter = 1 for row in ws.iter_rows(min_row=1, max_col=10, max_row=10): for cell in row: cell.value = counter counter += 1 그러면 아래와 같이 나옵니다. 칼럼 순서대로 하려고 하면 ws.iter_rows를 대신 쓰면 되겠지요. 여기서는 새로운 sheet(ws2)를 만들어서 더해봅니다. ws2=wb.create_sheet("New") counter = 1 ..

[openpyxl] 자신이 가진 엑셀 파일의 실질적인 행, 열 수를 알고 싶다면?

일단 load_workbook()으로 파일을 연 다음에, ws.max_row, ws.max_column 갖고 해주면 됩니다. wb=openpyxl.load_workbook("1서울/개표상황(투표구별)_강남구갑.xlsx") ws=wb.worksheets[0] print(f"max_row is in row {ws.max_row} and max_column is in column {ws.max_column}") max_row is in row 68 and max_column is in column 57 최대 행은 68, 최대 열은 57이라고 나오네요.

[openpyxl] loop 만들기

엑셀 각 셀 별로 loop를 만들어보도록 하겠습니다. 우선 각 셀의 coordinate를 한 번 만들어볼까요? 가장 기본적인 루프 형식은 숫자를 직접 지정해주는 겁니다. wb=Workbook() ws=wb["Sheet"] for row in range (1, 4): for col in range (1, 4): cell=ws.cell(row=row, column=col) print(cell.coordinate, end="!") print() 이렇게 하면 아래와 같이 각 셀의 좌표들이 나오게 됩니다. A1!B1!C1! A2!B2!C2! A3!B3!C3! 여기서 매우 중요한 것은 마지막은 range에 포함되지 않는다는 것. 다시 말해 4열과 4행은 들어가지 않습니다! 만약에 행열을 바꿔주면 다음과 같이 나오겠..

[openpyxl] 한 셀 기준으로 다른 셀을 정의할 때: offset 기능

엑셀에서 한 셀을 정해놓고 그 셀 기준으로 칼럼을 하나 옮겨라, 열을 세 줄 옮겨라 등등을 요구할 때 offset 기능을 씁니다. 예를 들어 A1에는 Train이라는 문자를 놓고 그걸 기준으로 칼럼 하나 옮겨서 Train Set이라는 문자를 넣어라고 하면, wb=Workbook() ws=worksheets[0] ws["A1"].value="Train" ws.cell(1,1).offset(0,1).value="Train Set"

반응형