사내 연구회 기계 학습 입문(5. 계속 Python으로 프로그램을 써 보자)

오늘도 파이썬을 사용하여 프로그램을 작성하고 싶습니다.

소재



Python에서 Excel 파일을 조작하는 프로그램입니다.
Excel 파일을 읽고 시트의 셀 값을 표준 출력해 봅니다.

다음과 같은 Excel 파일을 "sample.xlsx"라는 파일 이름으로 준비하십시오.
파일은, 「C:\ml-intro」아래에 두는 전제로 진행합니다.


※ openpyxl이라는 Python에서 Excel 파일을 조작하기위한 라이브러리를 사용합니다.

코드를 작성해 보자.



Python 가상 환경을 활성화하고 "jupyter notebook"을 시작합니다.以下のコマンドを実行
$ cd C:\ml-intro
$ env\Scripts\activate.bat
$ jupyter notebook

노트북을 열고 라이브러리를 설치합니다.!pip install openpyxl
먼저 파일을 읽고 A1 셀의 값을 표준 출력해 봅시다.
import openpyxl as px

wb = px.load_workbook('./sample.xlsx') # ワークブック読み込み
ws = wb.active                         # ワークシート取得
a1 = ws['A1'].value                    # A1セルの値を取得
print(a1)

실행 결과는 이런 느낌입니다. (A1 셀의 값이 제대로 출력되었습니다.)


워크시트를 지정하거나 R1C1 형식으로 셀 값을 검색할 수도 있습니다.
import openpyxl as px

wb = px.load_workbook('./sample.xlsx') # ワークブック読み込み
# ws = wb.active
ws = wb['Sheet1']                      # シート名を指定
# a1 = ws['A1'].value
r1c1 = ws.cell(row=2, column=1).value  # 2行目、1列目のセルの値を取得
print(r1c1)

다음은, 시트상의 「셀의 값」을 모두 표준 출력해 보자.
for row in ws.rows:
    print('----------------------------')
    for c in row:
        print(c.value)

ws.rows는 시트에서 "어떤 값이나 서식이 지정된 셀 범위"에있는 "row 개체"의 모음입니다.
샘플 Excel 파일의 경우, 4 행분의 row 객체가 모인 것입니다.
그 row 객체의 모음으로부터 1개씩 for 구문으로 1행분의 row 객체를 꺼내고 있습니다.
또한 row는 셀 모음이므로 row에서 하나씩 셀 객체를 검색하고 그 값을 표준 출력합니다.

실행 결과는 이런 느낌입니다.


프로그램을 개선합시다.



출력 결과가 이마이치이므로, 이런 느낌(↓)의 표준 출력으로 개수해 봅시다.

import openpyxl as px

wb = px.load_workbook('./sample.xlsx')
ws = wb['Sheet1']
for row in ws.rows:
    row_str = ''
    for cell in row:
        row_str =  row_str + str(cell.value) + '|'
    row_str = row_str[:-1]   # 一番後ろに付いてしまう(|)は削除する
    print(row_str)

실행 결과는 이런 느낌입니다.


게다가 join 메소드를 사용해 조금 코드를 깨끗이 시켜 보자.
join 메소드는, 「내장형의 1개인 str 의 메소드」라고 하는 취급답습니다.

[참고정보]
· htps : // py 쵸. ms/스 b/미 sc/욘/#욘-% 3% 81% 굳% 8% 9% 95% 5% 88% 4
· htps //w w.ぃふぇぃthpy 응. 이 m/2017/07/why-py 텐-조-이 s-st 린 굿-d. HTML
import openpyxl as px

wb = px.load_workbook('./sample.xlsx')
ws = wb['Sheet1']
for row in ws.rows:
    current_row = []   # 空のリストを準備
    for cell in row:
        current_row.append(str(cell.value)) # リストにセルの値を追加する
    print('|'.join(current_row))            # joinメソッドの引数にリストを渡すと指定文字で連結してくれる

실행 결과는 이런 느낌입니다.


함수를 정의해 봅시다.



join 메소드를 사용하지 않고, 「myjoin」이라고 하는 함수를 자작해 보자.
import openpyxl as px

'''
  myjoin関数の定義
    引数:rowオブジェクト
    戻り値:rowに含まれるセルの値をパイプ文字(|)で結合した文字列
'''
def myjoin(row):
    row_str = ''
    for cell in row:
        row_str =  row_str + str(cell.value) + '|'
    return row_str[:-1]

wb = px.load_workbook('./sample.xlsx')
ws = wb['Sheet1']
for row in ws.rows:
    print(myjoin(row))  # myjoin関数を使用

실행 결과는 이런 느낌입니다.


요약



오늘은, 「반복」이나 「함수의 정의」를 포인트에 프로그램을 써 보았습니다.
다음에는 마침내 기계 학습 같은 프로그램을 작성하고 싶습니다.

다음 번은, 「6. 필기의 숫자를 판정해 보자」입니다.
사내 연구회 기계 학습 입문(6. 필기의 숫자를 판정해 보자)

좋은 웹페이지 즐겨찾기